commit 71ea421eac6702417a0cf03518ffd26b9b268aea Author: Халтобин Евгений Date: Wed Aug 21 12:23:42 2024 +0300 initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..de62d73 --- /dev/null +++ b/.gitignore @@ -0,0 +1,67 @@ +#ignore target dir +target*/ + +#gradle files +.gradle*/ + +*.orig +# +# Eclipse project files +# +#.classpath +#.project +#.settings*/ +.springBeans +.metadata/ +war*/ + +# +# IntelliJ IDEA project files +# +.idea*/ +.classes*/ +*.ipr +*.iml +*.iws +*.ids +atlassian-ide-plugin.xml + +#ignore NetBeans project files +nb-configuration.xml +profiles.xml +catalog.xml +nbactions.xml + +#ignore some temporary files +*.vpp~* + +# os meta files +Thumbs.db +.DS_Store + + +pom.xml.versionsBackup +*.jasper + +#studio +.studio*/ + +resources/src/main/generated-resources*/ +resources/src/main/resources/database/database_structure.xml + +frontend/build*/ +frontend/tmp*/ +frontend/.angular*/ +frontend/build_dev*/ +frontend/dist*/ +frontend/node_modules*/ +frontend/src/ts/**/*.js +frontend/src/ts/**/*.js.map +frontend/src/ts/**/*.ngsummary.json +frontend/src/ts/aot*/ +frontend/src/ts/generated*/ +npm-debug.log + +#Sublime project files +*.sublime-project +*.sublime-workspace diff --git a/.studioignore b/.studioignore new file mode 100644 index 0000000..3fc9113 --- /dev/null +++ b/.studioignore @@ -0,0 +1,29 @@ +#Files for Webbpm-Studio to ignore +frontend/build/ +frontend/build_dev/ +frontend/dist/ +frontend/node_modules/ +frontend/src/ts/page.routing.ts +frontend/src/ts/generated-sources/ +frontend/src/ts/generated/ +frontend/target/ + +backend/target/ +backend/src/main/generated-sources/ + +distribution/target/ + +resources/target/ + +test/ +extensions/ + +config/ +target/ +themes/ + +.studio/ +.git/ +.idea/ +.studioignore +**.js \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..b13f67f --- /dev/null +++ b/Dockerfile @@ -0,0 +1,22 @@ +FROM maven:3-openjdk-17-slim AS build +RUN apt update \ + && apt upgrade -y \ + && curl -fsSL https://deb.nodesource.com/setup_14.x | bash - \ + && apt install -y git nodejs \ + && rm -rf /var/lib/apt/lists/* + +WORKDIR /app +COPY . . +RUN mvn clean && mvn package -T4C + +FROM tomee:8.0.15-jre17-webprofile +ARG ADMIN_PASSWORD=Secr3t + +COPY config/tomcat/tomee /usr/local/tomee + +RUN rm -rf /usr/local/tomee/webapps/ROOT \ + && cat /usr/local/tomee/conf/webbpm.properties >> /usr/local/tomee/conf/catalina.properties \ + && sed -i -r "s//$ADMIN_PASSWORD/g" /usr/local/tomee/conf/tomcat-users.xml + +COPY --from=build /app/frontend/target/frontend*.war /usr/local/tomee/webapps/ROOT.war +COPY --from=build /app/backend/target/dashboard*.war /usr/local/tomee/webapps/dashboard.war diff --git a/README.md b/README.md new file mode 100644 index 0000000..acbeeb3 --- /dev/null +++ b/README.md @@ -0,0 +1,224 @@ +# Создание БД проекта + +Создание роли для основной схемы БД проекта + +``` +CREATE ROLE "" WITH + LOGIN + NOSUPERUSER + INHERIT + NOCREATEDB + NOCREATEROLE + NOREPLICATION + PASSWORD ''; +``` + +Создание роли для схемы безопасности БД проекта + +``` +CREATE ROLE "" WITH + LOGIN + NOSUPERUSER + INHERIT + NOCREATEDB + NOCREATEROLE + NOREPLICATION + PASSWORD ''; +``` + +Создание БД проекта + +``` +CREATE DATABASE "" + WITH + OWNER = ""; +``` + +ВНИМАНИЕ: в общем случае, отдельную БД для безопасности создавать не нужно. В конфигурации источника данных security-ds в файле standalone.xml в качестве имени базы данных используйте базу данных приложения. + +Предоставление необходимых прав для роли <your-project-security-role> + +``` +GRANT CREATE ON DATABASE "" TO ""; +``` + +Создание таблицы shedlock для автосинхронизации + +``` +CREATE TABLE shedlock +( + name varchar not null + constraint tasks_lock_pkey + primary key, + lock_until timestamp, + locked_at timestamp, + locked_by varchar +); + +comment on table shedlock is 'Таблица для синхронизации выполнения запланированных задач между нодами.'; + +ALTER TABLE shedlock + OWNER to "owner"; +``` + +## Дополнительные ограничения базы секьюрити + +Логин пользователя <user_account.username> и имена ролей <user_role.name> не должны совпадать, так как в ходе работы jbpm-а они сохраняются в одну и ту же таблицу. +Пример ошибки при совпадении: username = 'qa_test' и role_name = 'qa_test' (роль привязана к этому пользователю). Ошибка возникает при запуске любого процесса под этим пользователем. + +``` +ERROR [errorhandling.ExceptionHandlerController] (default task-5) [19usm9-bgyi63] +Organizational entity already exists with [GroupImpl:'qa_test'] id, +please check that there is no group and user with same id: +java.lang.RuntimeException: Organizational entity already exists with [GroupImpl:'qa_test'] id, +please check that there is no group and user with same id +``` + +## Создание нового администратора + +Создайте группу <your-admin-group> и предоставьте ей права в модуль администрирования. Для этого выполните в БД проекта + +``` +INSERT INTO security.user_group( + user_group_id, name, access_level_id) + (SELECT uuid_in(md5(random()::text || clock_timestamp()::text)::cstring), + '', access_level_id FROM security.access_level where level=999); +``` + +``` +INSERT INTO security.link_user_group_user_role( + link_user_group_user_role_id, user_group_id, user_role_id) + (SELECT uuid_in(md5(random()::text || clock_timestamp()::text)::cstring), + (SELECT user_group_id FROM security.user_group WHERE name = ''), + (SELECT user_role_id FROM security.user_role WHERE name = 'Security - User Admin')); +``` + +``` +INSERT INTO security.link_user_group_user_role( + link_user_group_user_role_id, user_group_id, user_role_id) + (SELECT uuid_in(md5(random()::text || clock_timestamp()::text)::cstring), + (SELECT user_group_id FROM security.user_group WHERE name = ''), + (SELECT user_role_id FROM security.user_role WHERE name = 'Security - Group Admin')); +``` + +``` +INSERT INTO security.link_user_group_user_role( + link_user_group_user_role_id, user_group_id, user_role_id) + (SELECT uuid_in(md5(random()::text || clock_timestamp()::text)::cstring), + (SELECT user_group_id FROM security.user_group WHERE name = ''), + (SELECT user_role_id FROM security.user_role WHERE name = 'Security - Role Admin')); +``` + +# Настройка браузера для входа в систему с помощью Kerberos + +1. Запустите браузер firefox. +2. В адресной строке введите about:config, нажать кнопку "я принимаю на себя риск" +3. С помощью поиска найдите параметр network.negotiate-auth.trusted-uris и в качестве значения ввести домен(например для домена example.com надо ввести .example.com) +4. Откройте в браузере приложение. Пример http://app.example.com/ . Приложение должно открыться без запроса логина/пароля + +# Восстановление структуры БД + +На основе БД проекта с помощью jOOQ генерируются Java классы для каждого объекта БД. Это происходит по нажатию кнопки Обновить на панели БД в студии. При необходимости можно сформировать DDL на основе данных классов. Пример класса для генерации DDL + +``` +package ru.cg.webbpm.test_project.db_beans; + +import org.jooq.*; +import org.jooq.impl.*; + +public class Main { + public static void main (String args []) { + DefaultConfiguration defaultConfiguration = new DefaultConfiguration(); + defaultConfiguration.setSQLDialect(SQLDialect.POSTGRES); + Queries ddl = DSL.using(defaultConfiguration).ddl(DefaultCatalog.DEFAULT_CATALOG); + + for (Query query : ddl.queries()) { + System.out.println(query); + } + } +} +``` + +** ВНИМАНИЕ: ** + +- этим способом нельзя восстановить функции/процедуры БД + +см. также [https://www.jooq.org/doc/latest/manual/sql-building/ddl-statements/generating-ddl/](https://www.jooq.org/doc/latest/manual/sql-building/ddl-statements/generating-ddl/) + +# Сборка проекта +## В dev режиме +```bash +mvn clean && mvn package +``` +## В prod режиме +```bash +mvn clean && mvn package -Pprod -DngcCoreCount=4 -DpagePackSizeMb=24 +``` +ngcCoreCount - количество ядер, выделяемых процессу компиляции ngc. По умолчанию - количество ядер - 1 +pagePackSizeMb - размер пачки в МБ. По умолчанию - количество ядер - 24 МБ. + +## С обновлением database beans +```bash +mvn clean && mvn package -Dwebbpm.generate-db-beans +``` + +# Версия проекта + +Если версия проекта содержит SNAPSHOT (например 1.0-SNAPSHOT), то при установке такой версии на сервере приложений будет запущена процедура остановки запущенных процессов данной версии. Этот режим удобен при отладке процесса на рабочем месте аналитика. +На боевом и тестовом стенде необходимо передавать дистрибутив проекта, с версией, которая не содержит SNAPSHOT. Например - 1.0 + +# Обновление платформы + +## Обновления версии платформы + +### С помощью студии + +1. Откройте проект в студии. Версия платформы обновится автоматически + +### Вручную + +1. Обновите значение webbpm-platform.version в pom.xml. Пример + + ```xml + 3.164.0-SNAPSHOT + ``` + +## Обновление базового пакета компонент + +### С помощью студии + +1. Откройте проект в студии. + +2. Откройте меню "Проект - Пакеты" + +3. Нажмите обновить. + + +### Вручную + +#### Из удаленного репозитория + +```bash +mvn webbpm:update-package -DpackageVersion="3.158.8" +``` + +#### Из файла + +```bash +mvn webbpm:update-package -DexecuteNpmInstall=false -Dpath=resources-.jar +``` + +#### Руками + +1. Измените версию платформы и backend модуля в файле [pom.xml](pom.xml) вашего проекта на нужную версию +2. Скопируйте ресурсы +``` +из директории: webbpm-platform\components\resources\target\classes\ +в директорию: {your-project}\packages\ru.cg.webbpm.packages.base.resources\ +``` +3. Скопируйте фронт +``` +из директории: webbpm-platform\components\frontend\dist +в директорию: {your-project}\frontend\node_modules\@webbpm\base-package\ +``` +4. Запретите выполнение npm install при запуске студии. Для этого добавьте параметр `-DexecuteNpmInstall=false` в настройках Run/Debug Configurations студии diff --git a/backend/pom.xml b/backend/pom.xml new file mode 100644 index 0000000..19aa758 --- /dev/null +++ b/backend/pom.xml @@ -0,0 +1,288 @@ + + + 4.0.0 + + ru.micord.ervu + dashboard + 1.0.0-SNAPSHOT + + ru.micord.ervu.dashboard + backend + war + + + org.springframework.security + spring-security-jwt + + + io.jsonwebtoken + jjwt-api + + + io.jsonwebtoken + jjwt-impl + runtime + + + ru.micord.ervu.dashboard + resources + runtime + + + ru.cg.webbpm.modules.reporting.reporting-jasper + reporting-jasper-fonts + runtime + + + org.ocpsoft.prettytime + prettytime + + + org.jooq + jooq + + + org.apache.santuario + xmlsec + + + javax.servlet + javax.servlet-api + + + org.slf4j + slf4j-api + provided + + + org.springframework + spring-core + + + org.springframework + spring-context + + + org.springframework + spring-beans + + + org.springframework + spring-aop + + + org.springframework + spring-jdbc + + + org.springframework + spring-tx + + + org.springframework + spring-aspects + + + org.springframework + spring-web + + + org.springframework + spring-webmvc + + + org.springframework.security + spring-security-web + + + org.springframework.security + spring-security-config + + + ru.cg.webbpm.modules + inject + + + ru.cg.webbpm.modules + webkit-rpc + + + ru.cg.webbpm.modules + webkit-beans + + + ru.cg.webbpm.modules.core + core-runtime-api + + + ru.cg.webbpm.modules.resources + resources-api + + + ru.cg.webbpm.modules.core + error-handling-api + + + ru.cg.webbpm.modules.database + database-api + + + ru.cg.webbpm.modules.database + database-impl + + + ru.cg.webbpm.modules.jndi + jndi-beans + + + ru.cg.webbpm.modules.jndi + jndi-inject + + + com.sun.mail + javax.mail + + + ru.cg.webbpm.modules.database + database-test + test + + + ru.cg.webbpm.modules + standard-annotations + + + ru.cg.webbpm.modules.core + metrics + + + ru.cg.webbpm.modules.reporting + reporting-api + + + ru.cg.webbpm.modules.reporting + reporting-runtime-api + + + ru.cg.webbpm.modules.reporting + reporting-runtime-impl + + + ru.cg.webbpm.modules.reporting.reporting-jasper + reporting-jasper-impl + + + ru.cg.webbpm.modules.reporting.reporting-jasper + reporting-jasper-runtime-impl + + + ru.cg.webbpm.modules.reporting.reporting-xdoc + reporting-xdoc-impl + + + ru.cg.webbpm.modules.reporting.reporting-xdoc + reporting-xdoc-runtime-impl + + + org.liquibase + liquibase-core + + + ru.cg.webbpm.modules + webkit-base + + + xerces + xercesImpl + + + com.google.guava + guava + + + ru.micord.fias + client + + + org.apache.tika + tika-core + + + org.bouncycastle + bcprov-jdk15on + + + org.bouncycastle + bcpkix-jdk15on + + + org.mnode.ical4j + ical4j + + + net.javacrumbs.shedlock + shedlock-spring + + + net.javacrumbs.shedlock + shedlock-provider-jdbc-template + + + ru.cg.webbpm.packages.base + backend + + + + ${parent.artifactId} + + + maven-compiler-plugin + + false + true + 17 + + + + org.codehaus.mojo + build-helper-maven-plugin + 3.2.0 + + + add-source + generate-sources + + add-source + + + + ${project.basedir}/target/generated-sources/java + + + + + + + + + + studio + + + ru.cg.webbpm.modules.resources + resources-impl-development + + + + + dev + + + org.postgresql + postgresql + + + + + diff --git a/backend/src/main/java/AppConfig.java b/backend/src/main/java/AppConfig.java new file mode 100644 index 0000000..ccd3330 --- /dev/null +++ b/backend/src/main/java/AppConfig.java @@ -0,0 +1,67 @@ +import java.time.Duration; +import javax.sql.DataSource; + +import net.javacrumbs.shedlock.core.LockProvider; +import net.javacrumbs.shedlock.provider.jdbctemplate.JdbcTemplateLockProvider; +import net.javacrumbs.shedlock.spring.ScheduledLockConfiguration; +import net.javacrumbs.shedlock.spring.ScheduledLockConfigurationBuilder; + +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.EnableAspectJAutoProxy; +import org.springframework.context.annotation.FilterType; +import org.springframework.context.support.PropertySourcesPlaceholderConfigurer; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; + +/** + * Root application context + * This context imports XML configs from all the other jars, and is created by {@link WebAppInitializer} + * NB: modules are excluded from component scan since spring-context.xml sometimes holds important parameters and / or annotations + * @author krylov + */ +@Configuration +@ComponentScan(basePackages = { + "service", + "dao", + "bpmn", + "i18n", + "errorhandling", + "database", + "component.addresses", + "gen", + "ru.cg", + "ru.micord" +}, excludeFilters = { + @ComponentScan.Filter(type = FilterType.REGEX, pattern = "security.WebSecurityConfig") +}) +@EnableAspectJAutoProxy(proxyTargetClass = true) +@EnableWebMvc +@EnableScheduling +public class AppConfig { + + @Bean + public PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer(){ + return new PropertySourcesPlaceholderConfigurer(); + } + + @Bean + public ScheduledLockConfiguration taskScheduler(LockProvider lockProvider) { + ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler(); + scheduler.setPoolSize(12); + scheduler.initialize(); + return ScheduledLockConfigurationBuilder + .withLockProvider(lockProvider) + .withTaskScheduler(scheduler) + .withDefaultLockAtMostFor(Duration.ofHours(4)) + .build(); + } + + @Bean + public LockProvider lockProvider(@Qualifier("datasource") DataSource dataSource) { + return new JdbcTemplateLockProvider(dataSource); + } +} diff --git a/backend/src/main/java/WebAppInitializer.java b/backend/src/main/java/WebAppInitializer.java new file mode 100644 index 0000000..f4fef23 --- /dev/null +++ b/backend/src/main/java/WebAppInitializer.java @@ -0,0 +1,31 @@ +import javax.servlet.ServletContext; +import javax.servlet.ServletException; + +import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer; +import org.springframework.web.util.IntrospectorCleanupListener; + +/** + * This initializer creates root context and registers dispatcher servlet + * Spring scans for initializers automatically + */ +public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { + + public void onStartup(ServletContext servletContext) throws ServletException { + super.onStartup(servletContext); + servletContext.addListener(new IntrospectorCleanupListener()); + } + + protected String[] getServletMappings() { + return new String[]{"/"}; + } + + @Override + protected Class[] getRootConfigClasses() { + return new Class[]{AppConfig.class}; + } + + @Override + protected Class[] getServletConfigClasses() { + return new Class[0]; + } +} diff --git a/backend/src/main/java/dto/jivoprofile/JivoProfileDto.java b/backend/src/main/java/dto/jivoprofile/JivoProfileDto.java new file mode 100644 index 0000000..c53717e --- /dev/null +++ b/backend/src/main/java/dto/jivoprofile/JivoProfileDto.java @@ -0,0 +1,35 @@ +package dto.jivoprofile; + +import ru.cg.webbpm.modules.webkit.annotations.Model; + +@Model +public class JivoProfileDto { + + public String username; + public String email; + public String phone; + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } +} \ No newline at end of file diff --git a/backend/src/main/java/ervu_dashboard/component/chart/BarMockChartV2Service.java b/backend/src/main/java/ervu_dashboard/component/chart/BarMockChartV2Service.java new file mode 100644 index 0000000..bc5c643 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/component/chart/BarMockChartV2Service.java @@ -0,0 +1,26 @@ +package ervu_dashboard.component.chart; + +import java.util.Arrays; + +import component.chart.dto.ChartConfigDto; +import component.chart.service.ChartV2Service; +import ervu_dashboard.model.chart.BarMockDatasets; +import model.Filter; + +/** + * @author Vitaly Chekushkin + */ +public class BarMockChartV2Service implements ChartV2Service { + + public BarMockDatasets datasetsConfiguration; + + @Override + public ChartConfigDto loadData(Integer integer, Integer integer1, Filter[] filters) { + ChartConfigDto chartConfigDto = new ChartConfigDto(); + datasetsConfiguration.labels = Arrays.stream(datasetsConfiguration.datasets) + .flatMap(dataset -> Arrays.stream(dataset.data)).map(String::valueOf).toArray(String[]::new); + chartConfigDto.setData(datasetsConfiguration); + chartConfigDto.setType("bar"); + return chartConfigDto; + } +} diff --git a/backend/src/main/java/ervu_dashboard/component/chart/DoughnutMockChartV2Service.java b/backend/src/main/java/ervu_dashboard/component/chart/DoughnutMockChartV2Service.java new file mode 100644 index 0000000..d6549b6 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/component/chart/DoughnutMockChartV2Service.java @@ -0,0 +1,22 @@ +package ervu_dashboard.component.chart; + +import component.chart.dto.ChartConfigDto; +import component.chart.service.ChartV2Service; +import ervu_dashboard.model.chart.DoughnutMockDatasets; +import model.Filter; + +/** + * @author Vitaly Chekushkin + */ +public class DoughnutMockChartV2Service implements ChartV2Service { + + public DoughnutMockDatasets datasetsConfiguration; + + @Override + public ChartConfigDto loadData(Integer offset, Integer limit, Filter[] filters) { + ChartConfigDto chartConfigDto = new ChartConfigDto(); + chartConfigDto.setData(datasetsConfiguration); + chartConfigDto.setType("doughnut"); + return chartConfigDto; + } +} diff --git a/backend/src/main/java/ervu_dashboard/component/chart/ErvuMultiChartDataSetService.java b/backend/src/main/java/ervu_dashboard/component/chart/ErvuMultiChartDataSetService.java new file mode 100644 index 0000000..64af62c --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/component/chart/ErvuMultiChartDataSetService.java @@ -0,0 +1,237 @@ +package ervu_dashboard.component.chart; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.HashSet; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Optional; +import java.util.Set; +import java.util.stream.Collectors; + +import component.chart.dto.ChartDataSetDto; +import component.chart.dto.ChartPointDto; +import component.chart.model.AggregationDataSet; +import component.chart.model.ChartColumnSort; +import component.chart.model.StaticDataSet; +import component.chart.service.MultiChartDataSetService; +import component.chart.service.impl.AbstractChartDatasetService; +import ervu_dashboard.component.filter.FilterReferences; +import ervu_dashboard.model.chart.ChartDatasetType; +import ervu_dashboard.model.chart.ColumnAggregationDataSet; +import ervu_dashboard.model.chart.ErvuChartDataSetDto; +import model.Filter; +import model.FilterModel; + +import ru.cg.webbpm.modules.database.api.bean.TableRow; +import ru.cg.webbpm.modules.database.api.dao.LoadDao; +import ru.cg.webbpm.modules.database.api.dao.option.LoadOptions; +import ru.cg.webbpm.modules.database.bean.entity_graph.AggregateFuncField; +import ru.cg.webbpm.modules.database.bean.entity_graph.EntityColumn; +import ru.cg.webbpm.modules.database.bean.filter.EntityFilter; +import ru.cg.webbpm.modules.standard_annotations.editor.Visible; +import ru.cg.webbpm.modules.standard_annotations.validation.NotNull; + +import static java.util.Arrays.stream; + +/** + * @author Vitaly Chekushkin + */ +public class ErvuMultiChartDataSetService extends AbstractChartDatasetService implements + MultiChartDataSetService { + + @NotNull + public LoadDao loadDao; + + @NotNull + public ChartDatasetType datasetType; + + @NotNull(predicate = "datasetType==ChartDatasetType.AGGREGATION") + @Visible(predicate = "datasetType==ChartDatasetType.AGGREGATION") + public AggregationDataSet aggregationDataSet; + + @NotNull(predicate = "datasetType==ChartDatasetType.STATIC") + @Visible(predicate = "datasetType==ChartDatasetType.STATIC") + public StaticDataSet staticDataSet; + + @NotNull(predicate = "datasetType==ChartDatasetType.COLUMN_AGGREGATION") + @Visible(predicate = "datasetType==ChartDatasetType.COLUMN_AGGREGATION") + public ColumnAggregationDataSet columnAggregationDataSet; + + private FilterReferences filterReferences; + + @Override + protected void start() { + super.start(); + this.filterReferences = getScript(FilterReferences.class); + } + + @Override + public List loadDataSets(Integer offset, Integer limit, Filter[] filters) { + LoadOptions loadOptions = loadOptions(offset, limit, filters); + return switch (datasetType) { + case AGGREGATION -> loadAggregationDataSets(loadOptions); + case STATIC -> loadStaticDataSets(loadOptions); + case COLUMN_AGGREGATION -> loadColumnAggregationDataSets(loadOptions); + }; + } + + protected List loadAggregationDataSets(LoadOptions loadOptions) { + + for (ChartColumnSort columnSort : aggregationDataSet.columnSorts) { + loadOptions.addSortField(columnSort.field, columnSort.sortOrder); + } + EntityColumn[] groupByColumnsArray = aggregationDataSet.groupByColumns; + Set groupByColumns = stream(groupByColumnsArray).collect(Collectors.toSet()); + EntityColumn labelColumn = aggregationDataSet.labelColumn != null + ? aggregationDataSet.labelColumn + : groupByColumnsArray[groupByColumnsArray.length - 1]; + + if (!groupByColumns.contains(labelColumn)) { + throw new IllegalStateException( + "Label column " + labelColumn + " must be in groupColumns array"); + } + Set aggregateFuncFields = stream(aggregationDataSet.aggregationData).map( + aggregationData -> stream(aggregationData.aggregationFunctionData).map( + aggregationFunctionData -> new AggregateFuncField(aggregationData.aggregationColumn, + aggregationFunctionData.aggregationFunction + )).collect(Collectors.toList())) + .flatMap(Collection::stream) + .collect(Collectors.toSet()); + + List rows = loadDao.loadAggregations(groupByColumns, aggregateFuncFields, + loadOptions + ); + + return stream(aggregationDataSet.aggregationData).map(dataItem -> + stream(dataItem.aggregationFunctionData).map(aggFuncData -> { + + List points = rows.stream().map(tableRow -> { + Object xAxesValue = getAxesValue(tableRow, labelColumn, + aggregationDataSet.labelColumFormatter + ); + Object yAxesValue = getAxesValue(tableRow, dataItem.aggregationColumn, + dataItem.aggregationColumnFormatter + ); + return new ChartPointDto(xAxesValue, yAxesValue); + }).collect(Collectors.toList()); + + ChartDataSetDto chartDataSetDto = new ChartDataSetDto(aggFuncData.dataLabel, + aggFuncData.chartType.toString(), points + ); + chartDataSetDto.setBorderColor(aggFuncData.borderColor); + chartDataSetDto.setBackgroundColor(aggFuncData.backgroundColor); + chartDataSetDto.setxAxisID(aggFuncData.xAxesId); + chartDataSetDto.setyAxisID(aggFuncData.yAxesId); + chartDataSetDto.setTension(aggFuncData.tension); + chartDataSetDto.setOrder(aggFuncData.drawOrder); + return chartDataSetDto; + }).collect(Collectors.toList())).flatMap(Collection::stream).collect(Collectors.toList()); + } + + protected List loadStaticDataSets(LoadOptions loadOptions) { + + for (ChartColumnSort columnSort : staticDataSet.columnSorts) { + loadOptions.addSortField(columnSort.field, columnSort.sortOrder); + } + Set columns = new HashSet<>(); + stream(staticDataSet.staticData).forEach( + staticChartData -> columns.addAll(staticChartData.columns())); + + List rows = loadDao.load(columns, loadOptions); + + return stream(staticDataSet.staticData).map(staticChartData -> { + List points = rows.stream().map(tableRow -> { + Object xAxesValue = getAxesValue(tableRow, staticChartData.labelColumn, + staticChartData.labelColumnFormatter + ); + Object yAxesValue = getAxesValue(tableRow, staticChartData.dataColumn, + staticChartData.dataColumnFormatter + ); + return new ChartPointDto(xAxesValue, yAxesValue); + }).collect(Collectors.toList()); + + ChartDataSetDto chartDataSetDto = new ChartDataSetDto(staticChartData.dataLabel, + staticChartData.chartType.toString(), points + ); + chartDataSetDto.setData(points); + chartDataSetDto.setLabel(staticChartData.dataLabel); + chartDataSetDto.setBorderColor(staticChartData.borderColor); + chartDataSetDto.setBackgroundColor(staticChartData.backgroundColor); + chartDataSetDto.setxAxisID(staticChartData.xAxesId); + chartDataSetDto.setyAxisID(staticChartData.yAxesId); + chartDataSetDto.setTension(staticChartData.tension); + chartDataSetDto.setOrder(staticChartData.drawOrder); + return chartDataSetDto; + }).collect(Collectors.toList()); + } + + protected List loadColumnAggregationDataSets(LoadOptions loadOptions) { + ColumnAggregationDataSet dataSet = columnAggregationDataSet; + + Set aggregateFuncFields = stream(dataSet.aggregationData) + .map(aggData -> new AggregateFuncField(aggData.aggregationColumn, + aggData.aggregationFunction + )) + .collect(LinkedHashSet::new, Set::add, Set::addAll); + + TableRow tableRow = Optional.ofNullable(loadDao.loadAggregations( + aggregateFuncFields, loadOptions + )).orElse(new TableRow()); + + List backgroundColors = new ArrayList<>(); + + List points = stream(dataSet.aggregationData) + .map(aggData -> { + backgroundColors.add(aggData.borderColor); + return new ChartPointDto( + aggData.label, + getAxesValue(tableRow, aggData.aggregationColumn, aggData.aggregationColumnFormatter) + ); + }).toList(); + + ErvuChartDataSetDto chartDataSetDto = new ErvuChartDataSetDto( + dataSet.dataSetLabel, + dataSet.chartType.toString(), + points + ); + + chartDataSetDto.setBackgroundColors(backgroundColors.toArray(new String[0])); + chartDataSetDto.setBorderColor(dataSet.borderColor); + chartDataSetDto.setxAxisID(dataSet.xAxesId); + chartDataSetDto.setyAxisID(dataSet.yAxesId); + chartDataSetDto.setTension(dataSet.tension); + chartDataSetDto.setOrder(dataSet.drawOrder); + chartDataSetDto.setBorderRadius(dataSet.borderRadius); + chartDataSetDto.setBarPercentage(dataSet.barPercentage); + + return Collections.singletonList(chartDataSetDto); + } + + protected LoadOptions loadOptions(Integer offset, Integer limit, Filter[] filters) { + LoadOptions loadOptions = new LoadOptions(); + loadOptions.setOffset(offset); + loadOptions.setLimit(limit); + loadOptions.setEntityFilterGroup(getEntityFilterGroup(filters)); + return loadOptions; + } + + @Override + protected List convertFilterModels(Filter filter) { + return Arrays.stream(filter.filterModels) + .map(filterModel -> getComponentFilter(filter.componentGuid, filterModel)) + .collect(Collectors.toList()); + } + + @Override + protected EntityFilter getComponentFilter(String componentGuid, FilterModel filterModel) { + if (filterReferences != null) { + return filterReferences.toEntityFilter(componentGuid, filterModel); + } + else { + return super.getComponentFilter(componentGuid, filterModel); + } + } +} diff --git a/backend/src/main/java/ervu_dashboard/component/chart/RoundSingleChartDataSetService.java b/backend/src/main/java/ervu_dashboard/component/chart/RoundSingleChartDataSetService.java new file mode 100644 index 0000000..b338ad1 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/component/chart/RoundSingleChartDataSetService.java @@ -0,0 +1,316 @@ +package ervu_dashboard.component.chart; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashSet; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Optional; +import java.util.Set; +import java.util.concurrent.Callable; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Future; +import java.util.concurrent.LinkedBlockingQueue; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.stream.Collectors; + +import component.chart.dto.SingleChartDataDto; +import component.chart.dto.SingleChartDataSetDto; +import component.chart.service.SingleChartDataSetService; +import component.chart.service.impl.AbstractChartDatasetService; +import ervu_dashboard.component.chart.label.RoundLabelConfiguration; +import ervu_dashboard.component.filter.FilterReferences; +import ervu_dashboard.model.chart.round.RoundAggregationData; +import ervu_dashboard.model.chart.round.RoundChartColumnSort; +import ervu_dashboard.model.chart.round.RoundChartDataDto; +import ervu_dashboard.model.chart.round.RoundChartDataSetConfiguration; +import ervu_dashboard.model.chart.round.RoundChartDataSetDto; +import ervu_dashboard.model.chart.round.RoundChartDataSetDtoWrapper; +import ervu_dashboard.model.chart.round.RoundColumnAggregationDataSet; +import ervu_dashboard.model.chart.round.RoundStaticData; +import ervu_dashboard.model.chart.round.label.ChartLabelModel; +import model.Filter; +import model.FilterModel; + +import ru.cg.webbpm.modules.database.api.bean.TableRow; +import ru.cg.webbpm.modules.database.api.dao.option.LoadOptions; +import ru.cg.webbpm.modules.database.bean.entity_graph.AggregateFuncField; +import ru.cg.webbpm.modules.database.bean.entity_graph.EntityColumn; +import ru.cg.webbpm.modules.database.bean.filter.EntityFilter; +import ru.cg.webbpm.modules.standard_annotations.validation.NotNull; + +import static java.lang.Runtime.getRuntime; +import static java.util.Arrays.stream; +import static java.util.concurrent.TimeUnit.MILLISECONDS; + +/** + * @author Vitaly Chekushkin + */ +public class RoundSingleChartDataSetService extends AbstractChartDatasetService + implements SingleChartDataSetService { + + @NotNull + public RoundChartDataSetConfiguration[] dataSetConfigurations; + + public RoundLabelConfiguration[] centerLabelConfigurations = new RoundLabelConfiguration[0]; + + private FilterReferences filterReferences; + + @Override + protected void start() { + super.start(); + this.filterReferences = getScript(FilterReferences.class); + } + + @Override + public SingleChartDataDto loadData(Integer offset, Integer limit, Filter[] filters) { + int availableProcessors = getRuntime().availableProcessors(); + ExecutorService executorService = new ThreadPoolExecutor(0, availableProcessors, + 0L, MILLISECONDS, new LinkedBlockingQueue() + ); + + List> dataSetTasks = new ArrayList<>(); + stream(dataSetConfigurations).forEach(dataSetConfiguration -> + dataSetTasks.add(() -> + loadData(dataSetConfiguration, loadOptions(offset, limit, filters)) + ) + ); + + List> labelTasks = new ArrayList<>(); + stream(centerLabelConfigurations).forEach(labelConfiguration -> + labelTasks.add(() -> + labelConfiguration.getLabelModel(loadOptions(offset, limit, filters)) + ) + ); + + try { + List> dataSetFutures = executorService.invokeAll(dataSetTasks); + List> labelFutures = executorService.invokeAll(labelTasks); + + List datasets = new ArrayList<>(); + List centerLabelModels = new ArrayList<>(); + List labels = new ArrayList<>(); + + for (Future future : dataSetFutures) { + RoundChartDataSetDtoWrapper chartDataSetDto = future.get(); + + if (chartDataSetDto.getRoundChartDataSetDto() != null) { + datasets.add(chartDataSetDto.getRoundChartDataSetDto()); + } + labels.addAll(chartDataSetDto.getLabels()); + } + executorService.shutdown(); + + for (Future future : labelFutures) { + centerLabelModels.add(future.get()); + } + + return new RoundChartDataDto(datasets, labels, centerLabelModels); + } + catch (InterruptedException | ExecutionException e) { + executorService.shutdownNow(); + throw new RuntimeException(e); + } + } + + protected RoundChartDataSetDtoWrapper loadData( + RoundChartDataSetConfiguration dataSetConfiguration, LoadOptions loadOptions) { + return switch (dataSetConfiguration.datasetType) { + case AGGREGATION -> loadAggregationDataSet(dataSetConfiguration, loadOptions); + case STATIC -> loadStaticDataSet(dataSetConfiguration, loadOptions); + case COLUMN_AGGREGATION -> loadColumnAggregationDataSet(dataSetConfiguration, loadOptions); + }; + } + + protected RoundChartDataSetDtoWrapper loadAggregationDataSet( + RoundChartDataSetConfiguration dataSetConfiguration, LoadOptions loadOptions) { + + addSorting(dataSetConfiguration.aggregationDataSet.columnSorts, loadOptions); + EntityColumn[] groupByColumnsArray = dataSetConfiguration.aggregationDataSet.groupByColumns; + Set groupByColumns = stream(groupByColumnsArray).collect(Collectors.toSet()); + EntityColumn labelColumn = dataSetConfiguration.aggregationDataSet.labelColumn != null + ? dataSetConfiguration.aggregationDataSet.labelColumn + : groupByColumnsArray[groupByColumnsArray.length - 1]; + + if (!groupByColumns.contains(labelColumn)) { + throw new IllegalStateException( + "Label column " + labelColumn + " must be in groupColumns array"); + } + RoundAggregationData aggregationData = dataSetConfiguration.aggregationDataSet.aggregationData; + AggregateFuncField funcField = new AggregateFuncField( + aggregationData.aggregationColumn, aggregationData.aggregationFunction); + Set aggregateFuncFields = Collections.singleton(funcField); + List labels = new ArrayList<>(); + List data = new ArrayList<>(); + + List rows = dataSetConfiguration.loadDao.loadAggregations( + groupByColumns, + aggregateFuncFields, + loadOptions + ); + + rows.forEach(tableRow -> { + labels.add(getAxesValue(tableRow, labelColumn, + dataSetConfiguration.aggregationDataSet.labelColumFormatter + )); + data.add(getAxesValue(tableRow, aggregationData.aggregationColumn, + aggregationData.aggregationColumnFormatter + )); + }); + + String[] backgroundColors = generateBackgroundColors(dataSetConfiguration.backgroundColors, + data + ); + RoundChartDataSetDto singleChartDataSetDto = new RoundChartDataSetDto( + aggregationData.dataLabel, + data, + backgroundColors, + dataSetConfiguration.borderWidth, + dataSetConfiguration.radius, + dataSetConfiguration.cutout, + dataSetConfiguration.hoverOffset + ); + + return new RoundChartDataSetDtoWrapper(singleChartDataSetDto, labels); + } + + protected RoundChartDataSetDtoWrapper loadStaticDataSet( + RoundChartDataSetConfiguration dataSetConfiguration, LoadOptions loadOptions) { + + addSorting(dataSetConfiguration.staticDataSet.columnSorts, loadOptions); + RoundStaticData staticData = dataSetConfiguration.staticDataSet.staticData; + Set columns = new HashSet<>(staticData.columns()); + List labels = new ArrayList<>(); + List data = new ArrayList<>(); + + dataSetConfiguration.loadDao.load(columns, loadOptions) + .forEach(tableRow -> { + labels.add(getAxesValue(tableRow, staticData.labelColumn, + staticData.labelColumnFormatter + )); + data.add(getAxesValue(tableRow, staticData.dataColumn, + staticData.dataColumnFormatter + )); + }); + + String[] backgroundColors = generateBackgroundColors(dataSetConfiguration.backgroundColors, + data + ); + + RoundChartDataSetDto singleChartDataSetDto = new RoundChartDataSetDto( + staticData.dataLabel, + data, + backgroundColors, + dataSetConfiguration.borderWidth, + dataSetConfiguration.radius, + dataSetConfiguration.cutout, + dataSetConfiguration.hoverOffset + ); + + return new RoundChartDataSetDtoWrapper(singleChartDataSetDto, labels); + } + + protected RoundChartDataSetDtoWrapper loadColumnAggregationDataSet( + RoundChartDataSetConfiguration dataSetConfiguration, LoadOptions loadOptions) { + RoundColumnAggregationDataSet dataSet = dataSetConfiguration.columnAggregationDataSet; + + Set aggregateFuncFields = stream(dataSet.aggregationData) + .map(aggData -> new AggregateFuncField(aggData.aggregationColumn, + aggData.aggregationFunction + )) + .collect(LinkedHashSet::new, Set::add, Set::addAll); + + TableRow tableRow = Optional.ofNullable(dataSetConfiguration.loadDao.loadAggregations( + aggregateFuncFields, + loadOptions + )).orElse(new TableRow()); + + List labels = new ArrayList<>(); + List data = new ArrayList<>(); + List backgroundColors = new ArrayList<>(); + + stream(dataSet.aggregationData).forEach(aggData -> { + Object formattedValue = getAxesValue( + tableRow, aggData.aggregationColumn, aggData.aggregationColumnFormatter + ); + + if (formattedValue == null) return; + + labels.add(aggData.label); + data.add(formattedValue); + backgroundColors.add(aggData.backgroundColor); + }); + + RoundChartDataSetDto singleChartDataSetDto = new RoundChartDataSetDto( + dataSet.dataLabel, + data, + backgroundColors.toArray(new String[0]), + dataSetConfiguration.borderWidth, + dataSetConfiguration.radius, + dataSetConfiguration.cutout, + dataSetConfiguration.hoverOffset + ); + + return new RoundChartDataSetDtoWrapper(singleChartDataSetDto, labels); + } + + protected void addSorting(RoundChartColumnSort[] aggregationDataSet, LoadOptions loadOptions) { + for (RoundChartColumnSort columnSort : aggregationDataSet) { + loadOptions.addSortField(columnSort.field, columnSort.sortOrder); + } + } + + @Override + protected List convertFilterModels(Filter filter) { + return Arrays.stream(filter.filterModels) + .map(filterModel -> getComponentFilter(filter.componentGuid, filterModel)) + .collect(Collectors.toList()); + } + + protected LoadOptions loadOptions(Integer offset, Integer limit, Filter[] filters) { + LoadOptions loadOptions = new LoadOptions(); + loadOptions.setOffset(offset); + loadOptions.setLimit(limit); + loadOptions.setEntityFilterGroup(getEntityFilterGroup(filters)); + return loadOptions; + } + + protected String[] generateBackgroundColors(String[] backgroundColors, List data) { + String[] colors; + + if (backgroundColors.length > 0) { + + if (backgroundColors.length >= data.size()) { + colors = backgroundColors; + } + else { + Set definedColors = stream(backgroundColors).collect(Collectors.toSet()); + String[] additionalColors = generateBackgroundColors(definedColors, + data.size() - backgroundColors.length + ); + colors = Arrays.copyOf(backgroundColors, + backgroundColors.length + additionalColors.length + ); + System.arraycopy(additionalColors, 0, colors, backgroundColors.length, + additionalColors.length + ); + } + } + else { + colors = generateBackgroundColors(data.size()); + } + return colors; + } + + @Override + protected EntityFilter getComponentFilter(String componentGuid, FilterModel filterModel) { + if (filterReferences != null) { + return filterReferences.toEntityFilter(componentGuid, filterModel); + } + else { + return super.getComponentFilter(componentGuid, filterModel); + } + } +} diff --git a/backend/src/main/java/ervu_dashboard/component/chart/label/AbstractRoundLabelConfiguration.java b/backend/src/main/java/ervu_dashboard/component/chart/label/AbstractRoundLabelConfiguration.java new file mode 100644 index 0000000..135a96c --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/component/chart/label/AbstractRoundLabelConfiguration.java @@ -0,0 +1,29 @@ +package ervu_dashboard.component.chart.label; + +import ervu_dashboard.model.Font; +import ervu_dashboard.model.chart.round.label.ChartLabelModel; + +import ru.cg.webbpm.modules.database.api.dao.option.LoadOptions; +import ru.cg.webbpm.modules.standard_annotations.editor.ColorEditor; + +/** + * @author Vitaly Chekushkin + */ +public abstract class AbstractRoundLabelConfiguration implements RoundLabelConfiguration { + + public Font font = Font.of("sans-serif", "500", 14); + + @ColorEditor + public String color = "#FFFFFF"; + + @Override + public ChartLabelModel getLabelModel(LoadOptions loadOptions) { + return new ChartLabelModel( + getLabel(loadOptions), + color, + font + ); + } + + abstract protected String getLabel(LoadOptions loadOptions); +} diff --git a/backend/src/main/java/ervu_dashboard/component/chart/label/DefaultRoundLabelConfiguration.java b/backend/src/main/java/ervu_dashboard/component/chart/label/DefaultRoundLabelConfiguration.java new file mode 100644 index 0000000..d9b98b1 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/component/chart/label/DefaultRoundLabelConfiguration.java @@ -0,0 +1,42 @@ +package ervu_dashboard.component.chart.label; + +import java.util.Collections; +import property.grid.Formatter; +import rpc.LoadGraphSource; + +import ru.cg.webbpm.modules.database.api.bean.TableRow; +import ru.cg.webbpm.modules.database.api.dao.LoadDao; +import ru.cg.webbpm.modules.database.api.dao.option.LoadOptions; +import ru.cg.webbpm.modules.database.bean.AggregationFunction; +import ru.cg.webbpm.modules.database.bean.annotation.LocalGraphSource; +import ru.cg.webbpm.modules.database.bean.entity_graph.AggregateFuncField; +import ru.cg.webbpm.modules.database.bean.entity_graph.EntityColumn; +import ru.cg.webbpm.modules.standard_annotations.validation.NotNull; + +/** + * @author Vitaly Chekushkin + */ +public class DefaultRoundLabelConfiguration extends AbstractRoundLabelConfiguration + implements LoadGraphSource { + + @NotNull + public LoadDao loadDao; + + @NotNull + @LocalGraphSource(sourceFieldName = "loadDao") + public EntityColumn valueColumn; + + @NotNull + public AggregationFunction aggregationFunction; + + public Formatter valueFormatter; + + @Override + protected String getLabel(LoadOptions loadOptions) { + AggregateFuncField funcField = new AggregateFuncField(valueColumn, aggregationFunction); + TableRow tableRow = loadDao.loadAggregations(Collections.singleton(funcField), loadOptions); + Object value = tableRow.get(valueColumn); + value = valueFormatter != null ? valueFormatter.format(value) : value; + return value != null ? value.toString() : null; + } +} diff --git a/backend/src/main/java/ervu_dashboard/component/chart/label/RoundLabelConfiguration.java b/backend/src/main/java/ervu_dashboard/component/chart/label/RoundLabelConfiguration.java new file mode 100644 index 0000000..6c40ffd --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/component/chart/label/RoundLabelConfiguration.java @@ -0,0 +1,13 @@ +package ervu_dashboard.component.chart.label; + +import ervu_dashboard.model.chart.round.label.ChartLabelModel; + +import ru.cg.webbpm.modules.database.api.dao.option.LoadOptions; + +/** + * @author Vitaly Chekushkin + */ + +public interface RoundLabelConfiguration { + ChartLabelModel getLabelModel(LoadOptions loadOptions); +} diff --git a/backend/src/main/java/ervu_dashboard/component/chart/label/StaticRoundLabelDataSet.java b/backend/src/main/java/ervu_dashboard/component/chart/label/StaticRoundLabelDataSet.java new file mode 100644 index 0000000..12ae239 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/component/chart/label/StaticRoundLabelDataSet.java @@ -0,0 +1,16 @@ +package ervu_dashboard.component.chart.label; + +import ru.cg.webbpm.modules.database.api.dao.option.LoadOptions; + +/** + * @author Vitaly Chekushkin + */ +public class StaticRoundLabelDataSet extends AbstractRoundLabelConfiguration { + + public String label; + + @Override + public String getLabel(LoadOptions loadOptions) { + return label; + } +} diff --git a/backend/src/main/java/ervu_dashboard/component/converter/UUIDValueConverter.java b/backend/src/main/java/ervu_dashboard/component/converter/UUIDValueConverter.java new file mode 100644 index 0000000..047c3b1 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/component/converter/UUIDValueConverter.java @@ -0,0 +1,20 @@ +package ervu_dashboard.component.converter; + +import java.util.UUID; + +import component.field.dataconvert.DataConverter; + +/** + * @author Vitaly Chekushkin + */ +public class UUIDValueConverter implements DataConverter { + @Override + public UUID convertValueForSave(String value) { + return value != null ? UUID.fromString(value) : null; + } + + @Override + public String convertValueForLoad(UUID uuid) { + return uuid != null ? uuid.toString() : null; + } +} diff --git a/backend/src/main/java/ervu_dashboard/component/filter/AbstractFilterReference.java b/backend/src/main/java/ervu_dashboard/component/filter/AbstractFilterReference.java new file mode 100644 index 0000000..60b4933 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/component/filter/AbstractFilterReference.java @@ -0,0 +1,58 @@ +package ervu_dashboard.component.filter; + +import component.field.dataconvert.DataConverter; +import component.field.dataconvert.DataConverterProvider; +import model.FilterModel; + +import ru.cg.webbpm.modules.database.bean.entity_graph.EntityColumn; +import ru.cg.webbpm.modules.database.bean.entity_graph.condition.Operator; +import ru.cg.webbpm.modules.database.bean.filter.EntityFilter; +import ru.cg.webbpm.modules.database.bean.filter.FilterOperation; +import ru.cg.webbpm.modules.standard_annotations.editor.ObjectRef; +import ru.cg.webbpm.modules.standard_annotations.validation.NotNull; +import ru.cg.webbpm.modules.webkit.annotations.Model; +import ru.cg.webbpm.modules.webkit.beans.Behavior; + +/** + * @author Vitaly Chekushkin + */ +public abstract class AbstractFilterReference implements FilterReference { + @NotNull + @ObjectRef + public Behavior filterComponent; + + public DataConverter dataConverter; + + public Operator multiValueOperator; + + @Override + public String getSupportsFilterGuid() { + return filterComponent.getObjectId(); + } + + @Override + public EntityFilter toEntityFilter(FilterModel filterModel) { + Object convertedValue = convertData(filterModel.getValue()); + FilterOperation operation = filterModel.getOperation(); + EntityColumn entityColumn = getEntityColumn(); + Operator multiValueOperator = + this.multiValueOperator != null ? this.multiValueOperator : Operator.AND; + + return new EntityFilter( + convertedValue, + operation, + entityColumn, + multiValueOperator + ); + } + + protected Object convertData(Object value) { + DataConverter converter = + dataConverter != null + ? (DataConverter) dataConverter + : (DataConverter) DataConverterProvider.getDataConverter(value); + return converter.convertValueForSave(value); + } + + protected abstract EntityColumn getEntityColumn(); +} diff --git a/backend/src/main/java/ervu_dashboard/component/filter/FilterReference.java b/backend/src/main/java/ervu_dashboard/component/filter/FilterReference.java new file mode 100644 index 0000000..e8103ad --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/component/filter/FilterReference.java @@ -0,0 +1,16 @@ +package ervu_dashboard.component.filter; + +import model.FilterModel; + +import ru.cg.webbpm.modules.database.bean.filter.EntityFilter; +import ru.cg.webbpm.modules.webkit.annotations.Model; + +/** + * @author Vitaly Chekushkin + */ +public interface FilterReference { + + String getSupportsFilterGuid(); + + EntityFilter toEntityFilter(FilterModel filterModel); +} diff --git a/backend/src/main/java/ervu_dashboard/component/filter/FilterReferences.java b/backend/src/main/java/ervu_dashboard/component/filter/FilterReferences.java new file mode 100644 index 0000000..b17af64 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/component/filter/FilterReferences.java @@ -0,0 +1,45 @@ +package ervu_dashboard.component.filter; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; + +import model.FilterModel; +import model.filter.FilterableReference; + +import ru.cg.webbpm.modules.database.bean.filter.EntityFilter; +import ru.cg.webbpm.modules.standard_annotations.scopes.AnalyticalScope; +import ru.cg.webbpm.modules.standard_annotations.validation.NotNull; +import ru.cg.webbpm.modules.webkit.annotations.Model; +import ru.cg.webbpm.modules.webkit.beans.Behavior; + +/** + * @author Vitaly Chekushkin + */ +@Model +@AnalyticalScope(FilterableReference.class) +public class FilterReferences extends Behavior { + + @NotNull + public FilterReference[] references; + + private final Map referenceMap = new HashMap<>(); + + @Override + protected void start() { + super.start(); + Arrays.stream(references).forEach(reference -> referenceMap.put(reference.getSupportsFilterGuid(), reference)); + } + + public EntityFilter toEntityFilter(String filterGuid, FilterModel filterModel) { + return Optional.ofNullable(referenceMap.get(filterGuid)) + .map(reference -> reference.toEntityFilter(filterModel)) + .orElseThrow(() -> new IllegalArgumentException( + "Filter reference for guid=%s(id:%s) not defined".formatted( + filterGuid, filterGuid + )) + ); + } +} diff --git a/backend/src/main/java/ervu_dashboard/component/filter/GraphFilterReference.java b/backend/src/main/java/ervu_dashboard/component/filter/GraphFilterReference.java new file mode 100644 index 0000000..74d85de --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/component/filter/GraphFilterReference.java @@ -0,0 +1,25 @@ +package ervu_dashboard.component.filter; + +import model.filter.FilterableReference; + +import ru.cg.webbpm.modules.database.bean.annotation.GraphSource; +import ru.cg.webbpm.modules.database.bean.entity_graph.EntityColumn; +import ru.cg.webbpm.modules.standard_annotations.validation.NotNull; + +/** + * @author Vitaly Chekushkin + */ +public class GraphFilterReference extends AbstractFilterReference { + + @NotNull + @GraphSource( + value = FilterableReference.class, + scanMode = GraphSource.ScanMode.SELF + ) + public EntityColumn columnForFilter; + + @Override + protected EntityColumn getEntityColumn() { + return columnForFilter; + } +} diff --git a/backend/src/main/java/ervu_dashboard/component/filter/StaticFilterReference.java b/backend/src/main/java/ervu_dashboard/component/filter/StaticFilterReference.java new file mode 100644 index 0000000..d97b435 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/component/filter/StaticFilterReference.java @@ -0,0 +1,22 @@ +package ervu_dashboard.component.filter; + +import ru.cg.webbpm.modules.database.bean.entity_graph.EntityColumn; +import ru.cg.webbpm.modules.standard_annotations.validation.NotNull; +import ru.cg.webbpm.modules.webkit.annotations.Model; + +/** + * @author Vitaly Chekushkin + */ +@Model +public class StaticFilterReference extends AbstractFilterReference { + + @NotNull + public String table; + @NotNull + public String column; + + @Override + protected EntityColumn getEntityColumn() { + return new EntityColumn(table, column); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/DefaultCatalog.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/DefaultCatalog.java new file mode 100644 index 0000000..ea9d1b7 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/DefaultCatalog.java @@ -0,0 +1,105 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans; + + +import ervu_dashboard.ervu_dashboard.db_beans.appeals.Appeals; +import ervu_dashboard.ervu_dashboard.db_beans.main_dashboard.MainDashboard; +import ervu_dashboard.ervu_dashboard.db_beans.public_.Public; +import ervu_dashboard.ervu_dashboard.db_beans.ratings.Ratings; +import ervu_dashboard.ervu_dashboard.db_beans.recruitment_campaign.RecruitmentCampaign; +import ervu_dashboard.ervu_dashboard.db_beans.security.Security; +import ervu_dashboard.ervu_dashboard.db_beans.space.Space; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.TotalRegistered; + +import java.util.Arrays; +import java.util.List; + +import org.jooq.Constants; +import org.jooq.Schema; +import org.jooq.impl.CatalogImpl; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class DefaultCatalog extends CatalogImpl { + + private static final long serialVersionUID = 1L; + + /** + * The reference instance of DEFAULT_CATALOG + */ + public static final DefaultCatalog DEFAULT_CATALOG = new DefaultCatalog(); + + /** + * The schema appeals. + */ + public final Appeals APPEALS = Appeals.APPEALS; + + /** + * The schema main_dashboard. + */ + public final MainDashboard MAIN_DASHBOARD = MainDashboard.MAIN_DASHBOARD; + + /** + * The schema public. + */ + public final Public PUBLIC = Public.PUBLIC; + + /** + * The schema ratings. + */ + public final Ratings RATINGS = Ratings.RATINGS; + + /** + * The schema recruitment_campaign. + */ + public final RecruitmentCampaign RECRUITMENT_CAMPAIGN = RecruitmentCampaign.RECRUITMENT_CAMPAIGN; + + /** + * The schema security. + */ + public final Security SECURITY = Security.SECURITY; + + /** + * The schema space. + */ + public final Space SPACE = Space.SPACE; + + /** + * The schema total_registered. + */ + public final TotalRegistered TOTAL_REGISTERED = TotalRegistered.TOTAL_REGISTERED; + + /** + * No further instances allowed + */ + private DefaultCatalog() { + super(""); + } + + @Override + public final List getSchemas() { + return Arrays.asList( + Appeals.APPEALS, + MainDashboard.MAIN_DASHBOARD, + Public.PUBLIC, + Ratings.RATINGS, + RecruitmentCampaign.RECRUITMENT_CAMPAIGN, + Security.SECURITY, + Space.SPACE, + TotalRegistered.TOTAL_REGISTERED + ); + } + + /** + * A reference to the 3.19 minor release of the code generator. If this + * doesn't compile, it's because the runtime library uses an older minor + * release, namely: 3.19. You can turn off the generation of this reference + * by specifying /configuration/generator/generate/jooqVersionReference + */ + private static final String REQUIRE_RUNTIME_JOOQ_VERSION = Constants.VERSION_3_19; +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/appeals/Appeals.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/appeals/Appeals.java new file mode 100644 index 0000000..17bf989 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/appeals/Appeals.java @@ -0,0 +1,76 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.appeals; + + +import ervu_dashboard.ervu_dashboard.db_beans.DefaultCatalog; +import ervu_dashboard.ervu_dashboard.db_beans.appeals.tables.MainProfile; +import ervu_dashboard.ervu_dashboard.db_beans.appeals.tables.ReasonsAppeal; +import ervu_dashboard.ervu_dashboard.db_beans.appeals.tables.ReviewRating; +import ervu_dashboard.ervu_dashboard.db_beans.appeals.tables.TopicAppeal; + +import java.util.Arrays; +import java.util.List; + +import org.jooq.Catalog; +import org.jooq.Table; +import org.jooq.impl.SchemaImpl; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Appeals extends SchemaImpl { + + private static final long serialVersionUID = 1L; + + /** + * The reference instance of appeals + */ + public static final Appeals APPEALS = new Appeals(); + + /** + * Основной профиль уровень РФ + */ + public final MainProfile MAIN_PROFILE = MainProfile.MAIN_PROFILE; + + /** + * Причины обжалования уровень РФ + */ + public final ReasonsAppeal REASONS_APPEAL = ReasonsAppeal.REASONS_APPEAL; + + /** + * Рейтинг рассмотрения жалоб уровень РФ + */ + public final ReviewRating REVIEW_RATING = ReviewRating.REVIEW_RATING; + + /** + * Тема обжалования уровень РФ + */ + public final TopicAppeal TOPIC_APPEAL = TopicAppeal.TOPIC_APPEAL; + + /** + * No further instances allowed + */ + private Appeals() { + super("appeals", null); + } + + + @Override + public Catalog getCatalog() { + return DefaultCatalog.DEFAULT_CATALOG; + } + + @Override + public final List> getTables() { + return Arrays.asList( + MainProfile.MAIN_PROFILE, + ReasonsAppeal.REASONS_APPEAL, + ReviewRating.REVIEW_RATING, + TopicAppeal.TOPIC_APPEAL + ); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/appeals/Keys.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/appeals/Keys.java new file mode 100644 index 0000000..e04e95a --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/appeals/Keys.java @@ -0,0 +1,52 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.appeals; + + +import ervu_dashboard.ervu_dashboard.db_beans.appeals.tables.MainProfile; +import ervu_dashboard.ervu_dashboard.db_beans.appeals.tables.ReasonsAppeal; +import ervu_dashboard.ervu_dashboard.db_beans.appeals.tables.ReviewRating; +import ervu_dashboard.ervu_dashboard.db_beans.appeals.tables.TopicAppeal; +import ervu_dashboard.ervu_dashboard.db_beans.appeals.tables.records.MainProfileRecord; +import ervu_dashboard.ervu_dashboard.db_beans.appeals.tables.records.ReasonsAppealRecord; +import ervu_dashboard.ervu_dashboard.db_beans.appeals.tables.records.ReviewRatingRecord; +import ervu_dashboard.ervu_dashboard.db_beans.appeals.tables.records.TopicAppealRecord; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.PubRecruitment; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.records.PubRecruitmentRecord; +import ervu_dashboard.ervu_dashboard.db_beans.space.tables.Region; +import ervu_dashboard.ervu_dashboard.db_beans.space.tables.records.RegionRecord; + +import org.jooq.ForeignKey; +import org.jooq.TableField; +import org.jooq.UniqueKey; +import org.jooq.impl.DSL; +import org.jooq.impl.Internal; + + +/** + * A class modelling foreign key relationships and constraints of tables in + * appeals. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Keys { + + // ------------------------------------------------------------------------- + // UNIQUE and PRIMARY KEY definitions + // ------------------------------------------------------------------------- + + public static final UniqueKey PK_MAIN_PROFILE = Internal.createUniqueKey(MainProfile.MAIN_PROFILE, DSL.name("pk_main_profile"), new TableField[] { MainProfile.MAIN_PROFILE.ID_MAIN_PROFILE }, true); + public static final UniqueKey PK_REASONS_APPEAL = Internal.createUniqueKey(ReasonsAppeal.REASONS_APPEAL, DSL.name("pk_reasons_appeal"), new TableField[] { ReasonsAppeal.REASONS_APPEAL.ID_REASONS_APPEAL }, true); + public static final UniqueKey PK_REVIEW_RATING = Internal.createUniqueKey(ReviewRating.REVIEW_RATING, DSL.name("pk_review_rating"), new TableField[] { ReviewRating.REVIEW_RATING.ID_REVIEW_RATING }, true); + public static final UniqueKey PK_TOPIC_APPEAL = Internal.createUniqueKey(TopicAppeal.TOPIC_APPEAL, DSL.name("pk_topic_appeal"), new TableField[] { TopicAppeal.TOPIC_APPEAL.ID_TOPIC_APPEAL }, true); + + // ------------------------------------------------------------------------- + // FOREIGN KEY definitions + // ------------------------------------------------------------------------- + + public static final ForeignKey MAIN_PROFILE__MAIN_PROFILE_FK1 = Internal.createForeignKey(MainProfile.MAIN_PROFILE, DSL.name("main_profile_fk1"), new TableField[] { MainProfile.MAIN_PROFILE.RECRUITMENT_ID }, ervu_dashboard.ervu_dashboard.db_beans.public_.Keys.RECRUITMENT_PKEY, new TableField[] { PubRecruitment.PUB_RECRUITMENT.ID }, true); + public static final ForeignKey REASONS_APPEAL__REASONS_APPEAL_FK1 = Internal.createForeignKey(ReasonsAppeal.REASONS_APPEAL, DSL.name("reasons_appeal_fk1"), new TableField[] { ReasonsAppeal.REASONS_APPEAL.RECRUITMENT_ID }, ervu_dashboard.ervu_dashboard.db_beans.public_.Keys.RECRUITMENT_PKEY, new TableField[] { PubRecruitment.PUB_RECRUITMENT.ID }, true); + public static final ForeignKey REVIEW_RATING__FK_REGION = Internal.createForeignKey(ReviewRating.REVIEW_RATING, DSL.name("fk_region"), new TableField[] { ReviewRating.REVIEW_RATING.ID_REGION }, ervu_dashboard.ervu_dashboard.db_beans.space.Keys.PK_REGION, new TableField[] { Region.REGION.ID_REGION }, true); + public static final ForeignKey REVIEW_RATING__REVIEW_RATING_FK1 = Internal.createForeignKey(ReviewRating.REVIEW_RATING, DSL.name("review_rating_fk1"), new TableField[] { ReviewRating.REVIEW_RATING.RECRUITMENT_ID }, ervu_dashboard.ervu_dashboard.db_beans.public_.Keys.RECRUITMENT_PKEY, new TableField[] { PubRecruitment.PUB_RECRUITMENT.ID }, true); + public static final ForeignKey TOPIC_APPEAL__TOPIC_APPEAL_FK1 = Internal.createForeignKey(TopicAppeal.TOPIC_APPEAL, DSL.name("topic_appeal_fk1"), new TableField[] { TopicAppeal.TOPIC_APPEAL.RECRUITMENT_ID }, ervu_dashboard.ervu_dashboard.db_beans.public_.Keys.RECRUITMENT_PKEY, new TableField[] { PubRecruitment.PUB_RECRUITMENT.ID }, true); +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/appeals/Tables.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/appeals/Tables.java new file mode 100644 index 0000000..c7cc777 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/appeals/Tables.java @@ -0,0 +1,38 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.appeals; + + +import ervu_dashboard.ervu_dashboard.db_beans.appeals.tables.MainProfile; +import ervu_dashboard.ervu_dashboard.db_beans.appeals.tables.ReasonsAppeal; +import ervu_dashboard.ervu_dashboard.db_beans.appeals.tables.ReviewRating; +import ervu_dashboard.ervu_dashboard.db_beans.appeals.tables.TopicAppeal; + + +/** + * Convenience access to all tables in appeals. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Tables { + + /** + * Основной профиль уровень РФ + */ + public static final MainProfile MAIN_PROFILE = MainProfile.MAIN_PROFILE; + + /** + * Причины обжалования уровень РФ + */ + public static final ReasonsAppeal REASONS_APPEAL = ReasonsAppeal.REASONS_APPEAL; + + /** + * Рейтинг рассмотрения жалоб уровень РФ + */ + public static final ReviewRating REVIEW_RATING = ReviewRating.REVIEW_RATING; + + /** + * Тема обжалования уровень РФ + */ + public static final TopicAppeal TOPIC_APPEAL = TopicAppeal.TOPIC_APPEAL; +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/appeals/tables/MainProfile.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/appeals/tables/MainProfile.java new file mode 100644 index 0000000..6345042 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/appeals/tables/MainProfile.java @@ -0,0 +1,317 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.appeals.tables; + + +import ervu_dashboard.ervu_dashboard.db_beans.appeals.Appeals; +import ervu_dashboard.ervu_dashboard.db_beans.appeals.Keys; +import ervu_dashboard.ervu_dashboard.db_beans.appeals.tables.records.MainProfileRecord; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.PubRecruitment.PubRecruitmentPath; + +import java.sql.Date; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; +import java.util.UUID; + +import org.jooq.Condition; +import org.jooq.Field; +import org.jooq.ForeignKey; +import org.jooq.Identity; +import org.jooq.InverseForeignKey; +import org.jooq.Name; +import org.jooq.Path; +import org.jooq.PlainSQL; +import org.jooq.QueryPart; +import org.jooq.Record; +import org.jooq.SQL; +import org.jooq.Schema; +import org.jooq.Select; +import org.jooq.Stringly; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.TableOptions; +import org.jooq.UniqueKey; +import org.jooq.impl.DSL; +import org.jooq.impl.SQLDataType; +import org.jooq.impl.TableImpl; + + +/** + * Основной профиль уровень РФ + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class MainProfile extends TableImpl { + + private static final long serialVersionUID = 1L; + + /** + * The reference instance of appeals.main_profile + */ + public static final MainProfile MAIN_PROFILE = new MainProfile(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return MainProfileRecord.class; + } + + /** + * The column appeals.main_profile.id_main_profile. + */ + public final TableField ID_MAIN_PROFILE = createField(DSL.name("id_main_profile"), SQLDataType.BIGINT.nullable(false).identity(true), this, ""); + + /** + * The column appeals.main_profile.gender. Пол + */ + public final TableField GENDER = createField(DSL.name("gender"), SQLDataType.CLOB, this, "Пол"); + + /** + * The column appeals.main_profile.age. Возраст + */ + public final TableField AGE = createField(DSL.name("age"), SQLDataType.CLOB, this, "Возраст"); + + /** + * The column appeals.main_profile.child_min_18. Дети до 18 лет + */ + public final TableField CHILD_MIN_18 = createField(DSL.name("child_min_18"), SQLDataType.CLOB, this, "Дети до 18 лет"); + + /** + * The column appeals.main_profile.education. Образование + */ + public final TableField EDUCATION = createField(DSL.name("education"), SQLDataType.CLOB, this, "Образование"); + + /** + * The column appeals.main_profile.employment. Занятость + */ + public final TableField EMPLOYMENT = createField(DSL.name("employment"), SQLDataType.CLOB, this, "Занятость"); + + /** + * The column appeals.main_profile.recording_date. Дата записи + */ + public final TableField RECORDING_DATE = createField(DSL.name("recording_date"), SQLDataType.DATE.defaultValue(DSL.field(DSL.raw("now()"), SQLDataType.DATE)), this, "Дата записи"); + + /** + * The column appeals.main_profile.recruitment_id. + */ + public final TableField RECRUITMENT_ID = createField(DSL.name("recruitment_id"), SQLDataType.UUID, this, ""); + + private MainProfile(Name alias, Table aliased) { + this(alias, aliased, (Field[]) null, null); + } + + private MainProfile(Name alias, Table aliased, Field[] parameters, Condition where) { + super(alias, null, aliased, parameters, DSL.comment("Основной профиль уровень РФ"), TableOptions.table(), where); + } + + /** + * Create an aliased appeals.main_profile table reference + */ + public MainProfile(String alias) { + this(DSL.name(alias), MAIN_PROFILE); + } + + /** + * Create an aliased appeals.main_profile table reference + */ + public MainProfile(Name alias) { + this(alias, MAIN_PROFILE); + } + + /** + * Create a appeals.main_profile table reference + */ + public MainProfile() { + this(DSL.name("main_profile"), null); + } + + public MainProfile(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath, MAIN_PROFILE); + } + + /** + * A subtype implementing {@link Path} for simplified path-based joins. + */ + public static class MainProfilePath extends MainProfile implements Path { + public MainProfilePath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath); + } + private MainProfilePath(Name alias, Table aliased) { + super(alias, aliased); + } + + @Override + public MainProfilePath as(String alias) { + return new MainProfilePath(DSL.name(alias), this); + } + + @Override + public MainProfilePath as(Name alias) { + return new MainProfilePath(alias, this); + } + + @Override + public MainProfilePath as(Table alias) { + return new MainProfilePath(alias.getQualifiedName(), this); + } + } + + @Override + public Schema getSchema() { + return aliased() ? null : Appeals.APPEALS; + } + + @Override + public Identity getIdentity() { + return (Identity) super.getIdentity(); + } + + @Override + public UniqueKey getPrimaryKey() { + return Keys.PK_MAIN_PROFILE; + } + + @Override + public List> getReferences() { + return Arrays.asList(Keys.MAIN_PROFILE__MAIN_PROFILE_FK1); + } + + private transient PubRecruitmentPath _pubRecruitment; + + /** + * Get the implicit join path to the public.pub_recruitment + * table. + */ + public PubRecruitmentPath pubRecruitment() { + if (_pubRecruitment == null) + _pubRecruitment = new PubRecruitmentPath(this, Keys.MAIN_PROFILE__MAIN_PROFILE_FK1, null); + + return _pubRecruitment; + } + + @Override + public MainProfile as(String alias) { + return new MainProfile(DSL.name(alias), this); + } + + @Override + public MainProfile as(Name alias) { + return new MainProfile(alias, this); + } + + @Override + public MainProfile as(Table alias) { + return new MainProfile(alias.getQualifiedName(), this); + } + + /** + * Rename this table + */ + @Override + public MainProfile rename(String name) { + return new MainProfile(DSL.name(name), null); + } + + /** + * Rename this table + */ + @Override + public MainProfile rename(Name name) { + return new MainProfile(name, null); + } + + /** + * Rename this table + */ + @Override + public MainProfile rename(Table name) { + return new MainProfile(name.getQualifiedName(), null); + } + + /** + * Create an inline derived table from this table + */ + @Override + public MainProfile where(Condition condition) { + return new MainProfile(getQualifiedName(), aliased() ? this : null, null, condition); + } + + /** + * Create an inline derived table from this table + */ + @Override + public MainProfile where(Collection conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public MainProfile where(Condition... conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public MainProfile where(Field condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public MainProfile where(SQL condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public MainProfile where(@Stringly.SQL String condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public MainProfile where(@Stringly.SQL String condition, Object... binds) { + return where(DSL.condition(condition, binds)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public MainProfile where(@Stringly.SQL String condition, QueryPart... parts) { + return where(DSL.condition(condition, parts)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public MainProfile whereExists(Select select) { + return where(DSL.exists(select)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public MainProfile whereNotExists(Select select) { + return where(DSL.notExists(select)); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/appeals/tables/ReasonsAppeal.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/appeals/tables/ReasonsAppeal.java new file mode 100644 index 0000000..a6f9e0a --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/appeals/tables/ReasonsAppeal.java @@ -0,0 +1,333 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.appeals.tables; + + +import ervu_dashboard.ervu_dashboard.db_beans.appeals.Appeals; +import ervu_dashboard.ervu_dashboard.db_beans.appeals.Keys; +import ervu_dashboard.ervu_dashboard.db_beans.appeals.tables.records.ReasonsAppealRecord; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.PubRecruitment.PubRecruitmentPath; + +import java.math.BigDecimal; +import java.sql.Date; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; +import java.util.UUID; + +import org.jooq.Condition; +import org.jooq.Field; +import org.jooq.ForeignKey; +import org.jooq.Identity; +import org.jooq.InverseForeignKey; +import org.jooq.Name; +import org.jooq.Path; +import org.jooq.PlainSQL; +import org.jooq.QueryPart; +import org.jooq.Record; +import org.jooq.SQL; +import org.jooq.Schema; +import org.jooq.Select; +import org.jooq.Stringly; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.TableOptions; +import org.jooq.UniqueKey; +import org.jooq.impl.DSL; +import org.jooq.impl.SQLDataType; +import org.jooq.impl.TableImpl; + + +/** + * Причины обжалования уровень РФ + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class ReasonsAppeal extends TableImpl { + + private static final long serialVersionUID = 1L; + + /** + * The reference instance of appeals.reasons_appeal + */ + public static final ReasonsAppeal REASONS_APPEAL = new ReasonsAppeal(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return ReasonsAppealRecord.class; + } + + /** + * The column appeals.reasons_appeal.id_reasons_appeal. + */ + public final TableField ID_REASONS_APPEAL = createField(DSL.name("id_reasons_appeal"), SQLDataType.BIGINT.nullable(false).identity(true), this, ""); + + /** + * The column appeals.reasons_appeal.appeal. Обжалования + */ + public final TableField APPEAL = createField(DSL.name("appeal"), SQLDataType.NUMERIC, this, "Обжалования"); + + /** + * The column appeals.reasons_appeal.incorrect_inf. + * Некорректные сведения + */ + public final TableField INCORRECT_INF = createField(DSL.name("incorrect_inf"), SQLDataType.NUMERIC, this, "Некорректные сведения"); + + /** + * The column appeals.reasons_appeal.no_data. Нет данных + */ + public final TableField NO_DATA = createField(DSL.name("no_data"), SQLDataType.NUMERIC, this, "Нет данных"); + + /** + * The column appeals.reasons_appeal.other. Прочее + */ + public final TableField OTHER = createField(DSL.name("other"), SQLDataType.NUMERIC, this, "Прочее"); + + /** + * The column appeals.reasons_appeal.recording_date. Дата + * записи + */ + public final TableField RECORDING_DATE = createField(DSL.name("recording_date"), SQLDataType.DATE.defaultValue(DSL.field(DSL.raw("now()"), SQLDataType.DATE)), this, "Дата записи"); + + /** + * The column appeals.reasons_appeal.incorrect_inf_percent. + * Некорректные сведения в процентах + */ + public final TableField INCORRECT_INF_PERCENT = createField(DSL.name("incorrect_inf_percent"), SQLDataType.NUMERIC, this, "Некорректные сведения в процентах"); + + /** + * The column appeals.reasons_appeal.no_data_percent. Нет + * данных в процентах + */ + public final TableField NO_DATA_PERCENT = createField(DSL.name("no_data_percent"), SQLDataType.NUMERIC, this, "Нет данных в процентах"); + + /** + * The column appeals.reasons_appeal.other_percent. Прочее в + * процентах + */ + public final TableField OTHER_PERCENT = createField(DSL.name("other_percent"), SQLDataType.NUMERIC, this, "Прочее в процентах"); + + /** + * The column appeals.reasons_appeal.recruitment_id. + */ + public final TableField RECRUITMENT_ID = createField(DSL.name("recruitment_id"), SQLDataType.UUID, this, ""); + + private ReasonsAppeal(Name alias, Table aliased) { + this(alias, aliased, (Field[]) null, null); + } + + private ReasonsAppeal(Name alias, Table aliased, Field[] parameters, Condition where) { + super(alias, null, aliased, parameters, DSL.comment("Причины обжалования уровень РФ"), TableOptions.table(), where); + } + + /** + * Create an aliased appeals.reasons_appeal table reference + */ + public ReasonsAppeal(String alias) { + this(DSL.name(alias), REASONS_APPEAL); + } + + /** + * Create an aliased appeals.reasons_appeal table reference + */ + public ReasonsAppeal(Name alias) { + this(alias, REASONS_APPEAL); + } + + /** + * Create a appeals.reasons_appeal table reference + */ + public ReasonsAppeal() { + this(DSL.name("reasons_appeal"), null); + } + + public ReasonsAppeal(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath, REASONS_APPEAL); + } + + /** + * A subtype implementing {@link Path} for simplified path-based joins. + */ + public static class ReasonsAppealPath extends ReasonsAppeal implements Path { + public ReasonsAppealPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath); + } + private ReasonsAppealPath(Name alias, Table aliased) { + super(alias, aliased); + } + + @Override + public ReasonsAppealPath as(String alias) { + return new ReasonsAppealPath(DSL.name(alias), this); + } + + @Override + public ReasonsAppealPath as(Name alias) { + return new ReasonsAppealPath(alias, this); + } + + @Override + public ReasonsAppealPath as(Table alias) { + return new ReasonsAppealPath(alias.getQualifiedName(), this); + } + } + + @Override + public Schema getSchema() { + return aliased() ? null : Appeals.APPEALS; + } + + @Override + public Identity getIdentity() { + return (Identity) super.getIdentity(); + } + + @Override + public UniqueKey getPrimaryKey() { + return Keys.PK_REASONS_APPEAL; + } + + @Override + public List> getReferences() { + return Arrays.asList(Keys.REASONS_APPEAL__REASONS_APPEAL_FK1); + } + + private transient PubRecruitmentPath _pubRecruitment; + + /** + * Get the implicit join path to the public.pub_recruitment + * table. + */ + public PubRecruitmentPath pubRecruitment() { + if (_pubRecruitment == null) + _pubRecruitment = new PubRecruitmentPath(this, Keys.REASONS_APPEAL__REASONS_APPEAL_FK1, null); + + return _pubRecruitment; + } + + @Override + public ReasonsAppeal as(String alias) { + return new ReasonsAppeal(DSL.name(alias), this); + } + + @Override + public ReasonsAppeal as(Name alias) { + return new ReasonsAppeal(alias, this); + } + + @Override + public ReasonsAppeal as(Table alias) { + return new ReasonsAppeal(alias.getQualifiedName(), this); + } + + /** + * Rename this table + */ + @Override + public ReasonsAppeal rename(String name) { + return new ReasonsAppeal(DSL.name(name), null); + } + + /** + * Rename this table + */ + @Override + public ReasonsAppeal rename(Name name) { + return new ReasonsAppeal(name, null); + } + + /** + * Rename this table + */ + @Override + public ReasonsAppeal rename(Table name) { + return new ReasonsAppeal(name.getQualifiedName(), null); + } + + /** + * Create an inline derived table from this table + */ + @Override + public ReasonsAppeal where(Condition condition) { + return new ReasonsAppeal(getQualifiedName(), aliased() ? this : null, null, condition); + } + + /** + * Create an inline derived table from this table + */ + @Override + public ReasonsAppeal where(Collection conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public ReasonsAppeal where(Condition... conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public ReasonsAppeal where(Field condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public ReasonsAppeal where(SQL condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public ReasonsAppeal where(@Stringly.SQL String condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public ReasonsAppeal where(@Stringly.SQL String condition, Object... binds) { + return where(DSL.condition(condition, binds)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public ReasonsAppeal where(@Stringly.SQL String condition, QueryPart... parts) { + return where(DSL.condition(condition, parts)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public ReasonsAppeal whereExists(Select select) { + return where(DSL.exists(select)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public ReasonsAppeal whereNotExists(Select select) { + return where(DSL.notExists(select)); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/appeals/tables/ReviewRating.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/appeals/tables/ReviewRating.java new file mode 100644 index 0000000..6768665 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/appeals/tables/ReviewRating.java @@ -0,0 +1,323 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.appeals.tables; + + +import ervu_dashboard.ervu_dashboard.db_beans.appeals.Appeals; +import ervu_dashboard.ervu_dashboard.db_beans.appeals.Keys; +import ervu_dashboard.ervu_dashboard.db_beans.appeals.tables.records.ReviewRatingRecord; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.PubRecruitment.PubRecruitmentPath; +import ervu_dashboard.ervu_dashboard.db_beans.space.tables.Region.RegionPath; + +import java.math.BigDecimal; +import java.sql.Date; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; +import java.util.UUID; + +import org.jooq.Condition; +import org.jooq.Field; +import org.jooq.ForeignKey; +import org.jooq.Identity; +import org.jooq.InverseForeignKey; +import org.jooq.Name; +import org.jooq.Path; +import org.jooq.PlainSQL; +import org.jooq.QueryPart; +import org.jooq.Record; +import org.jooq.SQL; +import org.jooq.Schema; +import org.jooq.Select; +import org.jooq.Stringly; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.TableOptions; +import org.jooq.UniqueKey; +import org.jooq.impl.DSL; +import org.jooq.impl.SQLDataType; +import org.jooq.impl.TableImpl; + + +/** + * Рейтинг рассмотрения жалоб уровень РФ + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class ReviewRating extends TableImpl { + + private static final long serialVersionUID = 1L; + + /** + * The reference instance of appeals.review_rating + */ + public static final ReviewRating REVIEW_RATING = new ReviewRating(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return ReviewRatingRecord.class; + } + + /** + * The column appeals.review_rating.id_review_rating. + */ + public final TableField ID_REVIEW_RATING = createField(DSL.name("id_review_rating"), SQLDataType.BIGINT.nullable(false).identity(true), this, ""); + + /** + * The column appeals.review_rating.speed. Скорость + * рассмотрения + */ + public final TableField SPEED = createField(DSL.name("speed"), SQLDataType.NUMERIC, this, "Скорость рассмотрения"); + + /** + * The column appeals.review_rating.rating. Оценка + * удовлетворенности + */ + public final TableField RATING = createField(DSL.name("rating"), SQLDataType.NUMERIC, this, "Оценка удовлетворенности"); + + /** + * The column appeals.review_rating.recording_date. Дата записи + */ + public final TableField RECORDING_DATE = createField(DSL.name("recording_date"), SQLDataType.DATE.defaultValue(DSL.field(DSL.raw("now()"), SQLDataType.DATE)), this, "Дата записи"); + + /** + * The column appeals.review_rating.id_region. + */ + public final TableField ID_REGION = createField(DSL.name("id_region"), SQLDataType.BIGINT, this, ""); + + /** + * The column appeals.review_rating.recruitment_id. + */ + public final TableField RECRUITMENT_ID = createField(DSL.name("recruitment_id"), SQLDataType.UUID, this, ""); + + private ReviewRating(Name alias, Table aliased) { + this(alias, aliased, (Field[]) null, null); + } + + private ReviewRating(Name alias, Table aliased, Field[] parameters, Condition where) { + super(alias, null, aliased, parameters, DSL.comment("Рейтинг рассмотрения жалоб уровень РФ"), TableOptions.table(), where); + } + + /** + * Create an aliased appeals.review_rating table reference + */ + public ReviewRating(String alias) { + this(DSL.name(alias), REVIEW_RATING); + } + + /** + * Create an aliased appeals.review_rating table reference + */ + public ReviewRating(Name alias) { + this(alias, REVIEW_RATING); + } + + /** + * Create a appeals.review_rating table reference + */ + public ReviewRating() { + this(DSL.name("review_rating"), null); + } + + public ReviewRating(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath, REVIEW_RATING); + } + + /** + * A subtype implementing {@link Path} for simplified path-based joins. + */ + public static class ReviewRatingPath extends ReviewRating implements Path { + public ReviewRatingPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath); + } + private ReviewRatingPath(Name alias, Table aliased) { + super(alias, aliased); + } + + @Override + public ReviewRatingPath as(String alias) { + return new ReviewRatingPath(DSL.name(alias), this); + } + + @Override + public ReviewRatingPath as(Name alias) { + return new ReviewRatingPath(alias, this); + } + + @Override + public ReviewRatingPath as(Table alias) { + return new ReviewRatingPath(alias.getQualifiedName(), this); + } + } + + @Override + public Schema getSchema() { + return aliased() ? null : Appeals.APPEALS; + } + + @Override + public Identity getIdentity() { + return (Identity) super.getIdentity(); + } + + @Override + public UniqueKey getPrimaryKey() { + return Keys.PK_REVIEW_RATING; + } + + @Override + public List> getReferences() { + return Arrays.asList(Keys.REVIEW_RATING__FK_REGION, Keys.REVIEW_RATING__REVIEW_RATING_FK1); + } + + private transient RegionPath _region; + + /** + * Get the implicit join path to the space.region table. + */ + public RegionPath region() { + if (_region == null) + _region = new RegionPath(this, Keys.REVIEW_RATING__FK_REGION, null); + + return _region; + } + + private transient PubRecruitmentPath _pubRecruitment; + + /** + * Get the implicit join path to the public.pub_recruitment + * table. + */ + public PubRecruitmentPath pubRecruitment() { + if (_pubRecruitment == null) + _pubRecruitment = new PubRecruitmentPath(this, Keys.REVIEW_RATING__REVIEW_RATING_FK1, null); + + return _pubRecruitment; + } + + @Override + public ReviewRating as(String alias) { + return new ReviewRating(DSL.name(alias), this); + } + + @Override + public ReviewRating as(Name alias) { + return new ReviewRating(alias, this); + } + + @Override + public ReviewRating as(Table alias) { + return new ReviewRating(alias.getQualifiedName(), this); + } + + /** + * Rename this table + */ + @Override + public ReviewRating rename(String name) { + return new ReviewRating(DSL.name(name), null); + } + + /** + * Rename this table + */ + @Override + public ReviewRating rename(Name name) { + return new ReviewRating(name, null); + } + + /** + * Rename this table + */ + @Override + public ReviewRating rename(Table name) { + return new ReviewRating(name.getQualifiedName(), null); + } + + /** + * Create an inline derived table from this table + */ + @Override + public ReviewRating where(Condition condition) { + return new ReviewRating(getQualifiedName(), aliased() ? this : null, null, condition); + } + + /** + * Create an inline derived table from this table + */ + @Override + public ReviewRating where(Collection conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public ReviewRating where(Condition... conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public ReviewRating where(Field condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public ReviewRating where(SQL condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public ReviewRating where(@Stringly.SQL String condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public ReviewRating where(@Stringly.SQL String condition, Object... binds) { + return where(DSL.condition(condition, binds)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public ReviewRating where(@Stringly.SQL String condition, QueryPart... parts) { + return where(DSL.condition(condition, parts)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public ReviewRating whereExists(Select select) { + return where(DSL.exists(select)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public ReviewRating whereNotExists(Select select) { + return where(DSL.notExists(select)); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/appeals/tables/TopicAppeal.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/appeals/tables/TopicAppeal.java new file mode 100644 index 0000000..cdedef0 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/appeals/tables/TopicAppeal.java @@ -0,0 +1,341 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.appeals.tables; + + +import ervu_dashboard.ervu_dashboard.db_beans.appeals.Appeals; +import ervu_dashboard.ervu_dashboard.db_beans.appeals.Keys; +import ervu_dashboard.ervu_dashboard.db_beans.appeals.tables.records.TopicAppealRecord; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.PubRecruitment.PubRecruitmentPath; + +import java.math.BigDecimal; +import java.sql.Date; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; +import java.util.UUID; + +import org.jooq.Condition; +import org.jooq.Field; +import org.jooq.ForeignKey; +import org.jooq.Identity; +import org.jooq.InverseForeignKey; +import org.jooq.Name; +import org.jooq.Path; +import org.jooq.PlainSQL; +import org.jooq.QueryPart; +import org.jooq.Record; +import org.jooq.SQL; +import org.jooq.Schema; +import org.jooq.Select; +import org.jooq.Stringly; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.TableOptions; +import org.jooq.UniqueKey; +import org.jooq.impl.DSL; +import org.jooq.impl.SQLDataType; +import org.jooq.impl.TableImpl; + + +/** + * Тема обжалования уровень РФ + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class TopicAppeal extends TableImpl { + + private static final long serialVersionUID = 1L; + + /** + * The reference instance of appeals.topic_appeal + */ + public static final TopicAppeal TOPIC_APPEAL = new TopicAppeal(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return TopicAppealRecord.class; + } + + /** + * The column appeals.topic_appeal.id_topic_appeal. + */ + public final TableField ID_TOPIC_APPEAL = createField(DSL.name("id_topic_appeal"), SQLDataType.BIGINT.nullable(false).identity(true), this, ""); + + /** + * The column appeals.topic_appeal.registration. Тема + * обжалования постановка на учет + */ + public final TableField REGISTRATION = createField(DSL.name("registration"), SQLDataType.NUMERIC, this, "Тема обжалования постановка на учет"); + + /** + * The column appeals.topic_appeal.sabpoena. Тема обжалования + * повестки + */ + public final TableField SABPOENA = createField(DSL.name("sabpoena"), SQLDataType.NUMERIC, this, "Тема обжалования повестки"); + + /** + * The column appeals.topic_appeal.appear. Тема обжалования + * явка + */ + public final TableField APPEAR = createField(DSL.name("appear"), SQLDataType.NUMERIC, this, "Тема обжалования явка"); + + /** + * The column appeals.topic_appeal.temporary_measures. Тема + * обжалования временные меры + */ + public final TableField TEMPORARY_MEASURES = createField(DSL.name("temporary_measures"), SQLDataType.NUMERIC, this, "Тема обжалования временные меры"); + + /** + * The column appeals.topic_appeal.recording_date. Дата записи + */ + public final TableField RECORDING_DATE = createField(DSL.name("recording_date"), SQLDataType.DATE.defaultValue(DSL.field(DSL.raw("now()"), SQLDataType.DATE)), this, "Дата записи"); + + /** + * The column appeals.topic_appeal.registration_percent. Тема + * обжалования постановка на учет в процентах + */ + public final TableField REGISTRATION_PERCENT = createField(DSL.name("registration_percent"), SQLDataType.NUMERIC, this, "Тема обжалования постановка на учет в процентах"); + + /** + * The column appeals.topic_appeal.sabpoena_percent. Тема + * обжалования повестки в процентах + */ + public final TableField SABPOENA_PERCENT = createField(DSL.name("sabpoena_percent"), SQLDataType.NUMERIC, this, "Тема обжалования повестки в процентах"); + + /** + * The column appeals.topic_appeal.appear_percent. Тема + * обжалования явка в процентах + */ + public final TableField APPEAR_PERCENT = createField(DSL.name("appear_percent"), SQLDataType.NUMERIC, this, "Тема обжалования явка в процентах"); + + /** + * The column appeals.topic_appeal.temporary_measures_percent. + * Тема обжалования временные меры в процентах + */ + public final TableField TEMPORARY_MEASURES_PERCENT = createField(DSL.name("temporary_measures_percent"), SQLDataType.NUMERIC, this, "Тема обжалования временные меры в процентах"); + + /** + * The column appeals.topic_appeal.recruitment_id. + */ + public final TableField RECRUITMENT_ID = createField(DSL.name("recruitment_id"), SQLDataType.UUID, this, ""); + + private TopicAppeal(Name alias, Table aliased) { + this(alias, aliased, (Field[]) null, null); + } + + private TopicAppeal(Name alias, Table aliased, Field[] parameters, Condition where) { + super(alias, null, aliased, parameters, DSL.comment("Тема обжалования уровень РФ"), TableOptions.table(), where); + } + + /** + * Create an aliased appeals.topic_appeal table reference + */ + public TopicAppeal(String alias) { + this(DSL.name(alias), TOPIC_APPEAL); + } + + /** + * Create an aliased appeals.topic_appeal table reference + */ + public TopicAppeal(Name alias) { + this(alias, TOPIC_APPEAL); + } + + /** + * Create a appeals.topic_appeal table reference + */ + public TopicAppeal() { + this(DSL.name("topic_appeal"), null); + } + + public TopicAppeal(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath, TOPIC_APPEAL); + } + + /** + * A subtype implementing {@link Path} for simplified path-based joins. + */ + public static class TopicAppealPath extends TopicAppeal implements Path { + public TopicAppealPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath); + } + private TopicAppealPath(Name alias, Table aliased) { + super(alias, aliased); + } + + @Override + public TopicAppealPath as(String alias) { + return new TopicAppealPath(DSL.name(alias), this); + } + + @Override + public TopicAppealPath as(Name alias) { + return new TopicAppealPath(alias, this); + } + + @Override + public TopicAppealPath as(Table alias) { + return new TopicAppealPath(alias.getQualifiedName(), this); + } + } + + @Override + public Schema getSchema() { + return aliased() ? null : Appeals.APPEALS; + } + + @Override + public Identity getIdentity() { + return (Identity) super.getIdentity(); + } + + @Override + public UniqueKey getPrimaryKey() { + return Keys.PK_TOPIC_APPEAL; + } + + @Override + public List> getReferences() { + return Arrays.asList(Keys.TOPIC_APPEAL__TOPIC_APPEAL_FK1); + } + + private transient PubRecruitmentPath _pubRecruitment; + + /** + * Get the implicit join path to the public.pub_recruitment + * table. + */ + public PubRecruitmentPath pubRecruitment() { + if (_pubRecruitment == null) + _pubRecruitment = new PubRecruitmentPath(this, Keys.TOPIC_APPEAL__TOPIC_APPEAL_FK1, null); + + return _pubRecruitment; + } + + @Override + public TopicAppeal as(String alias) { + return new TopicAppeal(DSL.name(alias), this); + } + + @Override + public TopicAppeal as(Name alias) { + return new TopicAppeal(alias, this); + } + + @Override + public TopicAppeal as(Table alias) { + return new TopicAppeal(alias.getQualifiedName(), this); + } + + /** + * Rename this table + */ + @Override + public TopicAppeal rename(String name) { + return new TopicAppeal(DSL.name(name), null); + } + + /** + * Rename this table + */ + @Override + public TopicAppeal rename(Name name) { + return new TopicAppeal(name, null); + } + + /** + * Rename this table + */ + @Override + public TopicAppeal rename(Table name) { + return new TopicAppeal(name.getQualifiedName(), null); + } + + /** + * Create an inline derived table from this table + */ + @Override + public TopicAppeal where(Condition condition) { + return new TopicAppeal(getQualifiedName(), aliased() ? this : null, null, condition); + } + + /** + * Create an inline derived table from this table + */ + @Override + public TopicAppeal where(Collection conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public TopicAppeal where(Condition... conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public TopicAppeal where(Field condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public TopicAppeal where(SQL condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public TopicAppeal where(@Stringly.SQL String condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public TopicAppeal where(@Stringly.SQL String condition, Object... binds) { + return where(DSL.condition(condition, binds)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public TopicAppeal where(@Stringly.SQL String condition, QueryPart... parts) { + return where(DSL.condition(condition, parts)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public TopicAppeal whereExists(Select select) { + return where(DSL.exists(select)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public TopicAppeal whereNotExists(Select select) { + return where(DSL.notExists(select)); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/appeals/tables/records/MainProfileRecord.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/appeals/tables/records/MainProfileRecord.java new file mode 100644 index 0000000..12e6a9a --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/appeals/tables/records/MainProfileRecord.java @@ -0,0 +1,172 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.appeals.tables.records; + + +import ervu_dashboard.ervu_dashboard.db_beans.appeals.tables.MainProfile; + +import java.sql.Date; +import java.util.UUID; + +import org.jooq.Record1; +import org.jooq.impl.UpdatableRecordImpl; + + +/** + * Основной профиль уровень РФ + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class MainProfileRecord extends UpdatableRecordImpl { + + private static final long serialVersionUID = 1L; + + /** + * Setter for appeals.main_profile.id_main_profile. + */ + public void setIdMainProfile(Long value) { + set(0, value); + } + + /** + * Getter for appeals.main_profile.id_main_profile. + */ + public Long getIdMainProfile() { + return (Long) get(0); + } + + /** + * Setter for appeals.main_profile.gender. Пол + */ + public void setGender(String value) { + set(1, value); + } + + /** + * Getter for appeals.main_profile.gender. Пол + */ + public String getGender() { + return (String) get(1); + } + + /** + * Setter for appeals.main_profile.age. Возраст + */ + public void setAge(String value) { + set(2, value); + } + + /** + * Getter for appeals.main_profile.age. Возраст + */ + public String getAge() { + return (String) get(2); + } + + /** + * Setter for appeals.main_profile.child_min_18. Дети до 18 лет + */ + public void setChildMin_18(String value) { + set(3, value); + } + + /** + * Getter for appeals.main_profile.child_min_18. Дети до 18 лет + */ + public String getChildMin_18() { + return (String) get(3); + } + + /** + * Setter for appeals.main_profile.education. Образование + */ + public void setEducation(String value) { + set(4, value); + } + + /** + * Getter for appeals.main_profile.education. Образование + */ + public String getEducation() { + return (String) get(4); + } + + /** + * Setter for appeals.main_profile.employment. Занятость + */ + public void setEmployment(String value) { + set(5, value); + } + + /** + * Getter for appeals.main_profile.employment. Занятость + */ + public String getEmployment() { + return (String) get(5); + } + + /** + * Setter for appeals.main_profile.recording_date. Дата записи + */ + public void setRecordingDate(Date value) { + set(6, value); + } + + /** + * Getter for appeals.main_profile.recording_date. Дата записи + */ + public Date getRecordingDate() { + return (Date) get(6); + } + + /** + * Setter for appeals.main_profile.recruitment_id. + */ + public void setRecruitmentId(UUID value) { + set(7, value); + } + + /** + * Getter for appeals.main_profile.recruitment_id. + */ + public UUID getRecruitmentId() { + return (UUID) get(7); + } + + // ------------------------------------------------------------------------- + // Primary key information + // ------------------------------------------------------------------------- + + @Override + public Record1 key() { + return (Record1) super.key(); + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached MainProfileRecord + */ + public MainProfileRecord() { + super(MainProfile.MAIN_PROFILE); + } + + /** + * Create a detached, initialised MainProfileRecord + */ + public MainProfileRecord(Long idMainProfile, String gender, String age, String childMin_18, String education, String employment, Date recordingDate, UUID recruitmentId) { + super(MainProfile.MAIN_PROFILE); + + setIdMainProfile(idMainProfile); + setGender(gender); + setAge(age); + setChildMin_18(childMin_18); + setEducation(education); + setEmployment(employment); + setRecordingDate(recordingDate); + setRecruitmentId(recruitmentId); + resetChangedOnNotNull(); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/appeals/tables/records/ReasonsAppealRecord.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/appeals/tables/records/ReasonsAppealRecord.java new file mode 100644 index 0000000..6d177b6 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/appeals/tables/records/ReasonsAppealRecord.java @@ -0,0 +1,213 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.appeals.tables.records; + + +import ervu_dashboard.ervu_dashboard.db_beans.appeals.tables.ReasonsAppeal; + +import java.math.BigDecimal; +import java.sql.Date; +import java.util.UUID; + +import org.jooq.Record1; +import org.jooq.impl.UpdatableRecordImpl; + + +/** + * Причины обжалования уровень РФ + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class ReasonsAppealRecord extends UpdatableRecordImpl { + + private static final long serialVersionUID = 1L; + + /** + * Setter for appeals.reasons_appeal.id_reasons_appeal. + */ + public void setIdReasonsAppeal(Long value) { + set(0, value); + } + + /** + * Getter for appeals.reasons_appeal.id_reasons_appeal. + */ + public Long getIdReasonsAppeal() { + return (Long) get(0); + } + + /** + * Setter for appeals.reasons_appeal.appeal. Обжалования + */ + public void setAppeal(BigDecimal value) { + set(1, value); + } + + /** + * Getter for appeals.reasons_appeal.appeal. Обжалования + */ + public BigDecimal getAppeal() { + return (BigDecimal) get(1); + } + + /** + * Setter for appeals.reasons_appeal.incorrect_inf. + * Некорректные сведения + */ + public void setIncorrectInf(BigDecimal value) { + set(2, value); + } + + /** + * Getter for appeals.reasons_appeal.incorrect_inf. + * Некорректные сведения + */ + public BigDecimal getIncorrectInf() { + return (BigDecimal) get(2); + } + + /** + * Setter for appeals.reasons_appeal.no_data. Нет данных + */ + public void setNoData(BigDecimal value) { + set(3, value); + } + + /** + * Getter for appeals.reasons_appeal.no_data. Нет данных + */ + public BigDecimal getNoData() { + return (BigDecimal) get(3); + } + + /** + * Setter for appeals.reasons_appeal.other. Прочее + */ + public void setOther(BigDecimal value) { + set(4, value); + } + + /** + * Getter for appeals.reasons_appeal.other. Прочее + */ + public BigDecimal getOther() { + return (BigDecimal) get(4); + } + + /** + * Setter for appeals.reasons_appeal.recording_date. Дата + * записи + */ + public void setRecordingDate(Date value) { + set(5, value); + } + + /** + * Getter for appeals.reasons_appeal.recording_date. Дата + * записи + */ + public Date getRecordingDate() { + return (Date) get(5); + } + + /** + * Setter for appeals.reasons_appeal.incorrect_inf_percent. + * Некорректные сведения в процентах + */ + public void setIncorrectInfPercent(BigDecimal value) { + set(6, value); + } + + /** + * Getter for appeals.reasons_appeal.incorrect_inf_percent. + * Некорректные сведения в процентах + */ + public BigDecimal getIncorrectInfPercent() { + return (BigDecimal) get(6); + } + + /** + * Setter for appeals.reasons_appeal.no_data_percent. Нет + * данных в процентах + */ + public void setNoDataPercent(BigDecimal value) { + set(7, value); + } + + /** + * Getter for appeals.reasons_appeal.no_data_percent. Нет + * данных в процентах + */ + public BigDecimal getNoDataPercent() { + return (BigDecimal) get(7); + } + + /** + * Setter for appeals.reasons_appeal.other_percent. Прочее в + * процентах + */ + public void setOtherPercent(BigDecimal value) { + set(8, value); + } + + /** + * Getter for appeals.reasons_appeal.other_percent. Прочее в + * процентах + */ + public BigDecimal getOtherPercent() { + return (BigDecimal) get(8); + } + + /** + * Setter for appeals.reasons_appeal.recruitment_id. + */ + public void setRecruitmentId(UUID value) { + set(9, value); + } + + /** + * Getter for appeals.reasons_appeal.recruitment_id. + */ + public UUID getRecruitmentId() { + return (UUID) get(9); + } + + // ------------------------------------------------------------------------- + // Primary key information + // ------------------------------------------------------------------------- + + @Override + public Record1 key() { + return (Record1) super.key(); + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached ReasonsAppealRecord + */ + public ReasonsAppealRecord() { + super(ReasonsAppeal.REASONS_APPEAL); + } + + /** + * Create a detached, initialised ReasonsAppealRecord + */ + public ReasonsAppealRecord(Long idReasonsAppeal, BigDecimal appeal, BigDecimal incorrectInf, BigDecimal noData, BigDecimal other, Date recordingDate, BigDecimal incorrectInfPercent, BigDecimal noDataPercent, BigDecimal otherPercent, UUID recruitmentId) { + super(ReasonsAppeal.REASONS_APPEAL); + + setIdReasonsAppeal(idReasonsAppeal); + setAppeal(appeal); + setIncorrectInf(incorrectInf); + setNoData(noData); + setOther(other); + setRecordingDate(recordingDate); + setIncorrectInfPercent(incorrectInfPercent); + setNoDataPercent(noDataPercent); + setOtherPercent(otherPercent); + setRecruitmentId(recruitmentId); + resetChangedOnNotNull(); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/appeals/tables/records/ReviewRatingRecord.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/appeals/tables/records/ReviewRatingRecord.java new file mode 100644 index 0000000..d51faea --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/appeals/tables/records/ReviewRatingRecord.java @@ -0,0 +1,147 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.appeals.tables.records; + + +import ervu_dashboard.ervu_dashboard.db_beans.appeals.tables.ReviewRating; + +import java.math.BigDecimal; +import java.sql.Date; +import java.util.UUID; + +import org.jooq.Record1; +import org.jooq.impl.UpdatableRecordImpl; + + +/** + * Рейтинг рассмотрения жалоб уровень РФ + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class ReviewRatingRecord extends UpdatableRecordImpl { + + private static final long serialVersionUID = 1L; + + /** + * Setter for appeals.review_rating.id_review_rating. + */ + public void setIdReviewRating(Long value) { + set(0, value); + } + + /** + * Getter for appeals.review_rating.id_review_rating. + */ + public Long getIdReviewRating() { + return (Long) get(0); + } + + /** + * Setter for appeals.review_rating.speed. Скорость + * рассмотрения + */ + public void setSpeed(BigDecimal value) { + set(1, value); + } + + /** + * Getter for appeals.review_rating.speed. Скорость + * рассмотрения + */ + public BigDecimal getSpeed() { + return (BigDecimal) get(1); + } + + /** + * Setter for appeals.review_rating.rating. Оценка + * удовлетворенности + */ + public void setRating(BigDecimal value) { + set(2, value); + } + + /** + * Getter for appeals.review_rating.rating. Оценка + * удовлетворенности + */ + public BigDecimal getRating() { + return (BigDecimal) get(2); + } + + /** + * Setter for appeals.review_rating.recording_date. Дата записи + */ + public void setRecordingDate(Date value) { + set(3, value); + } + + /** + * Getter for appeals.review_rating.recording_date. Дата записи + */ + public Date getRecordingDate() { + return (Date) get(3); + } + + /** + * Setter for appeals.review_rating.id_region. + */ + public void setIdRegion(Long value) { + set(4, value); + } + + /** + * Getter for appeals.review_rating.id_region. + */ + public Long getIdRegion() { + return (Long) get(4); + } + + /** + * Setter for appeals.review_rating.recruitment_id. + */ + public void setRecruitmentId(UUID value) { + set(5, value); + } + + /** + * Getter for appeals.review_rating.recruitment_id. + */ + public UUID getRecruitmentId() { + return (UUID) get(5); + } + + // ------------------------------------------------------------------------- + // Primary key information + // ------------------------------------------------------------------------- + + @Override + public Record1 key() { + return (Record1) super.key(); + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached ReviewRatingRecord + */ + public ReviewRatingRecord() { + super(ReviewRating.REVIEW_RATING); + } + + /** + * Create a detached, initialised ReviewRatingRecord + */ + public ReviewRatingRecord(Long idReviewRating, BigDecimal speed, BigDecimal rating, Date recordingDate, Long idRegion, UUID recruitmentId) { + super(ReviewRating.REVIEW_RATING); + + setIdReviewRating(idReviewRating); + setSpeed(speed); + setRating(rating); + setRecordingDate(recordingDate); + setIdRegion(idRegion); + setRecruitmentId(recruitmentId); + resetChangedOnNotNull(); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/appeals/tables/records/TopicAppealRecord.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/appeals/tables/records/TopicAppealRecord.java new file mode 100644 index 0000000..677c11a --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/appeals/tables/records/TopicAppealRecord.java @@ -0,0 +1,234 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.appeals.tables.records; + + +import ervu_dashboard.ervu_dashboard.db_beans.appeals.tables.TopicAppeal; + +import java.math.BigDecimal; +import java.sql.Date; +import java.util.UUID; + +import org.jooq.Record1; +import org.jooq.impl.UpdatableRecordImpl; + + +/** + * Тема обжалования уровень РФ + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class TopicAppealRecord extends UpdatableRecordImpl { + + private static final long serialVersionUID = 1L; + + /** + * Setter for appeals.topic_appeal.id_topic_appeal. + */ + public void setIdTopicAppeal(Long value) { + set(0, value); + } + + /** + * Getter for appeals.topic_appeal.id_topic_appeal. + */ + public Long getIdTopicAppeal() { + return (Long) get(0); + } + + /** + * Setter for appeals.topic_appeal.registration. Тема + * обжалования постановка на учет + */ + public void setRegistration(BigDecimal value) { + set(1, value); + } + + /** + * Getter for appeals.topic_appeal.registration. Тема + * обжалования постановка на учет + */ + public BigDecimal getRegistration() { + return (BigDecimal) get(1); + } + + /** + * Setter for appeals.topic_appeal.sabpoena. Тема обжалования + * повестки + */ + public void setSabpoena(BigDecimal value) { + set(2, value); + } + + /** + * Getter for appeals.topic_appeal.sabpoena. Тема обжалования + * повестки + */ + public BigDecimal getSabpoena() { + return (BigDecimal) get(2); + } + + /** + * Setter for appeals.topic_appeal.appear. Тема обжалования + * явка + */ + public void setAppear(BigDecimal value) { + set(3, value); + } + + /** + * Getter for appeals.topic_appeal.appear. Тема обжалования + * явка + */ + public BigDecimal getAppear() { + return (BigDecimal) get(3); + } + + /** + * Setter for appeals.topic_appeal.temporary_measures. Тема + * обжалования временные меры + */ + public void setTemporaryMeasures(BigDecimal value) { + set(4, value); + } + + /** + * Getter for appeals.topic_appeal.temporary_measures. Тема + * обжалования временные меры + */ + public BigDecimal getTemporaryMeasures() { + return (BigDecimal) get(4); + } + + /** + * Setter for appeals.topic_appeal.recording_date. Дата записи + */ + public void setRecordingDate(Date value) { + set(5, value); + } + + /** + * Getter for appeals.topic_appeal.recording_date. Дата записи + */ + public Date getRecordingDate() { + return (Date) get(5); + } + + /** + * Setter for appeals.topic_appeal.registration_percent. Тема + * обжалования постановка на учет в процентах + */ + public void setRegistrationPercent(BigDecimal value) { + set(6, value); + } + + /** + * Getter for appeals.topic_appeal.registration_percent. Тема + * обжалования постановка на учет в процентах + */ + public BigDecimal getRegistrationPercent() { + return (BigDecimal) get(6); + } + + /** + * Setter for appeals.topic_appeal.sabpoena_percent. Тема + * обжалования повестки в процентах + */ + public void setSabpoenaPercent(BigDecimal value) { + set(7, value); + } + + /** + * Getter for appeals.topic_appeal.sabpoena_percent. Тема + * обжалования повестки в процентах + */ + public BigDecimal getSabpoenaPercent() { + return (BigDecimal) get(7); + } + + /** + * Setter for appeals.topic_appeal.appear_percent. Тема + * обжалования явка в процентах + */ + public void setAppearPercent(BigDecimal value) { + set(8, value); + } + + /** + * Getter for appeals.topic_appeal.appear_percent. Тема + * обжалования явка в процентах + */ + public BigDecimal getAppearPercent() { + return (BigDecimal) get(8); + } + + /** + * Setter for appeals.topic_appeal.temporary_measures_percent. + * Тема обжалования временные меры в процентах + */ + public void setTemporaryMeasuresPercent(BigDecimal value) { + set(9, value); + } + + /** + * Getter for appeals.topic_appeal.temporary_measures_percent. + * Тема обжалования временные меры в процентах + */ + public BigDecimal getTemporaryMeasuresPercent() { + return (BigDecimal) get(9); + } + + /** + * Setter for appeals.topic_appeal.recruitment_id. + */ + public void setRecruitmentId(UUID value) { + set(10, value); + } + + /** + * Getter for appeals.topic_appeal.recruitment_id. + */ + public UUID getRecruitmentId() { + return (UUID) get(10); + } + + // ------------------------------------------------------------------------- + // Primary key information + // ------------------------------------------------------------------------- + + @Override + public Record1 key() { + return (Record1) super.key(); + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached TopicAppealRecord + */ + public TopicAppealRecord() { + super(TopicAppeal.TOPIC_APPEAL); + } + + /** + * Create a detached, initialised TopicAppealRecord + */ + public TopicAppealRecord(Long idTopicAppeal, BigDecimal registration, BigDecimal sabpoena, BigDecimal appear, BigDecimal temporaryMeasures, Date recordingDate, BigDecimal registrationPercent, BigDecimal sabpoenaPercent, BigDecimal appearPercent, BigDecimal temporaryMeasuresPercent, UUID recruitmentId) { + super(TopicAppeal.TOPIC_APPEAL); + + setIdTopicAppeal(idTopicAppeal); + setRegistration(registration); + setSabpoena(sabpoena); + setAppear(appear); + setTemporaryMeasures(temporaryMeasures); + setRecordingDate(recordingDate); + setRegistrationPercent(registrationPercent); + setSabpoenaPercent(sabpoenaPercent); + setAppearPercent(appearPercent); + setTemporaryMeasuresPercent(temporaryMeasuresPercent); + setRecruitmentId(recruitmentId); + resetChangedOnNotNull(); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/main_dashboard/Keys.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/main_dashboard/Keys.java new file mode 100644 index 0000000..957f0f0 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/main_dashboard/Keys.java @@ -0,0 +1,49 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.main_dashboard; + + +import ervu_dashboard.ervu_dashboard.db_beans.main_dashboard.tables.Appeals; +import ervu_dashboard.ervu_dashboard.db_beans.main_dashboard.tables.RecruitmentCampaign; +import ervu_dashboard.ervu_dashboard.db_beans.main_dashboard.tables.TotalRegistered; +import ervu_dashboard.ervu_dashboard.db_beans.main_dashboard.tables.WaitingRegistration; +import ervu_dashboard.ervu_dashboard.db_beans.main_dashboard.tables.records.AppealsRecord; +import ervu_dashboard.ervu_dashboard.db_beans.main_dashboard.tables.records.RecruitmentCampaignRecord; +import ervu_dashboard.ervu_dashboard.db_beans.main_dashboard.tables.records.TotalRegisteredRecord; +import ervu_dashboard.ervu_dashboard.db_beans.main_dashboard.tables.records.WaitingRegistrationRecord; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.PubRecruitment; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.records.PubRecruitmentRecord; + +import org.jooq.ForeignKey; +import org.jooq.TableField; +import org.jooq.UniqueKey; +import org.jooq.impl.DSL; +import org.jooq.impl.Internal; + + +/** + * A class modelling foreign key relationships and constraints of tables in + * main_dashboard. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Keys { + + // ------------------------------------------------------------------------- + // UNIQUE and PRIMARY KEY definitions + // ------------------------------------------------------------------------- + + public static final UniqueKey PK_APPEAL = Internal.createUniqueKey(Appeals.APPEALS, DSL.name("pk_appeal"), new TableField[] { Appeals.APPEALS.ID_APPEAL }, true); + public static final UniqueKey PK_RECRUITMENT_CAMPAIGN = Internal.createUniqueKey(RecruitmentCampaign.RECRUITMENT_CAMPAIGN, DSL.name("pk_recruitment_campaign"), new TableField[] { RecruitmentCampaign.RECRUITMENT_CAMPAIGN.ID_RECRUITMENT_CAMPAIGN }, true); + public static final UniqueKey PK_TOTAL_REGISTERED = Internal.createUniqueKey(TotalRegistered.TOTAL_REGISTERED, DSL.name("pk_total_registered"), new TableField[] { TotalRegistered.TOTAL_REGISTERED.ID_TOTAL_REGISTERED }, true); + public static final UniqueKey PK_WAITING_REGISTRATION = Internal.createUniqueKey(WaitingRegistration.WAITING_REGISTRATION, DSL.name("pk_waiting_registration"), new TableField[] { WaitingRegistration.WAITING_REGISTRATION.ID_WAITING_REGISTRATION }, true); + + // ------------------------------------------------------------------------- + // FOREIGN KEY definitions + // ------------------------------------------------------------------------- + + public static final ForeignKey APPEALS__MD_APPEALS_FK1 = Internal.createForeignKey(Appeals.APPEALS, DSL.name("md_appeals_fk1"), new TableField[] { Appeals.APPEALS.RECRUITMENT_ID }, ervu_dashboard.ervu_dashboard.db_beans.public_.Keys.RECRUITMENT_PKEY, new TableField[] { PubRecruitment.PUB_RECRUITMENT.ID }, true); + public static final ForeignKey RECRUITMENT_CAMPAIGN__RECRUITMENT_CAMPAIGN_FK1 = Internal.createForeignKey(RecruitmentCampaign.RECRUITMENT_CAMPAIGN, DSL.name("recruitment_campaign_fk1"), new TableField[] { RecruitmentCampaign.RECRUITMENT_CAMPAIGN.RECRUITMENT_ID }, ervu_dashboard.ervu_dashboard.db_beans.public_.Keys.RECRUITMENT_PKEY, new TableField[] { PubRecruitment.PUB_RECRUITMENT.ID }, true); + public static final ForeignKey TOTAL_REGISTERED__MD_TOTAL_REGISTERED_FK1 = Internal.createForeignKey(TotalRegistered.TOTAL_REGISTERED, DSL.name("md_total_registered_fk1"), new TableField[] { TotalRegistered.TOTAL_REGISTERED.RECRUITMENT_ID }, ervu_dashboard.ervu_dashboard.db_beans.public_.Keys.RECRUITMENT_PKEY, new TableField[] { PubRecruitment.PUB_RECRUITMENT.ID }, true); + public static final ForeignKey WAITING_REGISTRATION__MD_WAITING_REGISTRATION_FK1 = Internal.createForeignKey(WaitingRegistration.WAITING_REGISTRATION, DSL.name("md_waiting_registration_fk1"), new TableField[] { WaitingRegistration.WAITING_REGISTRATION.RECRUITMENT_ID }, ervu_dashboard.ervu_dashboard.db_beans.public_.Keys.RECRUITMENT_PKEY, new TableField[] { PubRecruitment.PUB_RECRUITMENT.ID }, true); +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/main_dashboard/MainDashboard.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/main_dashboard/MainDashboard.java new file mode 100644 index 0000000..bf47254 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/main_dashboard/MainDashboard.java @@ -0,0 +1,76 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.main_dashboard; + + +import ervu_dashboard.ervu_dashboard.db_beans.DefaultCatalog; +import ervu_dashboard.ervu_dashboard.db_beans.main_dashboard.tables.Appeals; +import ervu_dashboard.ervu_dashboard.db_beans.main_dashboard.tables.RecruitmentCampaign; +import ervu_dashboard.ervu_dashboard.db_beans.main_dashboard.tables.TotalRegistered; +import ervu_dashboard.ervu_dashboard.db_beans.main_dashboard.tables.WaitingRegistration; + +import java.util.Arrays; +import java.util.List; + +import org.jooq.Catalog; +import org.jooq.Table; +import org.jooq.impl.SchemaImpl; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class MainDashboard extends SchemaImpl { + + private static final long serialVersionUID = 1L; + + /** + * The reference instance of main_dashboard + */ + public static final MainDashboard MAIN_DASHBOARD = new MainDashboard(); + + /** + * Обжалования уровень РФ + */ + public final Appeals APPEALS = Appeals.APPEALS; + + /** + * Призывная кампания уровень РФ + */ + public final RecruitmentCampaign RECRUITMENT_CAMPAIGN = RecruitmentCampaign.RECRUITMENT_CAMPAIGN; + + /** + * Всего на учете уровень РФ + */ + public final TotalRegistered TOTAL_REGISTERED = TotalRegistered.TOTAL_REGISTERED; + + /** + * Подлежат постановке на учет уровень РФ + */ + public final WaitingRegistration WAITING_REGISTRATION = WaitingRegistration.WAITING_REGISTRATION; + + /** + * No further instances allowed + */ + private MainDashboard() { + super("main_dashboard", null); + } + + + @Override + public Catalog getCatalog() { + return DefaultCatalog.DEFAULT_CATALOG; + } + + @Override + public final List> getTables() { + return Arrays.asList( + Appeals.APPEALS, + RecruitmentCampaign.RECRUITMENT_CAMPAIGN, + TotalRegistered.TOTAL_REGISTERED, + WaitingRegistration.WAITING_REGISTRATION + ); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/main_dashboard/Tables.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/main_dashboard/Tables.java new file mode 100644 index 0000000..b345586 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/main_dashboard/Tables.java @@ -0,0 +1,38 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.main_dashboard; + + +import ervu_dashboard.ervu_dashboard.db_beans.main_dashboard.tables.Appeals; +import ervu_dashboard.ervu_dashboard.db_beans.main_dashboard.tables.RecruitmentCampaign; +import ervu_dashboard.ervu_dashboard.db_beans.main_dashboard.tables.TotalRegistered; +import ervu_dashboard.ervu_dashboard.db_beans.main_dashboard.tables.WaitingRegistration; + + +/** + * Convenience access to all tables in main_dashboard. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Tables { + + /** + * Обжалования уровень РФ + */ + public static final Appeals APPEALS = Appeals.APPEALS; + + /** + * Призывная кампания уровень РФ + */ + public static final RecruitmentCampaign RECRUITMENT_CAMPAIGN = RecruitmentCampaign.RECRUITMENT_CAMPAIGN; + + /** + * Всего на учете уровень РФ + */ + public static final TotalRegistered TOTAL_REGISTERED = TotalRegistered.TOTAL_REGISTERED; + + /** + * Подлежат постановке на учет уровень РФ + */ + public static final WaitingRegistration WAITING_REGISTRATION = WaitingRegistration.WAITING_REGISTRATION; +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/main_dashboard/tables/Appeals.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/main_dashboard/tables/Appeals.java new file mode 100644 index 0000000..c888c7e --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/main_dashboard/tables/Appeals.java @@ -0,0 +1,346 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.main_dashboard.tables; + + +import ervu_dashboard.ervu_dashboard.db_beans.main_dashboard.Keys; +import ervu_dashboard.ervu_dashboard.db_beans.main_dashboard.MainDashboard; +import ervu_dashboard.ervu_dashboard.db_beans.main_dashboard.tables.records.AppealsRecord; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.PubRecruitment.PubRecruitmentPath; + +import java.math.BigDecimal; +import java.sql.Date; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; +import java.util.UUID; + +import org.jooq.Condition; +import org.jooq.Field; +import org.jooq.ForeignKey; +import org.jooq.Identity; +import org.jooq.InverseForeignKey; +import org.jooq.Name; +import org.jooq.Path; +import org.jooq.PlainSQL; +import org.jooq.QueryPart; +import org.jooq.Record; +import org.jooq.SQL; +import org.jooq.Schema; +import org.jooq.Select; +import org.jooq.Stringly; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.TableOptions; +import org.jooq.UniqueKey; +import org.jooq.impl.DSL; +import org.jooq.impl.SQLDataType; +import org.jooq.impl.TableImpl; + + +/** + * Обжалования уровень РФ + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Appeals extends TableImpl { + + private static final long serialVersionUID = 1L; + + /** + * The reference instance of main_dashboard.appeals + */ + public static final Appeals APPEALS = new Appeals(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return AppealsRecord.class; + } + + /** + * The column main_dashboard.appeals.id_appeal. + */ + public final TableField ID_APPEAL = createField(DSL.name("id_appeal"), SQLDataType.BIGINT.nullable(false).identity(true), this, ""); + + /** + * The column main_dashboard.appeals.total_appeals. Всего жалоб + */ + public final TableField TOTAL_APPEALS = createField(DSL.name("total_appeals"), SQLDataType.NUMERIC, this, "Всего жалоб"); + + /** + * The column main_dashboard.appeals.resolved. Количество + * решенных + */ + public final TableField RESOLVED = createField(DSL.name("resolved"), SQLDataType.NUMERIC, this, "Количество решенных"); + + /** + * The column main_dashboard.appeals.average_consideration. + * Средний срок рассмотрения + */ + public final TableField AVERAGE_CONSIDERATION = createField(DSL.name("average_consideration"), SQLDataType.NUMERIC, this, "Средний срок рассмотрения"); + + /** + * The column main_dashboard.appeals.average_rating. Оценка + * удовлетворенности + */ + public final TableField AVERAGE_RATING = createField(DSL.name("average_rating"), SQLDataType.NUMERIC, this, "Оценка удовлетворенности"); + + /** + * The column main_dashboard.appeals.average_to_face. Способ + * подачи жалоб очно + */ + public final TableField AVERAGE_TO_FACE = createField(DSL.name("average_to_face"), SQLDataType.NUMERIC, this, "Способ подачи жалоб очно"); + + /** + * The column main_dashboard.appeals.average_EPGU. Способ + * подачи ЕПГУ + */ + public final TableField AVERAGE_EPGU = createField(DSL.name("average_EPGU"), SQLDataType.NUMERIC, this, "Способ подачи ЕПГУ"); + + /** + * The column main_dashboard.appeals.recording_date. Дата + * записи + */ + public final TableField RECORDING_DATE = createField(DSL.name("recording_date"), SQLDataType.DATE.defaultValue(DSL.field(DSL.raw("now()"), SQLDataType.DATE)), this, "Дата записи"); + + /** + * The column main_dashboard.appeals.average_to_face_percent. + * Способ подачи жалоб очно в процентах + */ + public final TableField AVERAGE_TO_FACE_PERCENT = createField(DSL.name("average_to_face_percent"), SQLDataType.NUMERIC, this, "Способ подачи жалоб очно в процентах"); + + /** + * The column main_dashboard.appeals.average_EPGU_percent. + * Способ подачи ЕПГУ в процентах + */ + public final TableField AVERAGE_EPGU_PERCENT = createField(DSL.name("average_EPGU_percent"), SQLDataType.NUMERIC, this, "Способ подачи ЕПГУ в процентах"); + + /** + * The column main_dashboard.appeals.recruitment_id. + */ + public final TableField RECRUITMENT_ID = createField(DSL.name("recruitment_id"), SQLDataType.UUID, this, ""); + + /** + * The column main_dashboard.appeals.testrecruitment_id. + */ + public final TableField TESTRECRUITMENT_ID = createField(DSL.name("testrecruitment_id"), SQLDataType.CHAR(36), this, ""); + + private Appeals(Name alias, Table aliased) { + this(alias, aliased, (Field[]) null, null); + } + + private Appeals(Name alias, Table aliased, Field[] parameters, Condition where) { + super(alias, null, aliased, parameters, DSL.comment("Обжалования уровень РФ"), TableOptions.table(), where); + } + + /** + * Create an aliased main_dashboard.appeals table reference + */ + public Appeals(String alias) { + this(DSL.name(alias), APPEALS); + } + + /** + * Create an aliased main_dashboard.appeals table reference + */ + public Appeals(Name alias) { + this(alias, APPEALS); + } + + /** + * Create a main_dashboard.appeals table reference + */ + public Appeals() { + this(DSL.name("appeals"), null); + } + + public Appeals(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath, APPEALS); + } + + /** + * A subtype implementing {@link Path} for simplified path-based joins. + */ + public static class AppealsPath extends Appeals implements Path { + public AppealsPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath); + } + private AppealsPath(Name alias, Table aliased) { + super(alias, aliased); + } + + @Override + public AppealsPath as(String alias) { + return new AppealsPath(DSL.name(alias), this); + } + + @Override + public AppealsPath as(Name alias) { + return new AppealsPath(alias, this); + } + + @Override + public AppealsPath as(Table alias) { + return new AppealsPath(alias.getQualifiedName(), this); + } + } + + @Override + public Schema getSchema() { + return aliased() ? null : MainDashboard.MAIN_DASHBOARD; + } + + @Override + public Identity getIdentity() { + return (Identity) super.getIdentity(); + } + + @Override + public UniqueKey getPrimaryKey() { + return Keys.PK_APPEAL; + } + + @Override + public List> getReferences() { + return Arrays.asList(Keys.APPEALS__MD_APPEALS_FK1); + } + + private transient PubRecruitmentPath _pubRecruitment; + + /** + * Get the implicit join path to the public.pub_recruitment + * table. + */ + public PubRecruitmentPath pubRecruitment() { + if (_pubRecruitment == null) + _pubRecruitment = new PubRecruitmentPath(this, Keys.APPEALS__MD_APPEALS_FK1, null); + + return _pubRecruitment; + } + + @Override + public Appeals as(String alias) { + return new Appeals(DSL.name(alias), this); + } + + @Override + public Appeals as(Name alias) { + return new Appeals(alias, this); + } + + @Override + public Appeals as(Table alias) { + return new Appeals(alias.getQualifiedName(), this); + } + + /** + * Rename this table + */ + @Override + public Appeals rename(String name) { + return new Appeals(DSL.name(name), null); + } + + /** + * Rename this table + */ + @Override + public Appeals rename(Name name) { + return new Appeals(name, null); + } + + /** + * Rename this table + */ + @Override + public Appeals rename(Table name) { + return new Appeals(name.getQualifiedName(), null); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Appeals where(Condition condition) { + return new Appeals(getQualifiedName(), aliased() ? this : null, null, condition); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Appeals where(Collection conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Appeals where(Condition... conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Appeals where(Field condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Appeals where(SQL condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Appeals where(@Stringly.SQL String condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Appeals where(@Stringly.SQL String condition, Object... binds) { + return where(DSL.condition(condition, binds)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Appeals where(@Stringly.SQL String condition, QueryPart... parts) { + return where(DSL.condition(condition, parts)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Appeals whereExists(Select select) { + return where(DSL.exists(select)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Appeals whereNotExists(Select select) { + return where(DSL.notExists(select)); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/main_dashboard/tables/RecruitmentCampaign.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/main_dashboard/tables/RecruitmentCampaign.java new file mode 100644 index 0000000..09c0ec1 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/main_dashboard/tables/RecruitmentCampaign.java @@ -0,0 +1,388 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.main_dashboard.tables; + + +import ervu_dashboard.ervu_dashboard.db_beans.main_dashboard.Keys; +import ervu_dashboard.ervu_dashboard.db_beans.main_dashboard.MainDashboard; +import ervu_dashboard.ervu_dashboard.db_beans.main_dashboard.tables.records.RecruitmentCampaignRecord; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.PubRecruitment.PubRecruitmentPath; + +import java.math.BigDecimal; +import java.sql.Date; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; +import java.util.UUID; + +import org.jooq.Condition; +import org.jooq.Field; +import org.jooq.ForeignKey; +import org.jooq.Identity; +import org.jooq.InverseForeignKey; +import org.jooq.Name; +import org.jooq.Path; +import org.jooq.PlainSQL; +import org.jooq.QueryPart; +import org.jooq.Record; +import org.jooq.SQL; +import org.jooq.Schema; +import org.jooq.Select; +import org.jooq.Stringly; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.TableOptions; +import org.jooq.UniqueKey; +import org.jooq.impl.DSL; +import org.jooq.impl.SQLDataType; +import org.jooq.impl.TableImpl; + + +/** + * Призывная кампания уровень РФ + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class RecruitmentCampaign extends TableImpl { + + private static final long serialVersionUID = 1L; + + /** + * The reference instance of + * main_dashboard.recruitment_campaign + */ + public static final RecruitmentCampaign RECRUITMENT_CAMPAIGN = new RecruitmentCampaign(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return RecruitmentCampaignRecord.class; + } + + /** + * The column + * main_dashboard.recruitment_campaign.id_recruitment_campaign. + */ + public final TableField ID_RECRUITMENT_CAMPAIGN = createField(DSL.name("id_recruitment_campaign"), SQLDataType.BIGINT.nullable(false).identity(true), this, ""); + + /** + * The column main_dashboard.recruitment_campaign.new_recruits. + * Подпадающие под призыв + */ + public final TableField NEW_RECRUITS = createField(DSL.name("new_recruits"), SQLDataType.NUMERIC, this, "Подпадающие под призыв"); + + /** + * The column + * main_dashboard.recruitment_campaign.subpoenas_sent. + * Направлено повесток + */ + public final TableField SUBPOENAS_SENT = createField(DSL.name("subpoenas_sent"), SQLDataType.NUMERIC, this, "Направлено повесток"); + + /** + * The column + * main_dashboard.recruitment_campaign.appeared_on_subpoenas. + * Явились по повесткам + */ + public final TableField APPEARED_ON_SUBPOENAS = createField(DSL.name("appeared_on_subpoenas"), SQLDataType.NUMERIC, this, "Явились по повесткам"); + + /** + * The column + * main_dashboard.recruitment_campaign.not_appeared_on_subpoenas. + * Не явились по повесткам + */ + public final TableField NOT_APPEARED_ON_SUBPOENAS = createField(DSL.name("not_appeared_on_subpoenas"), SQLDataType.NUMERIC, this, "Не явились по повесткам"); + + /** + * The column + * main_dashboard.recruitment_campaign.postponement_have_right. + * Имеют право на отсрочку + */ + public final TableField POSTPONEMENT_HAVE_RIGHT = createField(DSL.name("postponement_have_right"), SQLDataType.NUMERIC, this, "Имеют право на отсрочку"); + + /** + * The column + * main_dashboard.recruitment_campaign.postponement_granted. + * Предоставлена отсрочка + */ + public final TableField POSTPONEMENT_GRANTED = createField(DSL.name("postponement_granted"), SQLDataType.NUMERIC, this, "Предоставлена отсрочка"); + + /** + * The column + * main_dashboard.recruitment_campaign.recording_date. Дата + * записи + */ + public final TableField RECORDING_DATE = createField(DSL.name("recording_date"), SQLDataType.DATE.defaultValue(DSL.field(DSL.raw("now()"), SQLDataType.DATE)), this, "Дата записи"); + + /** + * The column + * main_dashboard.recruitment_campaign.spring_autumn. + * Весна/Осень + */ + public final TableField SPRING_AUTUMN = createField(DSL.name("spring_autumn"), SQLDataType.CLOB, this, "Весна/Осень"); + + /** + * The column + * main_dashboard.recruitment_campaign.appeared_on_subpoenas_percent. + * Явились по повесткам процент + */ + public final TableField APPEARED_ON_SUBPOENAS_PERCENT = createField(DSL.name("appeared_on_subpoenas_percent"), SQLDataType.NUMERIC, this, "Явились по повесткам процент"); + + /** + * The column + * main_dashboard.recruitment_campaign.not_appeared_on_subpoenas_percent. + * Не явились по повесткам процент + */ + public final TableField NOT_APPEARED_ON_SUBPOENAS_PERCENT = createField(DSL.name("not_appeared_on_subpoenas_percent"), SQLDataType.NUMERIC, this, "Не явились по повесткам процент"); + + /** + * The column + * main_dashboard.recruitment_campaign.postponement_have_right_percent. + * Имеют право на отсрочку процент + */ + public final TableField POSTPONEMENT_HAVE_RIGHT_PERCENT = createField(DSL.name("postponement_have_right_percent"), SQLDataType.NUMERIC, this, "Имеют право на отсрочку процент"); + + /** + * The column + * main_dashboard.recruitment_campaign.postponement_granted_percent. + * Предоставлена отсрочка процент + */ + public final TableField POSTPONEMENT_GRANTED_PERCENT = createField(DSL.name("postponement_granted_percent"), SQLDataType.NUMERIC, this, "Предоставлена отсрочка процент"); + + /** + * The column + * main_dashboard.recruitment_campaign.recruitment_id. + */ + public final TableField RECRUITMENT_ID = createField(DSL.name("recruitment_id"), SQLDataType.UUID, this, ""); + + /** + * The column + * main_dashboard.recruitment_campaign.testrecruitment_id. + */ + public final TableField TESTRECRUITMENT_ID = createField(DSL.name("testrecruitment_id"), SQLDataType.CHAR(36), this, ""); + + /** + * The column + * main_dashboard.recruitment_campaign.testspring_autumn. + */ + public final TableField TESTSPRING_AUTUMN = createField(DSL.name("testspring_autumn"), SQLDataType.CHAR(36), this, ""); + + private RecruitmentCampaign(Name alias, Table aliased) { + this(alias, aliased, (Field[]) null, null); + } + + private RecruitmentCampaign(Name alias, Table aliased, Field[] parameters, Condition where) { + super(alias, null, aliased, parameters, DSL.comment("Призывная кампания уровень РФ"), TableOptions.table(), where); + } + + /** + * Create an aliased main_dashboard.recruitment_campaign table + * reference + */ + public RecruitmentCampaign(String alias) { + this(DSL.name(alias), RECRUITMENT_CAMPAIGN); + } + + /** + * Create an aliased main_dashboard.recruitment_campaign table + * reference + */ + public RecruitmentCampaign(Name alias) { + this(alias, RECRUITMENT_CAMPAIGN); + } + + /** + * Create a main_dashboard.recruitment_campaign table reference + */ + public RecruitmentCampaign() { + this(DSL.name("recruitment_campaign"), null); + } + + public RecruitmentCampaign(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath, RECRUITMENT_CAMPAIGN); + } + + /** + * A subtype implementing {@link Path} for simplified path-based joins. + */ + public static class RecruitmentCampaignPath extends RecruitmentCampaign implements Path { + public RecruitmentCampaignPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath); + } + private RecruitmentCampaignPath(Name alias, Table aliased) { + super(alias, aliased); + } + + @Override + public RecruitmentCampaignPath as(String alias) { + return new RecruitmentCampaignPath(DSL.name(alias), this); + } + + @Override + public RecruitmentCampaignPath as(Name alias) { + return new RecruitmentCampaignPath(alias, this); + } + + @Override + public RecruitmentCampaignPath as(Table alias) { + return new RecruitmentCampaignPath(alias.getQualifiedName(), this); + } + } + + @Override + public Schema getSchema() { + return aliased() ? null : MainDashboard.MAIN_DASHBOARD; + } + + @Override + public Identity getIdentity() { + return (Identity) super.getIdentity(); + } + + @Override + public UniqueKey getPrimaryKey() { + return Keys.PK_RECRUITMENT_CAMPAIGN; + } + + @Override + public List> getReferences() { + return Arrays.asList(Keys.RECRUITMENT_CAMPAIGN__RECRUITMENT_CAMPAIGN_FK1); + } + + private transient PubRecruitmentPath _pubRecruitment; + + /** + * Get the implicit join path to the public.pub_recruitment + * table. + */ + public PubRecruitmentPath pubRecruitment() { + if (_pubRecruitment == null) + _pubRecruitment = new PubRecruitmentPath(this, Keys.RECRUITMENT_CAMPAIGN__RECRUITMENT_CAMPAIGN_FK1, null); + + return _pubRecruitment; + } + + @Override + public RecruitmentCampaign as(String alias) { + return new RecruitmentCampaign(DSL.name(alias), this); + } + + @Override + public RecruitmentCampaign as(Name alias) { + return new RecruitmentCampaign(alias, this); + } + + @Override + public RecruitmentCampaign as(Table alias) { + return new RecruitmentCampaign(alias.getQualifiedName(), this); + } + + /** + * Rename this table + */ + @Override + public RecruitmentCampaign rename(String name) { + return new RecruitmentCampaign(DSL.name(name), null); + } + + /** + * Rename this table + */ + @Override + public RecruitmentCampaign rename(Name name) { + return new RecruitmentCampaign(name, null); + } + + /** + * Rename this table + */ + @Override + public RecruitmentCampaign rename(Table name) { + return new RecruitmentCampaign(name.getQualifiedName(), null); + } + + /** + * Create an inline derived table from this table + */ + @Override + public RecruitmentCampaign where(Condition condition) { + return new RecruitmentCampaign(getQualifiedName(), aliased() ? this : null, null, condition); + } + + /** + * Create an inline derived table from this table + */ + @Override + public RecruitmentCampaign where(Collection conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public RecruitmentCampaign where(Condition... conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public RecruitmentCampaign where(Field condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public RecruitmentCampaign where(SQL condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public RecruitmentCampaign where(@Stringly.SQL String condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public RecruitmentCampaign where(@Stringly.SQL String condition, Object... binds) { + return where(DSL.condition(condition, binds)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public RecruitmentCampaign where(@Stringly.SQL String condition, QueryPart... parts) { + return where(DSL.condition(condition, parts)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public RecruitmentCampaign whereExists(Select select) { + return where(DSL.exists(select)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public RecruitmentCampaign whereNotExists(Select select) { + return where(DSL.notExists(select)); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/main_dashboard/tables/TotalRegistered.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/main_dashboard/tables/TotalRegistered.java new file mode 100644 index 0000000..3941b97 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/main_dashboard/tables/TotalRegistered.java @@ -0,0 +1,365 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.main_dashboard.tables; + + +import ervu_dashboard.ervu_dashboard.db_beans.main_dashboard.Keys; +import ervu_dashboard.ervu_dashboard.db_beans.main_dashboard.MainDashboard; +import ervu_dashboard.ervu_dashboard.db_beans.main_dashboard.tables.records.TotalRegisteredRecord; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.PubRecruitment.PubRecruitmentPath; + +import java.math.BigDecimal; +import java.sql.Date; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; +import java.util.UUID; + +import org.jooq.Condition; +import org.jooq.Field; +import org.jooq.ForeignKey; +import org.jooq.Identity; +import org.jooq.InverseForeignKey; +import org.jooq.Name; +import org.jooq.Path; +import org.jooq.PlainSQL; +import org.jooq.QueryPart; +import org.jooq.Record; +import org.jooq.SQL; +import org.jooq.Schema; +import org.jooq.Select; +import org.jooq.Stringly; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.TableOptions; +import org.jooq.UniqueKey; +import org.jooq.impl.DSL; +import org.jooq.impl.SQLDataType; +import org.jooq.impl.TableImpl; + + +/** + * Всего на учете уровень РФ + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class TotalRegistered extends TableImpl { + + private static final long serialVersionUID = 1L; + + /** + * The reference instance of main_dashboard.total_registered + */ + public static final TotalRegistered TOTAL_REGISTERED = new TotalRegistered(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return TotalRegisteredRecord.class; + } + + /** + * The column + * main_dashboard.total_registered.id_total_registered. + */ + public final TableField ID_TOTAL_REGISTERED = createField(DSL.name("id_total_registered"), SQLDataType.BIGINT.nullable(false).identity(true), this, ""); + + /** + * The column main_dashboard.total_registered.total_registered. + * Всего состоят на учете + */ + public final TableField TOTAL_REGISTERED_ = createField(DSL.name("total_registered"), SQLDataType.NUMERIC, this, "Всего состоят на учете"); + + /** + * The column + * main_dashboard.total_registered.total_registered_M. Всего на + * учете мужчин + */ + public final TableField TOTAL_REGISTERED_M = createField(DSL.name("total_registered_M"), SQLDataType.NUMERIC, this, "Всего на учете мужчин"); + + /** + * The column + * main_dashboard.total_registered.total_registered_W. Всего на + * учете женщин + */ + public final TableField TOTAL_REGISTERED_W = createField(DSL.name("total_registered_W"), SQLDataType.NUMERIC, this, "Всего на учете женщин"); + + /** + * The column + * main_dashboard.total_registered.mobilization_criterion. + * Количество подходящих под критерии мобилизации + */ + public final TableField MOBILIZATION_CRITERION = createField(DSL.name("mobilization_criterion"), SQLDataType.NUMERIC, this, "Количество подходящих под критерии мобилизации"); + + /** + * The column + * main_dashboard.total_registered.volunteer_criterion. + * Количество подходящих под критерии добровольной службы + */ + public final TableField VOLUNTEER_CRITERION = createField(DSL.name("volunteer_criterion"), SQLDataType.NUMERIC, this, "Количество подходящих под критерии добровольной службы"); + + /** + * The column + * main_dashboard.total_registered.contract_criterion. + * Количество подходящих под критерии контрактной службы + */ + public final TableField CONTRACT_CRITERION = createField(DSL.name("contract_criterion"), SQLDataType.NUMERIC, this, "Количество подходящих под критерии контрактной службы"); + + /** + * The column main_dashboard.total_registered.recording_date. + * дата записи + */ + public final TableField RECORDING_DATE = createField(DSL.name("recording_date"), SQLDataType.DATE.defaultValue(DSL.field(DSL.raw("now()"), SQLDataType.DATE)), this, "дата записи"); + + /** + * The column + * main_dashboard.total_registered.mobilization_criterion_percent. + * Процент подходящих под критерии мобилизации + */ + public final TableField MOBILIZATION_CRITERION_PERCENT = createField(DSL.name("mobilization_criterion_percent"), SQLDataType.NUMERIC, this, "Процент подходящих под критерии мобилизации"); + + /** + * The column + * main_dashboard.total_registered.volunteer_criterion_percent. + * Процент подходящих под критерии добровольной службы + */ + public final TableField VOLUNTEER_CRITERION_PERCENT = createField(DSL.name("volunteer_criterion_percent"), SQLDataType.NUMERIC, this, "Процент подходящих под критерии добровольной службы"); + + /** + * The column + * main_dashboard.total_registered.contract_criterion_percent. + * Процент подходящих под критерии контрактрой службы + */ + public final TableField CONTRACT_CRITERION_PERCENT = createField(DSL.name("contract_criterion_percent"), SQLDataType.NUMERIC, this, "Процент подходящих под критерии контрактрой службы"); + + /** + * The column main_dashboard.total_registered.recruitment_id. + */ + public final TableField RECRUITMENT_ID = createField(DSL.name("recruitment_id"), SQLDataType.UUID, this, ""); + + /** + * The column + * main_dashboard.total_registered.testrecruitment_id. + */ + public final TableField TESTRECRUITMENT_ID = createField(DSL.name("testrecruitment_id"), SQLDataType.CHAR(36), this, ""); + + private TotalRegistered(Name alias, Table aliased) { + this(alias, aliased, (Field[]) null, null); + } + + private TotalRegistered(Name alias, Table aliased, Field[] parameters, Condition where) { + super(alias, null, aliased, parameters, DSL.comment("Всего на учете уровень РФ"), TableOptions.table(), where); + } + + /** + * Create an aliased main_dashboard.total_registered table + * reference + */ + public TotalRegistered(String alias) { + this(DSL.name(alias), TOTAL_REGISTERED); + } + + /** + * Create an aliased main_dashboard.total_registered table + * reference + */ + public TotalRegistered(Name alias) { + this(alias, TOTAL_REGISTERED); + } + + /** + * Create a main_dashboard.total_registered table reference + */ + public TotalRegistered() { + this(DSL.name("total_registered"), null); + } + + public TotalRegistered(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath, TOTAL_REGISTERED); + } + + /** + * A subtype implementing {@link Path} for simplified path-based joins. + */ + public static class TotalRegisteredPath extends TotalRegistered implements Path { + public TotalRegisteredPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath); + } + private TotalRegisteredPath(Name alias, Table aliased) { + super(alias, aliased); + } + + @Override + public TotalRegisteredPath as(String alias) { + return new TotalRegisteredPath(DSL.name(alias), this); + } + + @Override + public TotalRegisteredPath as(Name alias) { + return new TotalRegisteredPath(alias, this); + } + + @Override + public TotalRegisteredPath as(Table alias) { + return new TotalRegisteredPath(alias.getQualifiedName(), this); + } + } + + @Override + public Schema getSchema() { + return aliased() ? null : MainDashboard.MAIN_DASHBOARD; + } + + @Override + public Identity getIdentity() { + return (Identity) super.getIdentity(); + } + + @Override + public UniqueKey getPrimaryKey() { + return Keys.PK_TOTAL_REGISTERED; + } + + @Override + public List> getReferences() { + return Arrays.asList(Keys.TOTAL_REGISTERED__MD_TOTAL_REGISTERED_FK1); + } + + private transient PubRecruitmentPath _pubRecruitment; + + /** + * Get the implicit join path to the public.pub_recruitment + * table. + */ + public PubRecruitmentPath pubRecruitment() { + if (_pubRecruitment == null) + _pubRecruitment = new PubRecruitmentPath(this, Keys.TOTAL_REGISTERED__MD_TOTAL_REGISTERED_FK1, null); + + return _pubRecruitment; + } + + @Override + public TotalRegistered as(String alias) { + return new TotalRegistered(DSL.name(alias), this); + } + + @Override + public TotalRegistered as(Name alias) { + return new TotalRegistered(alias, this); + } + + @Override + public TotalRegistered as(Table alias) { + return new TotalRegistered(alias.getQualifiedName(), this); + } + + /** + * Rename this table + */ + @Override + public TotalRegistered rename(String name) { + return new TotalRegistered(DSL.name(name), null); + } + + /** + * Rename this table + */ + @Override + public TotalRegistered rename(Name name) { + return new TotalRegistered(name, null); + } + + /** + * Rename this table + */ + @Override + public TotalRegistered rename(Table name) { + return new TotalRegistered(name.getQualifiedName(), null); + } + + /** + * Create an inline derived table from this table + */ + @Override + public TotalRegistered where(Condition condition) { + return new TotalRegistered(getQualifiedName(), aliased() ? this : null, null, condition); + } + + /** + * Create an inline derived table from this table + */ + @Override + public TotalRegistered where(Collection conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public TotalRegistered where(Condition... conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public TotalRegistered where(Field condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public TotalRegistered where(SQL condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public TotalRegistered where(@Stringly.SQL String condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public TotalRegistered where(@Stringly.SQL String condition, Object... binds) { + return where(DSL.condition(condition, binds)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public TotalRegistered where(@Stringly.SQL String condition, QueryPart... parts) { + return where(DSL.condition(condition, parts)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public TotalRegistered whereExists(Select select) { + return where(DSL.exists(select)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public TotalRegistered whereNotExists(Select select) { + return where(DSL.notExists(select)); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/main_dashboard/tables/WaitingRegistration.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/main_dashboard/tables/WaitingRegistration.java new file mode 100644 index 0000000..a5a44e3 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/main_dashboard/tables/WaitingRegistration.java @@ -0,0 +1,376 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.main_dashboard.tables; + + +import ervu_dashboard.ervu_dashboard.db_beans.main_dashboard.Keys; +import ervu_dashboard.ervu_dashboard.db_beans.main_dashboard.MainDashboard; +import ervu_dashboard.ervu_dashboard.db_beans.main_dashboard.tables.records.WaitingRegistrationRecord; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.PubRecruitment.PubRecruitmentPath; + +import java.math.BigDecimal; +import java.sql.Date; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; +import java.util.UUID; + +import org.jooq.Condition; +import org.jooq.Field; +import org.jooq.ForeignKey; +import org.jooq.Identity; +import org.jooq.InverseForeignKey; +import org.jooq.Name; +import org.jooq.Path; +import org.jooq.PlainSQL; +import org.jooq.QueryPart; +import org.jooq.Record; +import org.jooq.SQL; +import org.jooq.Schema; +import org.jooq.Select; +import org.jooq.Stringly; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.TableOptions; +import org.jooq.UniqueKey; +import org.jooq.impl.DSL; +import org.jooq.impl.SQLDataType; +import org.jooq.impl.TableImpl; + + +/** + * Подлежат постановке на учет уровень РФ + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class WaitingRegistration extends TableImpl { + + private static final long serialVersionUID = 1L; + + /** + * The reference instance of + * main_dashboard.waiting_registration + */ + public static final WaitingRegistration WAITING_REGISTRATION = new WaitingRegistration(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return WaitingRegistrationRecord.class; + } + + /** + * The column + * main_dashboard.waiting_registration.id_waiting_registration. + */ + public final TableField ID_WAITING_REGISTRATION = createField(DSL.name("id_waiting_registration"), SQLDataType.BIGINT.nullable(false).identity(true), this, ""); + + /** + * The column + * main_dashboard.waiting_registration.waiting_registration. + * Всего подлежат постановке на учет + */ + public final TableField WAITING_REGISTRATION_ = createField(DSL.name("waiting_registration"), SQLDataType.NUMERIC, this, "Всего подлежат постановке на учет"); + + /** + * The column + * main_dashboard.waiting_registration.waiting_registration_M. + * Подлежат постановке мужчины + */ + public final TableField WAITING_REGISTRATION_M = createField(DSL.name("waiting_registration_M"), SQLDataType.NUMERIC, this, "Подлежат постановке мужчины"); + + /** + * The column + * main_dashboard.waiting_registration.waiting_registration_W. + * Подлежат постановке женщины + */ + public final TableField WAITING_REGISTRATION_W = createField(DSL.name("waiting_registration_W"), SQLDataType.NUMERIC, this, "Подлежат постановке женщины"); + + /** + * The column + * main_dashboard.waiting_registration.mobilization_criterion. + * Количество подлежащих под критерии мобилизации + */ + public final TableField MOBILIZATION_CRITERION = createField(DSL.name("mobilization_criterion"), SQLDataType.NUMERIC, this, "Количество подлежащих под критерии мобилизации"); + + /** + * The column + * main_dashboard.waiting_registration.volunteer_criterion. + * Количество подлежащих под критерии добровольной службы + */ + public final TableField VOLUNTEER_CRITERION = createField(DSL.name("volunteer_criterion"), SQLDataType.NUMERIC, this, "Количество подлежащих под критерии добровольной службы"); + + /** + * The column + * main_dashboard.waiting_registration.contract_criterion. + * Количество подлежащих под критерии контрактной службы + */ + public final TableField CONTRACT_CRITERION = createField(DSL.name("contract_criterion"), SQLDataType.NUMERIC, this, "Количество подлежащих под критерии контрактной службы"); + + /** + * The column + * main_dashboard.waiting_registration.recording_date. Дата + * записи + */ + public final TableField RECORDING_DATE = createField(DSL.name("recording_date"), SQLDataType.DATE.defaultValue(DSL.field(DSL.raw("now()"), SQLDataType.DATE)), this, "Дата записи"); + + /** + * The column + * main_dashboard.waiting_registration.waiting_registration_percent. + * Всего подлежат постановке процент + */ + public final TableField WAITING_REGISTRATION_PERCENT = createField(DSL.name("waiting_registration_percent"), SQLDataType.NUMERIC, this, "Всего подлежат постановке процент"); + + /** + * The column + * main_dashboard.waiting_registration.mobilization_criterion_percent. + * Процент подлежащих под критерии мобилизации + */ + public final TableField MOBILIZATION_CRITERION_PERCENT = createField(DSL.name("mobilization_criterion_percent"), SQLDataType.NUMERIC, this, "Процент подлежащих под критерии мобилизации"); + + /** + * The column + * main_dashboard.waiting_registration.volunteer_criterion_percent. + * Процент подлежащих под критерии добровольной службы + */ + public final TableField VOLUNTEER_CRITERION_PERCENT = createField(DSL.name("volunteer_criterion_percent"), SQLDataType.NUMERIC, this, "Процент подлежащих под критерии добровольной службы"); + + /** + * The column + * main_dashboard.waiting_registration.contract_criterion_percent. + * Процент подлежащих под критерии контрактной службы + */ + public final TableField CONTRACT_CRITERION_PERCENT = createField(DSL.name("contract_criterion_percent"), SQLDataType.NUMERIC, this, "Процент подлежащих под критерии контрактной службы"); + + /** + * The column + * main_dashboard.waiting_registration.recruitment_id. + */ + public final TableField RECRUITMENT_ID = createField(DSL.name("recruitment_id"), SQLDataType.UUID, this, ""); + + /** + * The column + * main_dashboard.waiting_registration.testrecruitment_id. + */ + public final TableField TESTRECRUITMENT_ID = createField(DSL.name("testrecruitment_id"), SQLDataType.CHAR(36), this, ""); + + private WaitingRegistration(Name alias, Table aliased) { + this(alias, aliased, (Field[]) null, null); + } + + private WaitingRegistration(Name alias, Table aliased, Field[] parameters, Condition where) { + super(alias, null, aliased, parameters, DSL.comment("Подлежат постановке на учет уровень РФ"), TableOptions.table(), where); + } + + /** + * Create an aliased main_dashboard.waiting_registration table + * reference + */ + public WaitingRegistration(String alias) { + this(DSL.name(alias), WAITING_REGISTRATION); + } + + /** + * Create an aliased main_dashboard.waiting_registration table + * reference + */ + public WaitingRegistration(Name alias) { + this(alias, WAITING_REGISTRATION); + } + + /** + * Create a main_dashboard.waiting_registration table reference + */ + public WaitingRegistration() { + this(DSL.name("waiting_registration"), null); + } + + public WaitingRegistration(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath, WAITING_REGISTRATION); + } + + /** + * A subtype implementing {@link Path} for simplified path-based joins. + */ + public static class WaitingRegistrationPath extends WaitingRegistration implements Path { + public WaitingRegistrationPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath); + } + private WaitingRegistrationPath(Name alias, Table aliased) { + super(alias, aliased); + } + + @Override + public WaitingRegistrationPath as(String alias) { + return new WaitingRegistrationPath(DSL.name(alias), this); + } + + @Override + public WaitingRegistrationPath as(Name alias) { + return new WaitingRegistrationPath(alias, this); + } + + @Override + public WaitingRegistrationPath as(Table alias) { + return new WaitingRegistrationPath(alias.getQualifiedName(), this); + } + } + + @Override + public Schema getSchema() { + return aliased() ? null : MainDashboard.MAIN_DASHBOARD; + } + + @Override + public Identity getIdentity() { + return (Identity) super.getIdentity(); + } + + @Override + public UniqueKey getPrimaryKey() { + return Keys.PK_WAITING_REGISTRATION; + } + + @Override + public List> getReferences() { + return Arrays.asList(Keys.WAITING_REGISTRATION__MD_WAITING_REGISTRATION_FK1); + } + + private transient PubRecruitmentPath _pubRecruitment; + + /** + * Get the implicit join path to the public.pub_recruitment + * table. + */ + public PubRecruitmentPath pubRecruitment() { + if (_pubRecruitment == null) + _pubRecruitment = new PubRecruitmentPath(this, Keys.WAITING_REGISTRATION__MD_WAITING_REGISTRATION_FK1, null); + + return _pubRecruitment; + } + + @Override + public WaitingRegistration as(String alias) { + return new WaitingRegistration(DSL.name(alias), this); + } + + @Override + public WaitingRegistration as(Name alias) { + return new WaitingRegistration(alias, this); + } + + @Override + public WaitingRegistration as(Table alias) { + return new WaitingRegistration(alias.getQualifiedName(), this); + } + + /** + * Rename this table + */ + @Override + public WaitingRegistration rename(String name) { + return new WaitingRegistration(DSL.name(name), null); + } + + /** + * Rename this table + */ + @Override + public WaitingRegistration rename(Name name) { + return new WaitingRegistration(name, null); + } + + /** + * Rename this table + */ + @Override + public WaitingRegistration rename(Table name) { + return new WaitingRegistration(name.getQualifiedName(), null); + } + + /** + * Create an inline derived table from this table + */ + @Override + public WaitingRegistration where(Condition condition) { + return new WaitingRegistration(getQualifiedName(), aliased() ? this : null, null, condition); + } + + /** + * Create an inline derived table from this table + */ + @Override + public WaitingRegistration where(Collection conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public WaitingRegistration where(Condition... conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public WaitingRegistration where(Field condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public WaitingRegistration where(SQL condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public WaitingRegistration where(@Stringly.SQL String condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public WaitingRegistration where(@Stringly.SQL String condition, Object... binds) { + return where(DSL.condition(condition, binds)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public WaitingRegistration where(@Stringly.SQL String condition, QueryPart... parts) { + return where(DSL.condition(condition, parts)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public WaitingRegistration whereExists(Select select) { + return where(DSL.exists(select)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public WaitingRegistration whereNotExists(Select select) { + return where(DSL.notExists(select)); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/main_dashboard/tables/records/AppealsRecord.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/main_dashboard/tables/records/AppealsRecord.java new file mode 100644 index 0000000..ec647b5 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/main_dashboard/tables/records/AppealsRecord.java @@ -0,0 +1,249 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.main_dashboard.tables.records; + + +import ervu_dashboard.ervu_dashboard.db_beans.main_dashboard.tables.Appeals; + +import java.math.BigDecimal; +import java.sql.Date; +import java.util.UUID; + +import org.jooq.Record1; +import org.jooq.impl.UpdatableRecordImpl; + + +/** + * Обжалования уровень РФ + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class AppealsRecord extends UpdatableRecordImpl { + + private static final long serialVersionUID = 1L; + + /** + * Setter for main_dashboard.appeals.id_appeal. + */ + public void setIdAppeal(Long value) { + set(0, value); + } + + /** + * Getter for main_dashboard.appeals.id_appeal. + */ + public Long getIdAppeal() { + return (Long) get(0); + } + + /** + * Setter for main_dashboard.appeals.total_appeals. Всего жалоб + */ + public void setTotalAppeals(BigDecimal value) { + set(1, value); + } + + /** + * Getter for main_dashboard.appeals.total_appeals. Всего жалоб + */ + public BigDecimal getTotalAppeals() { + return (BigDecimal) get(1); + } + + /** + * Setter for main_dashboard.appeals.resolved. Количество + * решенных + */ + public void setResolved(BigDecimal value) { + set(2, value); + } + + /** + * Getter for main_dashboard.appeals.resolved. Количество + * решенных + */ + public BigDecimal getResolved() { + return (BigDecimal) get(2); + } + + /** + * Setter for main_dashboard.appeals.average_consideration. + * Средний срок рассмотрения + */ + public void setAverageConsideration(BigDecimal value) { + set(3, value); + } + + /** + * Getter for main_dashboard.appeals.average_consideration. + * Средний срок рассмотрения + */ + public BigDecimal getAverageConsideration() { + return (BigDecimal) get(3); + } + + /** + * Setter for main_dashboard.appeals.average_rating. Оценка + * удовлетворенности + */ + public void setAverageRating(BigDecimal value) { + set(4, value); + } + + /** + * Getter for main_dashboard.appeals.average_rating. Оценка + * удовлетворенности + */ + public BigDecimal getAverageRating() { + return (BigDecimal) get(4); + } + + /** + * Setter for main_dashboard.appeals.average_to_face. Способ + * подачи жалоб очно + */ + public void setAverageToFace(BigDecimal value) { + set(5, value); + } + + /** + * Getter for main_dashboard.appeals.average_to_face. Способ + * подачи жалоб очно + */ + public BigDecimal getAverageToFace() { + return (BigDecimal) get(5); + } + + /** + * Setter for main_dashboard.appeals.average_EPGU. Способ + * подачи ЕПГУ + */ + public void setAverageEpgu(BigDecimal value) { + set(6, value); + } + + /** + * Getter for main_dashboard.appeals.average_EPGU. Способ + * подачи ЕПГУ + */ + public BigDecimal getAverageEpgu() { + return (BigDecimal) get(6); + } + + /** + * Setter for main_dashboard.appeals.recording_date. Дата + * записи + */ + public void setRecordingDate(Date value) { + set(7, value); + } + + /** + * Getter for main_dashboard.appeals.recording_date. Дата + * записи + */ + public Date getRecordingDate() { + return (Date) get(7); + } + + /** + * Setter for main_dashboard.appeals.average_to_face_percent. + * Способ подачи жалоб очно в процентах + */ + public void setAverageToFacePercent(BigDecimal value) { + set(8, value); + } + + /** + * Getter for main_dashboard.appeals.average_to_face_percent. + * Способ подачи жалоб очно в процентах + */ + public BigDecimal getAverageToFacePercent() { + return (BigDecimal) get(8); + } + + /** + * Setter for main_dashboard.appeals.average_EPGU_percent. + * Способ подачи ЕПГУ в процентах + */ + public void setAverageEpguPercent(BigDecimal value) { + set(9, value); + } + + /** + * Getter for main_dashboard.appeals.average_EPGU_percent. + * Способ подачи ЕПГУ в процентах + */ + public BigDecimal getAverageEpguPercent() { + return (BigDecimal) get(9); + } + + /** + * Setter for main_dashboard.appeals.recruitment_id. + */ + public void setRecruitmentId(UUID value) { + set(10, value); + } + + /** + * Getter for main_dashboard.appeals.recruitment_id. + */ + public UUID getRecruitmentId() { + return (UUID) get(10); + } + + /** + * Setter for main_dashboard.appeals.testrecruitment_id. + */ + public void setTestrecruitmentId(String value) { + set(11, value); + } + + /** + * Getter for main_dashboard.appeals.testrecruitment_id. + */ + public String getTestrecruitmentId() { + return (String) get(11); + } + + // ------------------------------------------------------------------------- + // Primary key information + // ------------------------------------------------------------------------- + + @Override + public Record1 key() { + return (Record1) super.key(); + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached AppealsRecord + */ + public AppealsRecord() { + super(Appeals.APPEALS); + } + + /** + * Create a detached, initialised AppealsRecord + */ + public AppealsRecord(Long idAppeal, BigDecimal totalAppeals, BigDecimal resolved, BigDecimal averageConsideration, BigDecimal averageRating, BigDecimal averageToFace, BigDecimal averageEpgu, Date recordingDate, BigDecimal averageToFacePercent, BigDecimal averageEpguPercent, UUID recruitmentId, String testrecruitmentId) { + super(Appeals.APPEALS); + + setIdAppeal(idAppeal); + setTotalAppeals(totalAppeals); + setResolved(resolved); + setAverageConsideration(averageConsideration); + setAverageRating(averageRating); + setAverageToFace(averageToFace); + setAverageEpgu(averageEpgu); + setRecordingDate(recordingDate); + setAverageToFacePercent(averageToFacePercent); + setAverageEpguPercent(averageEpguPercent); + setRecruitmentId(recruitmentId); + setTestrecruitmentId(testrecruitmentId); + resetChangedOnNotNull(); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/main_dashboard/tables/records/RecruitmentCampaignRecord.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/main_dashboard/tables/records/RecruitmentCampaignRecord.java new file mode 100644 index 0000000..0b650f0 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/main_dashboard/tables/records/RecruitmentCampaignRecord.java @@ -0,0 +1,347 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.main_dashboard.tables.records; + + +import ervu_dashboard.ervu_dashboard.db_beans.main_dashboard.tables.RecruitmentCampaign; + +import java.math.BigDecimal; +import java.sql.Date; +import java.util.UUID; + +import org.jooq.Record1; +import org.jooq.impl.UpdatableRecordImpl; + + +/** + * Призывная кампания уровень РФ + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class RecruitmentCampaignRecord extends UpdatableRecordImpl { + + private static final long serialVersionUID = 1L; + + /** + * Setter for + * main_dashboard.recruitment_campaign.id_recruitment_campaign. + */ + public void setIdRecruitmentCampaign(Long value) { + set(0, value); + } + + /** + * Getter for + * main_dashboard.recruitment_campaign.id_recruitment_campaign. + */ + public Long getIdRecruitmentCampaign() { + return (Long) get(0); + } + + /** + * Setter for main_dashboard.recruitment_campaign.new_recruits. + * Подпадающие под призыв + */ + public void setNewRecruits(BigDecimal value) { + set(1, value); + } + + /** + * Getter for main_dashboard.recruitment_campaign.new_recruits. + * Подпадающие под призыв + */ + public BigDecimal getNewRecruits() { + return (BigDecimal) get(1); + } + + /** + * Setter for + * main_dashboard.recruitment_campaign.subpoenas_sent. + * Направлено повесток + */ + public void setSubpoenasSent(BigDecimal value) { + set(2, value); + } + + /** + * Getter for + * main_dashboard.recruitment_campaign.subpoenas_sent. + * Направлено повесток + */ + public BigDecimal getSubpoenasSent() { + return (BigDecimal) get(2); + } + + /** + * Setter for + * main_dashboard.recruitment_campaign.appeared_on_subpoenas. + * Явились по повесткам + */ + public void setAppearedOnSubpoenas(BigDecimal value) { + set(3, value); + } + + /** + * Getter for + * main_dashboard.recruitment_campaign.appeared_on_subpoenas. + * Явились по повесткам + */ + public BigDecimal getAppearedOnSubpoenas() { + return (BigDecimal) get(3); + } + + /** + * Setter for + * main_dashboard.recruitment_campaign.not_appeared_on_subpoenas. + * Не явились по повесткам + */ + public void setNotAppearedOnSubpoenas(BigDecimal value) { + set(4, value); + } + + /** + * Getter for + * main_dashboard.recruitment_campaign.not_appeared_on_subpoenas. + * Не явились по повесткам + */ + public BigDecimal getNotAppearedOnSubpoenas() { + return (BigDecimal) get(4); + } + + /** + * Setter for + * main_dashboard.recruitment_campaign.postponement_have_right. + * Имеют право на отсрочку + */ + public void setPostponementHaveRight(BigDecimal value) { + set(5, value); + } + + /** + * Getter for + * main_dashboard.recruitment_campaign.postponement_have_right. + * Имеют право на отсрочку + */ + public BigDecimal getPostponementHaveRight() { + return (BigDecimal) get(5); + } + + /** + * Setter for + * main_dashboard.recruitment_campaign.postponement_granted. + * Предоставлена отсрочка + */ + public void setPostponementGranted(BigDecimal value) { + set(6, value); + } + + /** + * Getter for + * main_dashboard.recruitment_campaign.postponement_granted. + * Предоставлена отсрочка + */ + public BigDecimal getPostponementGranted() { + return (BigDecimal) get(6); + } + + /** + * Setter for + * main_dashboard.recruitment_campaign.recording_date. Дата + * записи + */ + public void setRecordingDate(Date value) { + set(7, value); + } + + /** + * Getter for + * main_dashboard.recruitment_campaign.recording_date. Дата + * записи + */ + public Date getRecordingDate() { + return (Date) get(7); + } + + /** + * Setter for + * main_dashboard.recruitment_campaign.spring_autumn. + * Весна/Осень + */ + public void setSpringAutumn(String value) { + set(8, value); + } + + /** + * Getter for + * main_dashboard.recruitment_campaign.spring_autumn. + * Весна/Осень + */ + public String getSpringAutumn() { + return (String) get(8); + } + + /** + * Setter for + * main_dashboard.recruitment_campaign.appeared_on_subpoenas_percent. + * Явились по повесткам процент + */ + public void setAppearedOnSubpoenasPercent(BigDecimal value) { + set(9, value); + } + + /** + * Getter for + * main_dashboard.recruitment_campaign.appeared_on_subpoenas_percent. + * Явились по повесткам процент + */ + public BigDecimal getAppearedOnSubpoenasPercent() { + return (BigDecimal) get(9); + } + + /** + * Setter for + * main_dashboard.recruitment_campaign.not_appeared_on_subpoenas_percent. + * Не явились по повесткам процент + */ + public void setNotAppearedOnSubpoenasPercent(BigDecimal value) { + set(10, value); + } + + /** + * Getter for + * main_dashboard.recruitment_campaign.not_appeared_on_subpoenas_percent. + * Не явились по повесткам процент + */ + public BigDecimal getNotAppearedOnSubpoenasPercent() { + return (BigDecimal) get(10); + } + + /** + * Setter for + * main_dashboard.recruitment_campaign.postponement_have_right_percent. + * Имеют право на отсрочку процент + */ + public void setPostponementHaveRightPercent(BigDecimal value) { + set(11, value); + } + + /** + * Getter for + * main_dashboard.recruitment_campaign.postponement_have_right_percent. + * Имеют право на отсрочку процент + */ + public BigDecimal getPostponementHaveRightPercent() { + return (BigDecimal) get(11); + } + + /** + * Setter for + * main_dashboard.recruitment_campaign.postponement_granted_percent. + * Предоставлена отсрочка процент + */ + public void setPostponementGrantedPercent(BigDecimal value) { + set(12, value); + } + + /** + * Getter for + * main_dashboard.recruitment_campaign.postponement_granted_percent. + * Предоставлена отсрочка процент + */ + public BigDecimal getPostponementGrantedPercent() { + return (BigDecimal) get(12); + } + + /** + * Setter for + * main_dashboard.recruitment_campaign.recruitment_id. + */ + public void setRecruitmentId(UUID value) { + set(13, value); + } + + /** + * Getter for + * main_dashboard.recruitment_campaign.recruitment_id. + */ + public UUID getRecruitmentId() { + return (UUID) get(13); + } + + /** + * Setter for + * main_dashboard.recruitment_campaign.testrecruitment_id. + */ + public void setTestrecruitmentId(String value) { + set(14, value); + } + + /** + * Getter for + * main_dashboard.recruitment_campaign.testrecruitment_id. + */ + public String getTestrecruitmentId() { + return (String) get(14); + } + + /** + * Setter for + * main_dashboard.recruitment_campaign.testspring_autumn. + */ + public void setTestspringAutumn(String value) { + set(15, value); + } + + /** + * Getter for + * main_dashboard.recruitment_campaign.testspring_autumn. + */ + public String getTestspringAutumn() { + return (String) get(15); + } + + // ------------------------------------------------------------------------- + // Primary key information + // ------------------------------------------------------------------------- + + @Override + public Record1 key() { + return (Record1) super.key(); + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached RecruitmentCampaignRecord + */ + public RecruitmentCampaignRecord() { + super(RecruitmentCampaign.RECRUITMENT_CAMPAIGN); + } + + /** + * Create a detached, initialised RecruitmentCampaignRecord + */ + public RecruitmentCampaignRecord(Long idRecruitmentCampaign, BigDecimal newRecruits, BigDecimal subpoenasSent, BigDecimal appearedOnSubpoenas, BigDecimal notAppearedOnSubpoenas, BigDecimal postponementHaveRight, BigDecimal postponementGranted, Date recordingDate, String springAutumn, BigDecimal appearedOnSubpoenasPercent, BigDecimal notAppearedOnSubpoenasPercent, BigDecimal postponementHaveRightPercent, BigDecimal postponementGrantedPercent, UUID recruitmentId, String testrecruitmentId, String testspringAutumn) { + super(RecruitmentCampaign.RECRUITMENT_CAMPAIGN); + + setIdRecruitmentCampaign(idRecruitmentCampaign); + setNewRecruits(newRecruits); + setSubpoenasSent(subpoenasSent); + setAppearedOnSubpoenas(appearedOnSubpoenas); + setNotAppearedOnSubpoenas(notAppearedOnSubpoenas); + setPostponementHaveRight(postponementHaveRight); + setPostponementGranted(postponementGranted); + setRecordingDate(recordingDate); + setSpringAutumn(springAutumn); + setAppearedOnSubpoenasPercent(appearedOnSubpoenasPercent); + setNotAppearedOnSubpoenasPercent(notAppearedOnSubpoenasPercent); + setPostponementHaveRightPercent(postponementHaveRightPercent); + setPostponementGrantedPercent(postponementGrantedPercent); + setRecruitmentId(recruitmentId); + setTestrecruitmentId(testrecruitmentId); + setTestspringAutumn(testspringAutumn); + resetChangedOnNotNull(); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/main_dashboard/tables/records/TotalRegisteredRecord.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/main_dashboard/tables/records/TotalRegisteredRecord.java new file mode 100644 index 0000000..bffdce2 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/main_dashboard/tables/records/TotalRegisteredRecord.java @@ -0,0 +1,288 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.main_dashboard.tables.records; + + +import ervu_dashboard.ervu_dashboard.db_beans.main_dashboard.tables.TotalRegistered; + +import java.math.BigDecimal; +import java.sql.Date; +import java.util.UUID; + +import org.jooq.Record1; +import org.jooq.impl.UpdatableRecordImpl; + + +/** + * Всего на учете уровень РФ + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class TotalRegisteredRecord extends UpdatableRecordImpl { + + private static final long serialVersionUID = 1L; + + /** + * Setter for + * main_dashboard.total_registered.id_total_registered. + */ + public void setIdTotalRegistered(Long value) { + set(0, value); + } + + /** + * Getter for + * main_dashboard.total_registered.id_total_registered. + */ + public Long getIdTotalRegistered() { + return (Long) get(0); + } + + /** + * Setter for main_dashboard.total_registered.total_registered. + * Всего состоят на учете + */ + public void setTotalRegistered(BigDecimal value) { + set(1, value); + } + + /** + * Getter for main_dashboard.total_registered.total_registered. + * Всего состоят на учете + */ + public BigDecimal getTotalRegistered() { + return (BigDecimal) get(1); + } + + /** + * Setter for + * main_dashboard.total_registered.total_registered_M. Всего на + * учете мужчин + */ + public void setTotalRegisteredM(BigDecimal value) { + set(2, value); + } + + /** + * Getter for + * main_dashboard.total_registered.total_registered_M. Всего на + * учете мужчин + */ + public BigDecimal getTotalRegisteredM() { + return (BigDecimal) get(2); + } + + /** + * Setter for + * main_dashboard.total_registered.total_registered_W. Всего на + * учете женщин + */ + public void setTotalRegisteredW(BigDecimal value) { + set(3, value); + } + + /** + * Getter for + * main_dashboard.total_registered.total_registered_W. Всего на + * учете женщин + */ + public BigDecimal getTotalRegisteredW() { + return (BigDecimal) get(3); + } + + /** + * Setter for + * main_dashboard.total_registered.mobilization_criterion. + * Количество подходящих под критерии мобилизации + */ + public void setMobilizationCriterion(BigDecimal value) { + set(4, value); + } + + /** + * Getter for + * main_dashboard.total_registered.mobilization_criterion. + * Количество подходящих под критерии мобилизации + */ + public BigDecimal getMobilizationCriterion() { + return (BigDecimal) get(4); + } + + /** + * Setter for + * main_dashboard.total_registered.volunteer_criterion. + * Количество подходящих под критерии добровольной службы + */ + public void setVolunteerCriterion(BigDecimal value) { + set(5, value); + } + + /** + * Getter for + * main_dashboard.total_registered.volunteer_criterion. + * Количество подходящих под критерии добровольной службы + */ + public BigDecimal getVolunteerCriterion() { + return (BigDecimal) get(5); + } + + /** + * Setter for + * main_dashboard.total_registered.contract_criterion. + * Количество подходящих под критерии контрактной службы + */ + public void setContractCriterion(BigDecimal value) { + set(6, value); + } + + /** + * Getter for + * main_dashboard.total_registered.contract_criterion. + * Количество подходящих под критерии контрактной службы + */ + public BigDecimal getContractCriterion() { + return (BigDecimal) get(6); + } + + /** + * Setter for main_dashboard.total_registered.recording_date. + * дата записи + */ + public void setRecordingDate(Date value) { + set(7, value); + } + + /** + * Getter for main_dashboard.total_registered.recording_date. + * дата записи + */ + public Date getRecordingDate() { + return (Date) get(7); + } + + /** + * Setter for + * main_dashboard.total_registered.mobilization_criterion_percent. + * Процент подходящих под критерии мобилизации + */ + public void setMobilizationCriterionPercent(BigDecimal value) { + set(8, value); + } + + /** + * Getter for + * main_dashboard.total_registered.mobilization_criterion_percent. + * Процент подходящих под критерии мобилизации + */ + public BigDecimal getMobilizationCriterionPercent() { + return (BigDecimal) get(8); + } + + /** + * Setter for + * main_dashboard.total_registered.volunteer_criterion_percent. + * Процент подходящих под критерии добровольной службы + */ + public void setVolunteerCriterionPercent(BigDecimal value) { + set(9, value); + } + + /** + * Getter for + * main_dashboard.total_registered.volunteer_criterion_percent. + * Процент подходящих под критерии добровольной службы + */ + public BigDecimal getVolunteerCriterionPercent() { + return (BigDecimal) get(9); + } + + /** + * Setter for + * main_dashboard.total_registered.contract_criterion_percent. + * Процент подходящих под критерии контрактрой службы + */ + public void setContractCriterionPercent(BigDecimal value) { + set(10, value); + } + + /** + * Getter for + * main_dashboard.total_registered.contract_criterion_percent. + * Процент подходящих под критерии контрактрой службы + */ + public BigDecimal getContractCriterionPercent() { + return (BigDecimal) get(10); + } + + /** + * Setter for main_dashboard.total_registered.recruitment_id. + */ + public void setRecruitmentId(UUID value) { + set(11, value); + } + + /** + * Getter for main_dashboard.total_registered.recruitment_id. + */ + public UUID getRecruitmentId() { + return (UUID) get(11); + } + + /** + * Setter for + * main_dashboard.total_registered.testrecruitment_id. + */ + public void setTestrecruitmentId(String value) { + set(12, value); + } + + /** + * Getter for + * main_dashboard.total_registered.testrecruitment_id. + */ + public String getTestrecruitmentId() { + return (String) get(12); + } + + // ------------------------------------------------------------------------- + // Primary key information + // ------------------------------------------------------------------------- + + @Override + public Record1 key() { + return (Record1) super.key(); + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached TotalRegisteredRecord + */ + public TotalRegisteredRecord() { + super(TotalRegistered.TOTAL_REGISTERED); + } + + /** + * Create a detached, initialised TotalRegisteredRecord + */ + public TotalRegisteredRecord(Long idTotalRegistered, BigDecimal totalRegistered, BigDecimal totalRegisteredM, BigDecimal totalRegisteredW, BigDecimal mobilizationCriterion, BigDecimal volunteerCriterion, BigDecimal contractCriterion, Date recordingDate, BigDecimal mobilizationCriterionPercent, BigDecimal volunteerCriterionPercent, BigDecimal contractCriterionPercent, UUID recruitmentId, String testrecruitmentId) { + super(TotalRegistered.TOTAL_REGISTERED); + + setIdTotalRegistered(idTotalRegistered); + setTotalRegistered(totalRegistered); + setTotalRegisteredM(totalRegisteredM); + setTotalRegisteredW(totalRegisteredW); + setMobilizationCriterion(mobilizationCriterion); + setVolunteerCriterion(volunteerCriterion); + setContractCriterion(contractCriterion); + setRecordingDate(recordingDate); + setMobilizationCriterionPercent(mobilizationCriterionPercent); + setVolunteerCriterionPercent(volunteerCriterionPercent); + setContractCriterionPercent(contractCriterionPercent); + setRecruitmentId(recruitmentId); + setTestrecruitmentId(testrecruitmentId); + resetChangedOnNotNull(); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/main_dashboard/tables/records/WaitingRegistrationRecord.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/main_dashboard/tables/records/WaitingRegistrationRecord.java new file mode 100644 index 0000000..e15e9b6 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/main_dashboard/tables/records/WaitingRegistrationRecord.java @@ -0,0 +1,313 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.main_dashboard.tables.records; + + +import ervu_dashboard.ervu_dashboard.db_beans.main_dashboard.tables.WaitingRegistration; + +import java.math.BigDecimal; +import java.sql.Date; +import java.util.UUID; + +import org.jooq.Record1; +import org.jooq.impl.UpdatableRecordImpl; + + +/** + * Подлежат постановке на учет уровень РФ + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class WaitingRegistrationRecord extends UpdatableRecordImpl { + + private static final long serialVersionUID = 1L; + + /** + * Setter for + * main_dashboard.waiting_registration.id_waiting_registration. + */ + public void setIdWaitingRegistration(Long value) { + set(0, value); + } + + /** + * Getter for + * main_dashboard.waiting_registration.id_waiting_registration. + */ + public Long getIdWaitingRegistration() { + return (Long) get(0); + } + + /** + * Setter for + * main_dashboard.waiting_registration.waiting_registration. + * Всего подлежат постановке на учет + */ + public void setWaitingRegistration(BigDecimal value) { + set(1, value); + } + + /** + * Getter for + * main_dashboard.waiting_registration.waiting_registration. + * Всего подлежат постановке на учет + */ + public BigDecimal getWaitingRegistration() { + return (BigDecimal) get(1); + } + + /** + * Setter for + * main_dashboard.waiting_registration.waiting_registration_M. + * Подлежат постановке мужчины + */ + public void setWaitingRegistrationM(BigDecimal value) { + set(2, value); + } + + /** + * Getter for + * main_dashboard.waiting_registration.waiting_registration_M. + * Подлежат постановке мужчины + */ + public BigDecimal getWaitingRegistrationM() { + return (BigDecimal) get(2); + } + + /** + * Setter for + * main_dashboard.waiting_registration.waiting_registration_W. + * Подлежат постановке женщины + */ + public void setWaitingRegistrationW(BigDecimal value) { + set(3, value); + } + + /** + * Getter for + * main_dashboard.waiting_registration.waiting_registration_W. + * Подлежат постановке женщины + */ + public BigDecimal getWaitingRegistrationW() { + return (BigDecimal) get(3); + } + + /** + * Setter for + * main_dashboard.waiting_registration.mobilization_criterion. + * Количество подлежащих под критерии мобилизации + */ + public void setMobilizationCriterion(BigDecimal value) { + set(4, value); + } + + /** + * Getter for + * main_dashboard.waiting_registration.mobilization_criterion. + * Количество подлежащих под критерии мобилизации + */ + public BigDecimal getMobilizationCriterion() { + return (BigDecimal) get(4); + } + + /** + * Setter for + * main_dashboard.waiting_registration.volunteer_criterion. + * Количество подлежащих под критерии добровольной службы + */ + public void setVolunteerCriterion(BigDecimal value) { + set(5, value); + } + + /** + * Getter for + * main_dashboard.waiting_registration.volunteer_criterion. + * Количество подлежащих под критерии добровольной службы + */ + public BigDecimal getVolunteerCriterion() { + return (BigDecimal) get(5); + } + + /** + * Setter for + * main_dashboard.waiting_registration.contract_criterion. + * Количество подлежащих под критерии контрактной службы + */ + public void setContractCriterion(BigDecimal value) { + set(6, value); + } + + /** + * Getter for + * main_dashboard.waiting_registration.contract_criterion. + * Количество подлежащих под критерии контрактной службы + */ + public BigDecimal getContractCriterion() { + return (BigDecimal) get(6); + } + + /** + * Setter for + * main_dashboard.waiting_registration.recording_date. Дата + * записи + */ + public void setRecordingDate(Date value) { + set(7, value); + } + + /** + * Getter for + * main_dashboard.waiting_registration.recording_date. Дата + * записи + */ + public Date getRecordingDate() { + return (Date) get(7); + } + + /** + * Setter for + * main_dashboard.waiting_registration.waiting_registration_percent. + * Всего подлежат постановке процент + */ + public void setWaitingRegistrationPercent(BigDecimal value) { + set(8, value); + } + + /** + * Getter for + * main_dashboard.waiting_registration.waiting_registration_percent. + * Всего подлежат постановке процент + */ + public BigDecimal getWaitingRegistrationPercent() { + return (BigDecimal) get(8); + } + + /** + * Setter for + * main_dashboard.waiting_registration.mobilization_criterion_percent. + * Процент подлежащих под критерии мобилизации + */ + public void setMobilizationCriterionPercent(BigDecimal value) { + set(9, value); + } + + /** + * Getter for + * main_dashboard.waiting_registration.mobilization_criterion_percent. + * Процент подлежащих под критерии мобилизации + */ + public BigDecimal getMobilizationCriterionPercent() { + return (BigDecimal) get(9); + } + + /** + * Setter for + * main_dashboard.waiting_registration.volunteer_criterion_percent. + * Процент подлежащих под критерии добровольной службы + */ + public void setVolunteerCriterionPercent(BigDecimal value) { + set(10, value); + } + + /** + * Getter for + * main_dashboard.waiting_registration.volunteer_criterion_percent. + * Процент подлежащих под критерии добровольной службы + */ + public BigDecimal getVolunteerCriterionPercent() { + return (BigDecimal) get(10); + } + + /** + * Setter for + * main_dashboard.waiting_registration.contract_criterion_percent. + * Процент подлежащих под критерии контрактной службы + */ + public void setContractCriterionPercent(BigDecimal value) { + set(11, value); + } + + /** + * Getter for + * main_dashboard.waiting_registration.contract_criterion_percent. + * Процент подлежащих под критерии контрактной службы + */ + public BigDecimal getContractCriterionPercent() { + return (BigDecimal) get(11); + } + + /** + * Setter for + * main_dashboard.waiting_registration.recruitment_id. + */ + public void setRecruitmentId(UUID value) { + set(12, value); + } + + /** + * Getter for + * main_dashboard.waiting_registration.recruitment_id. + */ + public UUID getRecruitmentId() { + return (UUID) get(12); + } + + /** + * Setter for + * main_dashboard.waiting_registration.testrecruitment_id. + */ + public void setTestrecruitmentId(String value) { + set(13, value); + } + + /** + * Getter for + * main_dashboard.waiting_registration.testrecruitment_id. + */ + public String getTestrecruitmentId() { + return (String) get(13); + } + + // ------------------------------------------------------------------------- + // Primary key information + // ------------------------------------------------------------------------- + + @Override + public Record1 key() { + return (Record1) super.key(); + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached WaitingRegistrationRecord + */ + public WaitingRegistrationRecord() { + super(WaitingRegistration.WAITING_REGISTRATION); + } + + /** + * Create a detached, initialised WaitingRegistrationRecord + */ + public WaitingRegistrationRecord(Long idWaitingRegistration, BigDecimal waitingRegistration, BigDecimal waitingRegistrationM, BigDecimal waitingRegistrationW, BigDecimal mobilizationCriterion, BigDecimal volunteerCriterion, BigDecimal contractCriterion, Date recordingDate, BigDecimal waitingRegistrationPercent, BigDecimal mobilizationCriterionPercent, BigDecimal volunteerCriterionPercent, BigDecimal contractCriterionPercent, UUID recruitmentId, String testrecruitmentId) { + super(WaitingRegistration.WAITING_REGISTRATION); + + setIdWaitingRegistration(idWaitingRegistration); + setWaitingRegistration(waitingRegistration); + setWaitingRegistrationM(waitingRegistrationM); + setWaitingRegistrationW(waitingRegistrationW); + setMobilizationCriterion(mobilizationCriterion); + setVolunteerCriterion(volunteerCriterion); + setContractCriterion(contractCriterion); + setRecordingDate(recordingDate); + setWaitingRegistrationPercent(waitingRegistrationPercent); + setMobilizationCriterionPercent(mobilizationCriterionPercent); + setVolunteerCriterionPercent(volunteerCriterionPercent); + setContractCriterionPercent(contractCriterionPercent); + setRecruitmentId(recruitmentId); + setTestrecruitmentId(testrecruitmentId); + resetChangedOnNotNull(); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/public_/Keys.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/public_/Keys.java new file mode 100644 index 0000000..f32c952 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/public_/Keys.java @@ -0,0 +1,63 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.public_; + + +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.Citizen; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.Education; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.Employment; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.Gender; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.MaritalStatus; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.PubRecruitment; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.ReasonRegistration; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.Subpoena; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.records.CitizenRecord; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.records.EducationRecord; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.records.EmploymentRecord; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.records.GenderRecord; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.records.MaritalStatusRecord; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.records.PubRecruitmentRecord; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.records.ReasonRegistrationRecord; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.records.SubpoenaRecord; + +import org.jooq.ForeignKey; +import org.jooq.TableField; +import org.jooq.UniqueKey; +import org.jooq.impl.DSL; +import org.jooq.impl.Internal; + + +/** + * A class modelling foreign key relationships and constraints of tables in + * public. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Keys { + + // ------------------------------------------------------------------------- + // UNIQUE and PRIMARY KEY definitions + // ------------------------------------------------------------------------- + + public static final UniqueKey CITIZEN_PKEY = Internal.createUniqueKey(Citizen.CITIZEN, DSL.name("citizen_pkey"), new TableField[] { Citizen.CITIZEN.ID_ERN }, true); + public static final UniqueKey EDUCATION_PKEY = Internal.createUniqueKey(Education.EDUCATION, DSL.name("education_pkey"), new TableField[] { Education.EDUCATION.EDUCATION_ID }, true); + public static final UniqueKey EMPLOYMENT_PKEY = Internal.createUniqueKey(Employment.EMPLOYMENT, DSL.name("employment_pkey"), new TableField[] { Employment.EMPLOYMENT.EMPLOYMENT_ID }, true); + public static final UniqueKey GENDER_PKEY = Internal.createUniqueKey(Gender.GENDER, DSL.name("gender_pkey"), new TableField[] { Gender.GENDER.GENDER_ID }, true); + public static final UniqueKey MARITAL_STATUS_PKEY = Internal.createUniqueKey(MaritalStatus.MARITAL_STATUS, DSL.name("marital_status_pkey"), new TableField[] { MaritalStatus.MARITAL_STATUS.MARITAL_STATUS_ID }, true); + public static final UniqueKey RECRUITMENT_IDM_ID_KEY = Internal.createUniqueKey(PubRecruitment.PUB_RECRUITMENT, DSL.name("recruitment_idm_id_key"), new TableField[] { PubRecruitment.PUB_RECRUITMENT.IDM_ID }, true); + public static final UniqueKey RECRUITMENT_PKEY = Internal.createUniqueKey(PubRecruitment.PUB_RECRUITMENT, DSL.name("recruitment_pkey"), new TableField[] { PubRecruitment.PUB_RECRUITMENT.ID }, true); + public static final UniqueKey REASON_REGISTRATION_PKEY = Internal.createUniqueKey(ReasonRegistration.REASON_REGISTRATION, DSL.name("reason_registration_pkey"), new TableField[] { ReasonRegistration.REASON_REGISTRATION.REASON_REGISTRATION_ID }, true); + public static final UniqueKey SUBPOENA_PKEY = Internal.createUniqueKey(Subpoena.SUBPOENA, DSL.name("subpoena_pkey"), new TableField[] { Subpoena.SUBPOENA.SUBPOENA_ID }, true); + + // ------------------------------------------------------------------------- + // FOREIGN KEY definitions + // ------------------------------------------------------------------------- + + public static final ForeignKey CITIZEN__P_CITIZEN_FK1 = Internal.createForeignKey(Citizen.CITIZEN, DSL.name("p_citizen_fk1"), new TableField[] { Citizen.CITIZEN.RECRUITMENT_ID }, Keys.RECRUITMENT_PKEY, new TableField[] { PubRecruitment.PUB_RECRUITMENT.ID }, true); + public static final ForeignKey CITIZEN__P_CITIZEN_FK2 = Internal.createForeignKey(Citizen.CITIZEN, DSL.name("p_citizen_fk2"), new TableField[] { Citizen.CITIZEN.GENDER_ID }, Keys.GENDER_PKEY, new TableField[] { Gender.GENDER.GENDER_ID }, true); + public static final ForeignKey CITIZEN__P_CITIZEN_FK3 = Internal.createForeignKey(Citizen.CITIZEN, DSL.name("p_citizen_fk3"), new TableField[] { Citizen.CITIZEN.MARITAL_STATUS_ID }, Keys.MARITAL_STATUS_PKEY, new TableField[] { MaritalStatus.MARITAL_STATUS.MARITAL_STATUS_ID }, true); + public static final ForeignKey CITIZEN__P_CITIZEN_FK4 = Internal.createForeignKey(Citizen.CITIZEN, DSL.name("p_citizen_fk4"), new TableField[] { Citizen.CITIZEN.EMPLOYMENT_ID }, Keys.EMPLOYMENT_PKEY, new TableField[] { Employment.EMPLOYMENT.EMPLOYMENT_ID }, true); + public static final ForeignKey CITIZEN__P_CITIZEN_FK5 = Internal.createForeignKey(Citizen.CITIZEN, DSL.name("p_citizen_fk5"), new TableField[] { Citizen.CITIZEN.EDUCATION_ID }, Keys.EDUCATION_PKEY, new TableField[] { Education.EDUCATION.EDUCATION_ID }, true); + public static final ForeignKey CITIZEN__P_CITIZEN_FK6 = Internal.createForeignKey(Citizen.CITIZEN, DSL.name("p_citizen_fk6"), new TableField[] { Citizen.CITIZEN.REASON_REGISTRATION_ID }, Keys.REASON_REGISTRATION_PKEY, new TableField[] { ReasonRegistration.REASON_REGISTRATION.REASON_REGISTRATION_ID }, true); + public static final ForeignKey MARITAL_STATUS__MARITAL_STATUS_FK1 = Internal.createForeignKey(MaritalStatus.MARITAL_STATUS, DSL.name("marital_status_fk1"), new TableField[] { MaritalStatus.MARITAL_STATUS.GENDER_ID }, Keys.GENDER_PKEY, new TableField[] { Gender.GENDER.GENDER_ID }, true); +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/public_/Public.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/public_/Public.java new file mode 100644 index 0000000..44f0f90 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/public_/Public.java @@ -0,0 +1,104 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.public_; + + +import ervu_dashboard.ervu_dashboard.db_beans.DefaultCatalog; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.Citizen; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.Education; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.Employment; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.Gender; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.MaritalStatus; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.PubRecruitment; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.ReasonRegistration; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.Subpoena; + +import java.util.Arrays; +import java.util.List; + +import org.jooq.Catalog; +import org.jooq.Table; +import org.jooq.impl.SchemaImpl; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Public extends SchemaImpl { + + private static final long serialVersionUID = 1L; + + /** + * The reference instance of public + */ + public static final Public PUBLIC = new Public(); + + /** + * The table public.citizen. + */ + public final Citizen CITIZEN = Citizen.CITIZEN; + + /** + * The table public.education. + */ + public final Education EDUCATION = Education.EDUCATION; + + /** + * The table public.employment. + */ + public final Employment EMPLOYMENT = Employment.EMPLOYMENT; + + /** + * The table public.gender. + */ + public final Gender GENDER = Gender.GENDER; + + /** + * The table public.marital_status. + */ + public final MaritalStatus MARITAL_STATUS = MaritalStatus.MARITAL_STATUS; + + /** + * The table public.pub_recruitment. + */ + public final PubRecruitment PUB_RECRUITMENT = PubRecruitment.PUB_RECRUITMENT; + + /** + * The table public.reason_registration. + */ + public final ReasonRegistration REASON_REGISTRATION = ReasonRegistration.REASON_REGISTRATION; + + /** + * The table public.subpoena. + */ + public final Subpoena SUBPOENA = Subpoena.SUBPOENA; + + /** + * No further instances allowed + */ + private Public() { + super("public", null); + } + + + @Override + public Catalog getCatalog() { + return DefaultCatalog.DEFAULT_CATALOG; + } + + @Override + public final List> getTables() { + return Arrays.asList( + Citizen.CITIZEN, + Education.EDUCATION, + Employment.EMPLOYMENT, + Gender.GENDER, + MaritalStatus.MARITAL_STATUS, + PubRecruitment.PUB_RECRUITMENT, + ReasonRegistration.REASON_REGISTRATION, + Subpoena.SUBPOENA + ); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/public_/Routines.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/public_/Routines.java new file mode 100644 index 0000000..d2482fa --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/public_/Routines.java @@ -0,0 +1,41 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.public_; + + +import ervu_dashboard.ervu_dashboard.db_beans.public_.routines.UuidGenerateV4; + +import java.util.UUID; + +import org.jooq.Configuration; +import org.jooq.Field; + + +/** + * Convenience access to all stored procedures and functions in public. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Routines { + + /** + * Call public.uuid_generate_v4 + */ + public static UUID uuidGenerateV4( + Configuration configuration + ) { + UuidGenerateV4 f = new UuidGenerateV4(); + + f.execute(configuration); + return f.getReturnValue(); + } + + /** + * Get public.uuid_generate_v4 as a field. + */ + public static Field uuidGenerateV4() { + UuidGenerateV4 f = new UuidGenerateV4(); + + return f.asField(); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/public_/Tables.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/public_/Tables.java new file mode 100644 index 0000000..35a2377 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/public_/Tables.java @@ -0,0 +1,62 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.public_; + + +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.Citizen; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.Education; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.Employment; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.Gender; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.MaritalStatus; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.PubRecruitment; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.ReasonRegistration; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.Subpoena; + + +/** + * Convenience access to all tables in public. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Tables { + + /** + * The table public.citizen. + */ + public static final Citizen CITIZEN = Citizen.CITIZEN; + + /** + * The table public.education. + */ + public static final Education EDUCATION = Education.EDUCATION; + + /** + * The table public.employment. + */ + public static final Employment EMPLOYMENT = Employment.EMPLOYMENT; + + /** + * The table public.gender. + */ + public static final Gender GENDER = Gender.GENDER; + + /** + * The table public.marital_status. + */ + public static final MaritalStatus MARITAL_STATUS = MaritalStatus.MARITAL_STATUS; + + /** + * The table public.pub_recruitment. + */ + public static final PubRecruitment PUB_RECRUITMENT = PubRecruitment.PUB_RECRUITMENT; + + /** + * The table public.reason_registration. + */ + public static final ReasonRegistration REASON_REGISTRATION = ReasonRegistration.REASON_REGISTRATION; + + /** + * The table public.subpoena. + */ + public static final Subpoena SUBPOENA = Subpoena.SUBPOENA; +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/public_/routines/UuidGenerateV4.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/public_/routines/UuidGenerateV4.java new file mode 100644 index 0000000..a57b094 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/public_/routines/UuidGenerateV4.java @@ -0,0 +1,38 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.public_.routines; + + +import ervu_dashboard.ervu_dashboard.db_beans.public_.Public; + +import java.util.UUID; + +import org.jooq.Parameter; +import org.jooq.impl.AbstractRoutine; +import org.jooq.impl.Internal; +import org.jooq.impl.SQLDataType; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class UuidGenerateV4 extends AbstractRoutine { + + private static final long serialVersionUID = 1L; + + /** + * The parameter public.uuid_generate_v4.RETURN_VALUE. + */ + public static final Parameter RETURN_VALUE = Internal.createParameter("RETURN_VALUE", SQLDataType.UUID, false, false); + + /** + * Create a new routine call instance + */ + public UuidGenerateV4() { + super("uuid_generate_v4", Public.PUBLIC, SQLDataType.UUID); + + setReturnParameter(RETURN_VALUE); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/public_/tables/Citizen.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/public_/tables/Citizen.java new file mode 100644 index 0000000..5d92ace --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/public_/tables/Citizen.java @@ -0,0 +1,438 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.public_.tables; + + +import ervu_dashboard.ervu_dashboard.db_beans.public_.Keys; +import ervu_dashboard.ervu_dashboard.db_beans.public_.Public; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.Education.EducationPath; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.Employment.EmploymentPath; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.Gender.GenderPath; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.MaritalStatus.MaritalStatusPath; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.PubRecruitment.PubRecruitmentPath; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.ReasonRegistration.ReasonRegistrationPath; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.records.CitizenRecord; + +import java.sql.Date; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; +import java.util.UUID; + +import org.jooq.Condition; +import org.jooq.Field; +import org.jooq.ForeignKey; +import org.jooq.InverseForeignKey; +import org.jooq.Name; +import org.jooq.Path; +import org.jooq.PlainSQL; +import org.jooq.QueryPart; +import org.jooq.Record; +import org.jooq.SQL; +import org.jooq.Schema; +import org.jooq.Select; +import org.jooq.Stringly; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.TableOptions; +import org.jooq.UniqueKey; +import org.jooq.impl.DSL; +import org.jooq.impl.SQLDataType; +import org.jooq.impl.TableImpl; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Citizen extends TableImpl { + + private static final long serialVersionUID = 1L; + + /** + * The reference instance of public.citizen + */ + public static final Citizen CITIZEN = new Citizen(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return CitizenRecord.class; + } + + /** + * The column public.citizen.id_ERN. + */ + public final TableField ID_ERN = createField(DSL.name("id_ERN"), SQLDataType.VARCHAR.nullable(false), this, ""); + + /** + * The column public.citizen.fio. + */ + public final TableField FIO = createField(DSL.name("fio"), SQLDataType.VARCHAR, this, ""); + + /** + * The column public.citizen.residence. + */ + public final TableField RESIDENCE = createField(DSL.name("residence"), SQLDataType.VARCHAR, this, ""); + + /** + * The column public.citizen.age. + */ + public final TableField AGE = createField(DSL.name("age"), SQLDataType.VARCHAR, this, ""); + + /** + * The column public.citizen.recruitment. + */ + public final TableField RECRUITMENT = createField(DSL.name("recruitment"), SQLDataType.VARCHAR, this, ""); + + /** + * The column public.citizen.recruitment_id. + */ + public final TableField RECRUITMENT_ID = createField(DSL.name("recruitment_id"), SQLDataType.UUID, this, ""); + + /** + * The column public.citizen.gender_id. + */ + public final TableField GENDER_ID = createField(DSL.name("gender_id"), SQLDataType.BIGINT.nullable(false), this, ""); + + /** + * The column public.citizen.marital_status_id. + */ + public final TableField MARITAL_STATUS_ID = createField(DSL.name("marital_status_id"), SQLDataType.BIGINT, this, ""); + + /** + * The column public.citizen.education_id. + */ + public final TableField EDUCATION_ID = createField(DSL.name("education_id"), SQLDataType.BIGINT, this, ""); + + /** + * The column public.citizen.employment_id. + */ + public final TableField EMPLOYMENT_ID = createField(DSL.name("employment_id"), SQLDataType.BIGINT, this, ""); + + /** + * The column public.citizen.urgent_service. + */ + public final TableField URGENT_SERVICE = createField(DSL.name("urgent_service"), SQLDataType.BOOLEAN.defaultValue(DSL.field(DSL.raw("false"), SQLDataType.BOOLEAN)), this, ""); + + /** + * The column public.citizen.contract_service. + */ + public final TableField CONTRACT_SERVICE = createField(DSL.name("contract_service"), SQLDataType.BOOLEAN.defaultValue(DSL.field(DSL.raw("false"), SQLDataType.BOOLEAN)), this, ""); + + /** + * The column public.citizen.mobilization. + */ + public final TableField MOBILIZATION = createField(DSL.name("mobilization"), SQLDataType.BOOLEAN.defaultValue(DSL.field(DSL.raw("false"), SQLDataType.BOOLEAN)), this, ""); + + /** + * The column public.citizen.is_registered. + */ + public final TableField IS_REGISTERED = createField(DSL.name("is_registered"), SQLDataType.BOOLEAN.defaultValue(DSL.field(DSL.raw("false"), SQLDataType.BOOLEAN)), this, ""); + + /** + * The column public.citizen.reason_registration_id. + */ + public final TableField REASON_REGISTRATION_ID = createField(DSL.name("reason_registration_id"), SQLDataType.INTEGER, this, ""); + + /** + * The column public.citizen.issue_date. + */ + public final TableField ISSUE_DATE = createField(DSL.name("issue_date"), SQLDataType.DATE, this, ""); + + /** + * The column public.citizen.passport_series. + */ + public final TableField PASSPORT_SERIES = createField(DSL.name("passport_series"), SQLDataType.VARCHAR, this, ""); + + /** + * The column public.citizen.passport_number. + */ + public final TableField PASSPORT_NUMBER = createField(DSL.name("passport_number"), SQLDataType.VARCHAR, this, ""); + + /** + * The column public.citizen.number_children. + */ + public final TableField NUMBER_CHILDREN = createField(DSL.name("number_children"), SQLDataType.INTEGER, this, ""); + + /** + * The column public.citizen.phone. + */ + public final TableField PHONE = createField(DSL.name("phone"), SQLDataType.VARCHAR, this, ""); + + private Citizen(Name alias, Table aliased) { + this(alias, aliased, (Field[]) null, null); + } + + private Citizen(Name alias, Table aliased, Field[] parameters, Condition where) { + super(alias, null, aliased, parameters, DSL.comment(""), TableOptions.table(), where); + } + + /** + * Create an aliased public.citizen table reference + */ + public Citizen(String alias) { + this(DSL.name(alias), CITIZEN); + } + + /** + * Create an aliased public.citizen table reference + */ + public Citizen(Name alias) { + this(alias, CITIZEN); + } + + /** + * Create a public.citizen table reference + */ + public Citizen() { + this(DSL.name("citizen"), null); + } + + public Citizen(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath, CITIZEN); + } + + /** + * A subtype implementing {@link Path} for simplified path-based joins. + */ + public static class CitizenPath extends Citizen implements Path { + public CitizenPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath); + } + private CitizenPath(Name alias, Table aliased) { + super(alias, aliased); + } + + @Override + public CitizenPath as(String alias) { + return new CitizenPath(DSL.name(alias), this); + } + + @Override + public CitizenPath as(Name alias) { + return new CitizenPath(alias, this); + } + + @Override + public CitizenPath as(Table alias) { + return new CitizenPath(alias.getQualifiedName(), this); + } + } + + @Override + public Schema getSchema() { + return aliased() ? null : Public.PUBLIC; + } + + @Override + public UniqueKey getPrimaryKey() { + return Keys.CITIZEN_PKEY; + } + + @Override + public List> getReferences() { + return Arrays.asList(Keys.CITIZEN__P_CITIZEN_FK1, Keys.CITIZEN__P_CITIZEN_FK2, Keys.CITIZEN__P_CITIZEN_FK3, Keys.CITIZEN__P_CITIZEN_FK5, Keys.CITIZEN__P_CITIZEN_FK4, Keys.CITIZEN__P_CITIZEN_FK6); + } + + private transient PubRecruitmentPath _pubRecruitment; + + /** + * Get the implicit join path to the public.pub_recruitment + * table. + */ + public PubRecruitmentPath pubRecruitment() { + if (_pubRecruitment == null) + _pubRecruitment = new PubRecruitmentPath(this, Keys.CITIZEN__P_CITIZEN_FK1, null); + + return _pubRecruitment; + } + + private transient GenderPath _gender; + + /** + * Get the implicit join path to the public.gender table. + */ + public GenderPath gender() { + if (_gender == null) + _gender = new GenderPath(this, Keys.CITIZEN__P_CITIZEN_FK2, null); + + return _gender; + } + + private transient MaritalStatusPath _maritalStatus; + + /** + * Get the implicit join path to the public.marital_status + * table. + */ + public MaritalStatusPath maritalStatus() { + if (_maritalStatus == null) + _maritalStatus = new MaritalStatusPath(this, Keys.CITIZEN__P_CITIZEN_FK3, null); + + return _maritalStatus; + } + + private transient EducationPath _education; + + /** + * Get the implicit join path to the public.education table. + */ + public EducationPath education() { + if (_education == null) + _education = new EducationPath(this, Keys.CITIZEN__P_CITIZEN_FK5, null); + + return _education; + } + + private transient EmploymentPath _employment; + + /** + * Get the implicit join path to the public.employment table. + */ + public EmploymentPath employment() { + if (_employment == null) + _employment = new EmploymentPath(this, Keys.CITIZEN__P_CITIZEN_FK4, null); + + return _employment; + } + + private transient ReasonRegistrationPath _reasonRegistration; + + /** + * Get the implicit join path to the public.reason_registration + * table. + */ + public ReasonRegistrationPath reasonRegistration() { + if (_reasonRegistration == null) + _reasonRegistration = new ReasonRegistrationPath(this, Keys.CITIZEN__P_CITIZEN_FK6, null); + + return _reasonRegistration; + } + + @Override + public Citizen as(String alias) { + return new Citizen(DSL.name(alias), this); + } + + @Override + public Citizen as(Name alias) { + return new Citizen(alias, this); + } + + @Override + public Citizen as(Table alias) { + return new Citizen(alias.getQualifiedName(), this); + } + + /** + * Rename this table + */ + @Override + public Citizen rename(String name) { + return new Citizen(DSL.name(name), null); + } + + /** + * Rename this table + */ + @Override + public Citizen rename(Name name) { + return new Citizen(name, null); + } + + /** + * Rename this table + */ + @Override + public Citizen rename(Table name) { + return new Citizen(name.getQualifiedName(), null); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Citizen where(Condition condition) { + return new Citizen(getQualifiedName(), aliased() ? this : null, null, condition); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Citizen where(Collection conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Citizen where(Condition... conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Citizen where(Field condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Citizen where(SQL condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Citizen where(@Stringly.SQL String condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Citizen where(@Stringly.SQL String condition, Object... binds) { + return where(DSL.condition(condition, binds)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Citizen where(@Stringly.SQL String condition, QueryPart... parts) { + return where(DSL.condition(condition, parts)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Citizen whereExists(Select select) { + return where(DSL.exists(select)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Citizen whereNotExists(Select select) { + return where(DSL.notExists(select)); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/public_/tables/Education.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/public_/tables/Education.java new file mode 100644 index 0000000..701fdb7 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/public_/tables/Education.java @@ -0,0 +1,283 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.public_.tables; + + +import ervu_dashboard.ervu_dashboard.db_beans.public_.Keys; +import ervu_dashboard.ervu_dashboard.db_beans.public_.Public; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.Citizen.CitizenPath; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.records.EducationRecord; + +import java.util.Collection; + +import org.jooq.Condition; +import org.jooq.Field; +import org.jooq.ForeignKey; +import org.jooq.Identity; +import org.jooq.InverseForeignKey; +import org.jooq.Name; +import org.jooq.Path; +import org.jooq.PlainSQL; +import org.jooq.QueryPart; +import org.jooq.Record; +import org.jooq.SQL; +import org.jooq.Schema; +import org.jooq.Select; +import org.jooq.Stringly; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.TableOptions; +import org.jooq.UniqueKey; +import org.jooq.impl.DSL; +import org.jooq.impl.SQLDataType; +import org.jooq.impl.TableImpl; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Education extends TableImpl { + + private static final long serialVersionUID = 1L; + + /** + * The reference instance of public.education + */ + public static final Education EDUCATION = new Education(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return EducationRecord.class; + } + + /** + * The column public.education.education_id. + */ + public final TableField EDUCATION_ID = createField(DSL.name("education_id"), SQLDataType.BIGINT.nullable(false).identity(true), this, ""); + + /** + * The column public.education.code. + */ + public final TableField CODE = createField(DSL.name("code"), SQLDataType.INTEGER.nullable(false), this, ""); + + /** + * The column public.education.name. + */ + public final TableField NAME = createField(DSL.name("name"), SQLDataType.VARCHAR.nullable(false), this, ""); + + private Education(Name alias, Table aliased) { + this(alias, aliased, (Field[]) null, null); + } + + private Education(Name alias, Table aliased, Field[] parameters, Condition where) { + super(alias, null, aliased, parameters, DSL.comment(""), TableOptions.table(), where); + } + + /** + * Create an aliased public.education table reference + */ + public Education(String alias) { + this(DSL.name(alias), EDUCATION); + } + + /** + * Create an aliased public.education table reference + */ + public Education(Name alias) { + this(alias, EDUCATION); + } + + /** + * Create a public.education table reference + */ + public Education() { + this(DSL.name("education"), null); + } + + public Education(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath, EDUCATION); + } + + /** + * A subtype implementing {@link Path} for simplified path-based joins. + */ + public static class EducationPath extends Education implements Path { + public EducationPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath); + } + private EducationPath(Name alias, Table aliased) { + super(alias, aliased); + } + + @Override + public EducationPath as(String alias) { + return new EducationPath(DSL.name(alias), this); + } + + @Override + public EducationPath as(Name alias) { + return new EducationPath(alias, this); + } + + @Override + public EducationPath as(Table alias) { + return new EducationPath(alias.getQualifiedName(), this); + } + } + + @Override + public Schema getSchema() { + return aliased() ? null : Public.PUBLIC; + } + + @Override + public Identity getIdentity() { + return (Identity) super.getIdentity(); + } + + @Override + public UniqueKey getPrimaryKey() { + return Keys.EDUCATION_PKEY; + } + + private transient CitizenPath _citizen; + + /** + * Get the implicit to-many join path to the public.citizen + * table + */ + public CitizenPath citizen() { + if (_citizen == null) + _citizen = new CitizenPath(this, null, Keys.CITIZEN__P_CITIZEN_FK5.getInverseKey()); + + return _citizen; + } + + @Override + public Education as(String alias) { + return new Education(DSL.name(alias), this); + } + + @Override + public Education as(Name alias) { + return new Education(alias, this); + } + + @Override + public Education as(Table alias) { + return new Education(alias.getQualifiedName(), this); + } + + /** + * Rename this table + */ + @Override + public Education rename(String name) { + return new Education(DSL.name(name), null); + } + + /** + * Rename this table + */ + @Override + public Education rename(Name name) { + return new Education(name, null); + } + + /** + * Rename this table + */ + @Override + public Education rename(Table name) { + return new Education(name.getQualifiedName(), null); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Education where(Condition condition) { + return new Education(getQualifiedName(), aliased() ? this : null, null, condition); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Education where(Collection conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Education where(Condition... conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Education where(Field condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Education where(SQL condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Education where(@Stringly.SQL String condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Education where(@Stringly.SQL String condition, Object... binds) { + return where(DSL.condition(condition, binds)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Education where(@Stringly.SQL String condition, QueryPart... parts) { + return where(DSL.condition(condition, parts)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Education whereExists(Select select) { + return where(DSL.exists(select)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Education whereNotExists(Select select) { + return where(DSL.notExists(select)); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/public_/tables/Employment.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/public_/tables/Employment.java new file mode 100644 index 0000000..a1d829e --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/public_/tables/Employment.java @@ -0,0 +1,283 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.public_.tables; + + +import ervu_dashboard.ervu_dashboard.db_beans.public_.Keys; +import ervu_dashboard.ervu_dashboard.db_beans.public_.Public; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.Citizen.CitizenPath; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.records.EmploymentRecord; + +import java.util.Collection; + +import org.jooq.Condition; +import org.jooq.Field; +import org.jooq.ForeignKey; +import org.jooq.Identity; +import org.jooq.InverseForeignKey; +import org.jooq.Name; +import org.jooq.Path; +import org.jooq.PlainSQL; +import org.jooq.QueryPart; +import org.jooq.Record; +import org.jooq.SQL; +import org.jooq.Schema; +import org.jooq.Select; +import org.jooq.Stringly; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.TableOptions; +import org.jooq.UniqueKey; +import org.jooq.impl.DSL; +import org.jooq.impl.SQLDataType; +import org.jooq.impl.TableImpl; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Employment extends TableImpl { + + private static final long serialVersionUID = 1L; + + /** + * The reference instance of public.employment + */ + public static final Employment EMPLOYMENT = new Employment(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return EmploymentRecord.class; + } + + /** + * The column public.employment.employment_id. + */ + public final TableField EMPLOYMENT_ID = createField(DSL.name("employment_id"), SQLDataType.BIGINT.nullable(false).identity(true), this, ""); + + /** + * The column public.employment.code. + */ + public final TableField CODE = createField(DSL.name("code"), SQLDataType.INTEGER.nullable(false), this, ""); + + /** + * The column public.employment.name. + */ + public final TableField NAME = createField(DSL.name("name"), SQLDataType.VARCHAR.nullable(false), this, ""); + + private Employment(Name alias, Table aliased) { + this(alias, aliased, (Field[]) null, null); + } + + private Employment(Name alias, Table aliased, Field[] parameters, Condition where) { + super(alias, null, aliased, parameters, DSL.comment(""), TableOptions.table(), where); + } + + /** + * Create an aliased public.employment table reference + */ + public Employment(String alias) { + this(DSL.name(alias), EMPLOYMENT); + } + + /** + * Create an aliased public.employment table reference + */ + public Employment(Name alias) { + this(alias, EMPLOYMENT); + } + + /** + * Create a public.employment table reference + */ + public Employment() { + this(DSL.name("employment"), null); + } + + public Employment(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath, EMPLOYMENT); + } + + /** + * A subtype implementing {@link Path} for simplified path-based joins. + */ + public static class EmploymentPath extends Employment implements Path { + public EmploymentPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath); + } + private EmploymentPath(Name alias, Table aliased) { + super(alias, aliased); + } + + @Override + public EmploymentPath as(String alias) { + return new EmploymentPath(DSL.name(alias), this); + } + + @Override + public EmploymentPath as(Name alias) { + return new EmploymentPath(alias, this); + } + + @Override + public EmploymentPath as(Table alias) { + return new EmploymentPath(alias.getQualifiedName(), this); + } + } + + @Override + public Schema getSchema() { + return aliased() ? null : Public.PUBLIC; + } + + @Override + public Identity getIdentity() { + return (Identity) super.getIdentity(); + } + + @Override + public UniqueKey getPrimaryKey() { + return Keys.EMPLOYMENT_PKEY; + } + + private transient CitizenPath _citizen; + + /** + * Get the implicit to-many join path to the public.citizen + * table + */ + public CitizenPath citizen() { + if (_citizen == null) + _citizen = new CitizenPath(this, null, Keys.CITIZEN__P_CITIZEN_FK4.getInverseKey()); + + return _citizen; + } + + @Override + public Employment as(String alias) { + return new Employment(DSL.name(alias), this); + } + + @Override + public Employment as(Name alias) { + return new Employment(alias, this); + } + + @Override + public Employment as(Table alias) { + return new Employment(alias.getQualifiedName(), this); + } + + /** + * Rename this table + */ + @Override + public Employment rename(String name) { + return new Employment(DSL.name(name), null); + } + + /** + * Rename this table + */ + @Override + public Employment rename(Name name) { + return new Employment(name, null); + } + + /** + * Rename this table + */ + @Override + public Employment rename(Table name) { + return new Employment(name.getQualifiedName(), null); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Employment where(Condition condition) { + return new Employment(getQualifiedName(), aliased() ? this : null, null, condition); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Employment where(Collection conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Employment where(Condition... conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Employment where(Field condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Employment where(SQL condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Employment where(@Stringly.SQL String condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Employment where(@Stringly.SQL String condition, Object... binds) { + return where(DSL.condition(condition, binds)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Employment where(@Stringly.SQL String condition, QueryPart... parts) { + return where(DSL.condition(condition, parts)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Employment whereExists(Select select) { + return where(DSL.exists(select)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Employment whereNotExists(Select select) { + return where(DSL.notExists(select)); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/public_/tables/Gender.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/public_/tables/Gender.java new file mode 100644 index 0000000..f354fcc --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/public_/tables/Gender.java @@ -0,0 +1,297 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.public_.tables; + + +import ervu_dashboard.ervu_dashboard.db_beans.public_.Keys; +import ervu_dashboard.ervu_dashboard.db_beans.public_.Public; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.Citizen.CitizenPath; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.MaritalStatus.MaritalStatusPath; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.records.GenderRecord; + +import java.util.Collection; + +import org.jooq.Condition; +import org.jooq.Field; +import org.jooq.ForeignKey; +import org.jooq.Identity; +import org.jooq.InverseForeignKey; +import org.jooq.Name; +import org.jooq.Path; +import org.jooq.PlainSQL; +import org.jooq.QueryPart; +import org.jooq.Record; +import org.jooq.SQL; +import org.jooq.Schema; +import org.jooq.Select; +import org.jooq.Stringly; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.TableOptions; +import org.jooq.UniqueKey; +import org.jooq.impl.DSL; +import org.jooq.impl.SQLDataType; +import org.jooq.impl.TableImpl; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Gender extends TableImpl { + + private static final long serialVersionUID = 1L; + + /** + * The reference instance of public.gender + */ + public static final Gender GENDER = new Gender(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return GenderRecord.class; + } + + /** + * The column public.gender.gender_id. + */ + public final TableField GENDER_ID = createField(DSL.name("gender_id"), SQLDataType.BIGINT.nullable(false).identity(true), this, ""); + + /** + * The column public.gender.code. + */ + public final TableField CODE = createField(DSL.name("code"), SQLDataType.VARCHAR.nullable(false), this, ""); + + /** + * The column public.gender.name. + */ + public final TableField NAME = createField(DSL.name("name"), SQLDataType.VARCHAR.nullable(false), this, ""); + + private Gender(Name alias, Table aliased) { + this(alias, aliased, (Field[]) null, null); + } + + private Gender(Name alias, Table aliased, Field[] parameters, Condition where) { + super(alias, null, aliased, parameters, DSL.comment(""), TableOptions.table(), where); + } + + /** + * Create an aliased public.gender table reference + */ + public Gender(String alias) { + this(DSL.name(alias), GENDER); + } + + /** + * Create an aliased public.gender table reference + */ + public Gender(Name alias) { + this(alias, GENDER); + } + + /** + * Create a public.gender table reference + */ + public Gender() { + this(DSL.name("gender"), null); + } + + public Gender(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath, GENDER); + } + + /** + * A subtype implementing {@link Path} for simplified path-based joins. + */ + public static class GenderPath extends Gender implements Path { + public GenderPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath); + } + private GenderPath(Name alias, Table aliased) { + super(alias, aliased); + } + + @Override + public GenderPath as(String alias) { + return new GenderPath(DSL.name(alias), this); + } + + @Override + public GenderPath as(Name alias) { + return new GenderPath(alias, this); + } + + @Override + public GenderPath as(Table alias) { + return new GenderPath(alias.getQualifiedName(), this); + } + } + + @Override + public Schema getSchema() { + return aliased() ? null : Public.PUBLIC; + } + + @Override + public Identity getIdentity() { + return (Identity) super.getIdentity(); + } + + @Override + public UniqueKey getPrimaryKey() { + return Keys.GENDER_PKEY; + } + + private transient CitizenPath _citizen; + + /** + * Get the implicit to-many join path to the public.citizen + * table + */ + public CitizenPath citizen() { + if (_citizen == null) + _citizen = new CitizenPath(this, null, Keys.CITIZEN__P_CITIZEN_FK2.getInverseKey()); + + return _citizen; + } + + private transient MaritalStatusPath _maritalStatus; + + /** + * Get the implicit to-many join path to the + * public.marital_status table + */ + public MaritalStatusPath maritalStatus() { + if (_maritalStatus == null) + _maritalStatus = new MaritalStatusPath(this, null, Keys.MARITAL_STATUS__MARITAL_STATUS_FK1.getInverseKey()); + + return _maritalStatus; + } + + @Override + public Gender as(String alias) { + return new Gender(DSL.name(alias), this); + } + + @Override + public Gender as(Name alias) { + return new Gender(alias, this); + } + + @Override + public Gender as(Table alias) { + return new Gender(alias.getQualifiedName(), this); + } + + /** + * Rename this table + */ + @Override + public Gender rename(String name) { + return new Gender(DSL.name(name), null); + } + + /** + * Rename this table + */ + @Override + public Gender rename(Name name) { + return new Gender(name, null); + } + + /** + * Rename this table + */ + @Override + public Gender rename(Table name) { + return new Gender(name.getQualifiedName(), null); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Gender where(Condition condition) { + return new Gender(getQualifiedName(), aliased() ? this : null, null, condition); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Gender where(Collection conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Gender where(Condition... conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Gender where(Field condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Gender where(SQL condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Gender where(@Stringly.SQL String condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Gender where(@Stringly.SQL String condition, Object... binds) { + return where(DSL.condition(condition, binds)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Gender where(@Stringly.SQL String condition, QueryPart... parts) { + return where(DSL.condition(condition, parts)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Gender whereExists(Select select) { + return where(DSL.exists(select)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Gender whereNotExists(Select select) { + return where(DSL.notExists(select)); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/public_/tables/MaritalStatus.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/public_/tables/MaritalStatus.java new file mode 100644 index 0000000..eff6941 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/public_/tables/MaritalStatus.java @@ -0,0 +1,308 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.public_.tables; + + +import ervu_dashboard.ervu_dashboard.db_beans.public_.Keys; +import ervu_dashboard.ervu_dashboard.db_beans.public_.Public; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.Citizen.CitizenPath; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.Gender.GenderPath; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.records.MaritalStatusRecord; + +import java.util.Arrays; +import java.util.Collection; +import java.util.List; + +import org.jooq.Condition; +import org.jooq.Field; +import org.jooq.ForeignKey; +import org.jooq.Identity; +import org.jooq.InverseForeignKey; +import org.jooq.Name; +import org.jooq.Path; +import org.jooq.PlainSQL; +import org.jooq.QueryPart; +import org.jooq.Record; +import org.jooq.SQL; +import org.jooq.Schema; +import org.jooq.Select; +import org.jooq.Stringly; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.TableOptions; +import org.jooq.UniqueKey; +import org.jooq.impl.DSL; +import org.jooq.impl.SQLDataType; +import org.jooq.impl.TableImpl; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class MaritalStatus extends TableImpl { + + private static final long serialVersionUID = 1L; + + /** + * The reference instance of public.marital_status + */ + public static final MaritalStatus MARITAL_STATUS = new MaritalStatus(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return MaritalStatusRecord.class; + } + + /** + * The column public.marital_status.marital_status_id. + */ + public final TableField MARITAL_STATUS_ID = createField(DSL.name("marital_status_id"), SQLDataType.BIGINT.nullable(false).identity(true), this, ""); + + /** + * The column public.marital_status.code. + */ + public final TableField CODE = createField(DSL.name("code"), SQLDataType.VARCHAR.nullable(false), this, ""); + + /** + * The column public.marital_status.name. + */ + public final TableField NAME = createField(DSL.name("name"), SQLDataType.VARCHAR.nullable(false), this, ""); + + /** + * The column public.marital_status.gender_id. + */ + public final TableField GENDER_ID = createField(DSL.name("gender_id"), SQLDataType.BIGINT.nullable(false), this, ""); + + private MaritalStatus(Name alias, Table aliased) { + this(alias, aliased, (Field[]) null, null); + } + + private MaritalStatus(Name alias, Table aliased, Field[] parameters, Condition where) { + super(alias, null, aliased, parameters, DSL.comment(""), TableOptions.table(), where); + } + + /** + * Create an aliased public.marital_status table reference + */ + public MaritalStatus(String alias) { + this(DSL.name(alias), MARITAL_STATUS); + } + + /** + * Create an aliased public.marital_status table reference + */ + public MaritalStatus(Name alias) { + this(alias, MARITAL_STATUS); + } + + /** + * Create a public.marital_status table reference + */ + public MaritalStatus() { + this(DSL.name("marital_status"), null); + } + + public MaritalStatus(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath, MARITAL_STATUS); + } + + /** + * A subtype implementing {@link Path} for simplified path-based joins. + */ + public static class MaritalStatusPath extends MaritalStatus implements Path { + public MaritalStatusPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath); + } + private MaritalStatusPath(Name alias, Table aliased) { + super(alias, aliased); + } + + @Override + public MaritalStatusPath as(String alias) { + return new MaritalStatusPath(DSL.name(alias), this); + } + + @Override + public MaritalStatusPath as(Name alias) { + return new MaritalStatusPath(alias, this); + } + + @Override + public MaritalStatusPath as(Table alias) { + return new MaritalStatusPath(alias.getQualifiedName(), this); + } + } + + @Override + public Schema getSchema() { + return aliased() ? null : Public.PUBLIC; + } + + @Override + public Identity getIdentity() { + return (Identity) super.getIdentity(); + } + + @Override + public UniqueKey getPrimaryKey() { + return Keys.MARITAL_STATUS_PKEY; + } + + @Override + public List> getReferences() { + return Arrays.asList(Keys.MARITAL_STATUS__MARITAL_STATUS_FK1); + } + + private transient GenderPath _gender; + + /** + * Get the implicit join path to the public.gender table. + */ + public GenderPath gender() { + if (_gender == null) + _gender = new GenderPath(this, Keys.MARITAL_STATUS__MARITAL_STATUS_FK1, null); + + return _gender; + } + + private transient CitizenPath _citizen; + + /** + * Get the implicit to-many join path to the public.citizen + * table + */ + public CitizenPath citizen() { + if (_citizen == null) + _citizen = new CitizenPath(this, null, Keys.CITIZEN__P_CITIZEN_FK3.getInverseKey()); + + return _citizen; + } + + @Override + public MaritalStatus as(String alias) { + return new MaritalStatus(DSL.name(alias), this); + } + + @Override + public MaritalStatus as(Name alias) { + return new MaritalStatus(alias, this); + } + + @Override + public MaritalStatus as(Table alias) { + return new MaritalStatus(alias.getQualifiedName(), this); + } + + /** + * Rename this table + */ + @Override + public MaritalStatus rename(String name) { + return new MaritalStatus(DSL.name(name), null); + } + + /** + * Rename this table + */ + @Override + public MaritalStatus rename(Name name) { + return new MaritalStatus(name, null); + } + + /** + * Rename this table + */ + @Override + public MaritalStatus rename(Table name) { + return new MaritalStatus(name.getQualifiedName(), null); + } + + /** + * Create an inline derived table from this table + */ + @Override + public MaritalStatus where(Condition condition) { + return new MaritalStatus(getQualifiedName(), aliased() ? this : null, null, condition); + } + + /** + * Create an inline derived table from this table + */ + @Override + public MaritalStatus where(Collection conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public MaritalStatus where(Condition... conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public MaritalStatus where(Field condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public MaritalStatus where(SQL condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public MaritalStatus where(@Stringly.SQL String condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public MaritalStatus where(@Stringly.SQL String condition, Object... binds) { + return where(DSL.condition(condition, binds)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public MaritalStatus where(@Stringly.SQL String condition, QueryPart... parts) { + return where(DSL.condition(condition, parts)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public MaritalStatus whereExists(Select select) { + return where(DSL.exists(select)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public MaritalStatus whereNotExists(Select select) { + return where(DSL.notExists(select)); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/public_/tables/PubRecruitment.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/public_/tables/PubRecruitment.java new file mode 100644 index 0000000..3eb09a9 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/public_/tables/PubRecruitment.java @@ -0,0 +1,726 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.public_.tables; + + +import ervu_dashboard.ervu_dashboard.db_beans.appeals.tables.MainProfile.MainProfilePath; +import ervu_dashboard.ervu_dashboard.db_beans.appeals.tables.ReasonsAppeal.ReasonsAppealPath; +import ervu_dashboard.ervu_dashboard.db_beans.appeals.tables.ReviewRating.ReviewRatingPath; +import ervu_dashboard.ervu_dashboard.db_beans.appeals.tables.TopicAppeal.TopicAppealPath; +import ervu_dashboard.ervu_dashboard.db_beans.main_dashboard.tables.Appeals.AppealsPath; +import ervu_dashboard.ervu_dashboard.db_beans.main_dashboard.tables.RecruitmentCampaign.RecruitmentCampaignPath; +import ervu_dashboard.ervu_dashboard.db_beans.main_dashboard.tables.TotalRegistered.TotalRegisteredPath; +import ervu_dashboard.ervu_dashboard.db_beans.main_dashboard.tables.WaitingRegistration.WaitingRegistrationPath; +import ervu_dashboard.ervu_dashboard.db_beans.public_.Keys; +import ervu_dashboard.ervu_dashboard.db_beans.public_.Public; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.Citizen.CitizenPath; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.records.PubRecruitmentRecord; +import ervu_dashboard.ervu_dashboard.db_beans.ratings.tables.AppearSubppoena.AppearSubppoenaPath; +import ervu_dashboard.ervu_dashboard.db_beans.ratings.tables.ConsiderationComplaint.ConsiderationComplaintPath; +import ervu_dashboard.ervu_dashboard.db_beans.ratings.tables.Recruitment.RecruitmentPath; +import ervu_dashboard.ervu_dashboard.db_beans.recruitment_campaign.tables.Subpoenas.SubpoenasPath; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.Age.AgePath; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.Busyness.BusynessPath; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.ChildMinor.ChildMinorPath; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.DriverLicense.DriverLicensePath; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.EducationLevel.EducationLevelPath; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.MaritalStatus.MaritalStatusPath; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.RegMilCat.RegMilCatPath; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.RemovedRegistry.RemovedRegistryPath; + +import java.sql.Timestamp; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; +import java.util.UUID; + +import org.jooq.Condition; +import org.jooq.Field; +import org.jooq.ForeignKey; +import org.jooq.InverseForeignKey; +import org.jooq.Name; +import org.jooq.Path; +import org.jooq.PlainSQL; +import org.jooq.QueryPart; +import org.jooq.Record; +import org.jooq.SQL; +import org.jooq.Schema; +import org.jooq.Select; +import org.jooq.Stringly; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.TableOptions; +import org.jooq.UniqueKey; +import org.jooq.impl.DSL; +import org.jooq.impl.SQLDataType; +import org.jooq.impl.TableImpl; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class PubRecruitment extends TableImpl { + + private static final long serialVersionUID = 1L; + + /** + * The reference instance of public.pub_recruitment + */ + public static final PubRecruitment PUB_RECRUITMENT = new PubRecruitment(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return PubRecruitmentRecord.class; + } + + /** + * The column public.pub_recruitment.id. + */ + public final TableField ID = createField(DSL.name("id"), SQLDataType.UUID.nullable(false).defaultValue(DSL.field(DSL.raw("uuid_generate_v4()"), SQLDataType.UUID)), this, ""); + + /** + * The column public.pub_recruitment.idm_id. + */ + public final TableField IDM_ID = createField(DSL.name("idm_id"), SQLDataType.VARCHAR(256), this, ""); + + /** + * The column public.pub_recruitment.parent_id. + */ + public final TableField PARENT_ID = createField(DSL.name("parent_id"), SQLDataType.VARCHAR, this, ""); + + /** + * The column public.pub_recruitment.version. + */ + public final TableField VERSION = createField(DSL.name("version"), SQLDataType.INTEGER, this, ""); + + /** + * The column public.pub_recruitment.created_at. + */ + public final TableField CREATED_AT = createField(DSL.name("created_at"), SQLDataType.TIMESTAMP(0).nullable(false).defaultValue(DSL.field(DSL.raw("now()"), SQLDataType.TIMESTAMP)), this, ""); + + /** + * The column public.pub_recruitment.updated_at. + */ + public final TableField UPDATED_AT = createField(DSL.name("updated_at"), SQLDataType.TIMESTAMP(0).nullable(false).defaultValue(DSL.field(DSL.raw("now()"), SQLDataType.TIMESTAMP)), this, ""); + + /** + * The column public.pub_recruitment.schema. + */ + public final TableField SCHEMA = createField(DSL.name("schema"), SQLDataType.VARCHAR(64).nullable(false), this, ""); + + /** + * The column public.pub_recruitment.military_code. + */ + public final TableField MILITARY_CODE = createField(DSL.name("military_code"), SQLDataType.VARCHAR(16), this, ""); + + /** + * The column public.pub_recruitment.shortname. + */ + public final TableField SHORTNAME = createField(DSL.name("shortname"), SQLDataType.VARCHAR.nullable(false), this, ""); + + /** + * The column public.pub_recruitment.fullname. + */ + public final TableField FULLNAME = createField(DSL.name("fullname"), SQLDataType.VARCHAR.nullable(false), this, ""); + + /** + * The column public.pub_recruitment.dns. + */ + public final TableField DNS = createField(DSL.name("dns"), SQLDataType.VARCHAR(64), this, ""); + + /** + * The column public.pub_recruitment.email. + */ + public final TableField EMAIL = createField(DSL.name("email"), SQLDataType.VARCHAR(255), this, ""); + + /** + * The column public.pub_recruitment.phone. + */ + public final TableField PHONE = createField(DSL.name("phone"), SQLDataType.VARCHAR(24), this, ""); + + /** + * The column public.pub_recruitment.address. + */ + public final TableField ADDRESS = createField(DSL.name("address"), SQLDataType.VARCHAR, this, ""); + + /** + * The column public.pub_recruitment.address_id. + */ + public final TableField ADDRESS_ID = createField(DSL.name("address_id"), SQLDataType.VARCHAR, this, ""); + + /** + * The column public.pub_recruitment.postal_address. + */ + public final TableField POSTAL_ADDRESS = createField(DSL.name("postal_address"), SQLDataType.VARCHAR, this, ""); + + /** + * The column public.pub_recruitment.postal_address_id. + */ + public final TableField POSTAL_ADDRESS_ID = createField(DSL.name("postal_address_id"), SQLDataType.VARCHAR, this, ""); + + /** + * The column public.pub_recruitment.nsi_department_id. + */ + public final TableField NSI_DEPARTMENT_ID = createField(DSL.name("nsi_department_id"), SQLDataType.VARCHAR, this, ""); + + /** + * The column public.pub_recruitment.nsi_organization_id. + */ + public final TableField NSI_ORGANIZATION_ID = createField(DSL.name("nsi_organization_id"), SQLDataType.VARCHAR, this, ""); + + /** + * The column public.pub_recruitment.oktmo. + */ + public final TableField OKTMO = createField(DSL.name("oktmo"), SQLDataType.VARCHAR, this, ""); + + /** + * The column public.pub_recruitment.org_ogrn. + */ + public final TableField ORG_OGRN = createField(DSL.name("org_ogrn"), SQLDataType.VARCHAR, this, ""); + + /** + * The column public.pub_recruitment.dep_ogrn. + */ + public final TableField DEP_OGRN = createField(DSL.name("dep_ogrn"), SQLDataType.VARCHAR, this, ""); + + /** + * The column public.pub_recruitment.epgu_id. + */ + public final TableField EPGU_ID = createField(DSL.name("epgu_id"), SQLDataType.VARCHAR, this, ""); + + /** + * The column public.pub_recruitment.kpp. + */ + public final TableField KPP = createField(DSL.name("kpp"), SQLDataType.VARCHAR(64), this, ""); + + /** + * The column public.pub_recruitment.inn. + */ + public final TableField INN = createField(DSL.name("inn"), SQLDataType.VARCHAR(64), this, ""); + + /** + * The column public.pub_recruitment.okato. + */ + public final TableField OKATO = createField(DSL.name("okato"), SQLDataType.VARCHAR(64), this, ""); + + /** + * The column public.pub_recruitment.division_type. + */ + public final TableField DIVISION_TYPE = createField(DSL.name("division_type"), SQLDataType.VARCHAR(64), this, ""); + + /** + * The column public.pub_recruitment.tns_department_id. + */ + public final TableField TNS_DEPARTMENT_ID = createField(DSL.name("tns_department_id"), SQLDataType.VARCHAR, this, ""); + + /** + * The column public.pub_recruitment.enabled. + */ + public final TableField ENABLED = createField(DSL.name("enabled"), SQLDataType.BOOLEAN.nullable(false).defaultValue(DSL.field(DSL.raw("true"), SQLDataType.BOOLEAN)), this, ""); + + /** + * The column public.pub_recruitment.timezone. + */ + public final TableField TIMEZONE = createField(DSL.name("timezone"), SQLDataType.VARCHAR(64), this, ""); + + /** + * The column public.pub_recruitment.reports_enabled. + */ + public final TableField REPORTS_ENABLED = createField(DSL.name("reports_enabled"), SQLDataType.BOOLEAN, this, ""); + + /** + * The column public.pub_recruitment.region_id. + */ + public final TableField REGION_ID = createField(DSL.name("region_id"), SQLDataType.VARCHAR, this, ""); + + /** + * The column public.pub_recruitment.series. + */ + public final TableField SERIES = createField(DSL.name("series"), SQLDataType.VARCHAR(64), this, ""); + + /** + * The column public.pub_recruitment.hidden. + */ + public final TableField HIDDEN = createField(DSL.name("hidden"), SQLDataType.BOOLEAN.nullable(false).defaultValue(DSL.field(DSL.raw("false"), SQLDataType.BOOLEAN)), this, ""); + + /** + * The column public.pub_recruitment.sort. + */ + public final TableField SORT = createField(DSL.name("sort"), SQLDataType.INTEGER.nullable(false), this, ""); + + private PubRecruitment(Name alias, Table aliased) { + this(alias, aliased, (Field[]) null, null); + } + + private PubRecruitment(Name alias, Table aliased, Field[] parameters, Condition where) { + super(alias, null, aliased, parameters, DSL.comment(""), TableOptions.table(), where); + } + + /** + * Create an aliased public.pub_recruitment table reference + */ + public PubRecruitment(String alias) { + this(DSL.name(alias), PUB_RECRUITMENT); + } + + /** + * Create an aliased public.pub_recruitment table reference + */ + public PubRecruitment(Name alias) { + this(alias, PUB_RECRUITMENT); + } + + /** + * Create a public.pub_recruitment table reference + */ + public PubRecruitment() { + this(DSL.name("pub_recruitment"), null); + } + + public PubRecruitment(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath, PUB_RECRUITMENT); + } + + /** + * A subtype implementing {@link Path} for simplified path-based joins. + */ + public static class PubRecruitmentPath extends PubRecruitment implements Path { + public PubRecruitmentPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath); + } + private PubRecruitmentPath(Name alias, Table aliased) { + super(alias, aliased); + } + + @Override + public PubRecruitmentPath as(String alias) { + return new PubRecruitmentPath(DSL.name(alias), this); + } + + @Override + public PubRecruitmentPath as(Name alias) { + return new PubRecruitmentPath(alias, this); + } + + @Override + public PubRecruitmentPath as(Table alias) { + return new PubRecruitmentPath(alias.getQualifiedName(), this); + } + } + + @Override + public Schema getSchema() { + return aliased() ? null : Public.PUBLIC; + } + + @Override + public UniqueKey getPrimaryKey() { + return Keys.RECRUITMENT_PKEY; + } + + @Override + public List> getUniqueKeys() { + return Arrays.asList(Keys.RECRUITMENT_IDM_ID_KEY); + } + + private transient MainProfilePath _mainProfile; + + /** + * Get the implicit to-many join path to the + * appeals.main_profile table + */ + public MainProfilePath mainProfile() { + if (_mainProfile == null) + _mainProfile = new MainProfilePath(this, null, ervu_dashboard.ervu_dashboard.db_beans.appeals.Keys.MAIN_PROFILE__MAIN_PROFILE_FK1.getInverseKey()); + + return _mainProfile; + } + + private transient ReasonsAppealPath _reasonsAppeal; + + /** + * Get the implicit to-many join path to the + * appeals.reasons_appeal table + */ + public ReasonsAppealPath reasonsAppeal() { + if (_reasonsAppeal == null) + _reasonsAppeal = new ReasonsAppealPath(this, null, ervu_dashboard.ervu_dashboard.db_beans.appeals.Keys.REASONS_APPEAL__REASONS_APPEAL_FK1.getInverseKey()); + + return _reasonsAppeal; + } + + private transient ReviewRatingPath _reviewRating; + + /** + * Get the implicit to-many join path to the + * appeals.review_rating table + */ + public ReviewRatingPath reviewRating() { + if (_reviewRating == null) + _reviewRating = new ReviewRatingPath(this, null, ervu_dashboard.ervu_dashboard.db_beans.appeals.Keys.REVIEW_RATING__REVIEW_RATING_FK1.getInverseKey()); + + return _reviewRating; + } + + private transient TopicAppealPath _topicAppeal; + + /** + * Get the implicit to-many join path to the + * appeals.topic_appeal table + */ + public TopicAppealPath topicAppeal() { + if (_topicAppeal == null) + _topicAppeal = new TopicAppealPath(this, null, ervu_dashboard.ervu_dashboard.db_beans.appeals.Keys.TOPIC_APPEAL__TOPIC_APPEAL_FK1.getInverseKey()); + + return _topicAppeal; + } + + private transient AppealsPath _appeals; + + /** + * Get the implicit to-many join path to the + * main_dashboard.appeals table + */ + public AppealsPath appeals() { + if (_appeals == null) + _appeals = new AppealsPath(this, null, ervu_dashboard.ervu_dashboard.db_beans.main_dashboard.Keys.APPEALS__MD_APPEALS_FK1.getInverseKey()); + + return _appeals; + } + + private transient RecruitmentCampaignPath _recruitmentCampaign; + + /** + * Get the implicit to-many join path to the + * main_dashboard.recruitment_campaign table + */ + public RecruitmentCampaignPath recruitmentCampaign() { + if (_recruitmentCampaign == null) + _recruitmentCampaign = new RecruitmentCampaignPath(this, null, ervu_dashboard.ervu_dashboard.db_beans.main_dashboard.Keys.RECRUITMENT_CAMPAIGN__RECRUITMENT_CAMPAIGN_FK1.getInverseKey()); + + return _recruitmentCampaign; + } + + private transient TotalRegisteredPath _totalRegistered; + + /** + * Get the implicit to-many join path to the + * main_dashboard.total_registered table + */ + public TotalRegisteredPath totalRegistered() { + if (_totalRegistered == null) + _totalRegistered = new TotalRegisteredPath(this, null, ervu_dashboard.ervu_dashboard.db_beans.main_dashboard.Keys.TOTAL_REGISTERED__MD_TOTAL_REGISTERED_FK1.getInverseKey()); + + return _totalRegistered; + } + + private transient WaitingRegistrationPath _waitingRegistration; + + /** + * Get the implicit to-many join path to the + * main_dashboard.waiting_registration table + */ + public WaitingRegistrationPath waitingRegistration() { + if (_waitingRegistration == null) + _waitingRegistration = new WaitingRegistrationPath(this, null, ervu_dashboard.ervu_dashboard.db_beans.main_dashboard.Keys.WAITING_REGISTRATION__MD_WAITING_REGISTRATION_FK1.getInverseKey()); + + return _waitingRegistration; + } + + private transient CitizenPath _citizen; + + /** + * Get the implicit to-many join path to the public.citizen + * table + */ + public CitizenPath citizen() { + if (_citizen == null) + _citizen = new CitizenPath(this, null, Keys.CITIZEN__P_CITIZEN_FK1.getInverseKey()); + + return _citizen; + } + + private transient AppearSubppoenaPath _appearSubppoena; + + /** + * Get the implicit to-many join path to the + * ratings.appear_subppoena table + */ + public AppearSubppoenaPath appearSubppoena() { + if (_appearSubppoena == null) + _appearSubppoena = new AppearSubppoenaPath(this, null, ervu_dashboard.ervu_dashboard.db_beans.ratings.Keys.APPEAR_SUBPPOENA__APPEAR_SUBPPOENA_FK1.getInverseKey()); + + return _appearSubppoena; + } + + private transient ConsiderationComplaintPath _considerationComplaint; + + /** + * Get the implicit to-many join path to the + * ratings.consideration_complaint table + */ + public ConsiderationComplaintPath considerationComplaint() { + if (_considerationComplaint == null) + _considerationComplaint = new ConsiderationComplaintPath(this, null, ervu_dashboard.ervu_dashboard.db_beans.ratings.Keys.CONSIDERATION_COMPLAINT__CONSIDERATION_COMPLAINT_FK1.getInverseKey()); + + return _considerationComplaint; + } + + private transient RecruitmentPath _recruitment; + + /** + * Get the implicit to-many join path to the + * ratings.recruitment table + */ + public RecruitmentPath recruitment() { + if (_recruitment == null) + _recruitment = new RecruitmentPath(this, null, ervu_dashboard.ervu_dashboard.db_beans.ratings.Keys.RECRUITMENT__R_RECRUITMENT_FK1.getInverseKey()); + + return _recruitment; + } + + private transient SubpoenasPath _subpoenas; + + /** + * Get the implicit to-many join path to the + * recruitment_campaign.subpoenas table + */ + public SubpoenasPath subpoenas() { + if (_subpoenas == null) + _subpoenas = new SubpoenasPath(this, null, ervu_dashboard.ervu_dashboard.db_beans.recruitment_campaign.Keys.SUBPOENAS__SUBPOENAS_FK1.getInverseKey()); + + return _subpoenas; + } + + private transient AgePath _age; + + /** + * Get the implicit to-many join path to the + * total_registered.age table + */ + public AgePath age() { + if (_age == null) + _age = new AgePath(this, null, ervu_dashboard.ervu_dashboard.db_beans.total_registered.Keys.AGE__AGE_FK1.getInverseKey()); + + return _age; + } + + private transient BusynessPath _busyness; + + /** + * Get the implicit to-many join path to the + * total_registered.busyness table + */ + public BusynessPath busyness() { + if (_busyness == null) + _busyness = new BusynessPath(this, null, ervu_dashboard.ervu_dashboard.db_beans.total_registered.Keys.BUSYNESS__BUSYNESS_FK1.getInverseKey()); + + return _busyness; + } + + private transient ChildMinorPath _childMinor; + + /** + * Get the implicit to-many join path to the + * total_registered.child_minor table + */ + public ChildMinorPath childMinor() { + if (_childMinor == null) + _childMinor = new ChildMinorPath(this, null, ervu_dashboard.ervu_dashboard.db_beans.total_registered.Keys.CHILD_MINOR__CHILD_MINOR_FK1.getInverseKey()); + + return _childMinor; + } + + private transient DriverLicensePath _driverLicense; + + /** + * Get the implicit to-many join path to the + * total_registered.driver_license table + */ + public DriverLicensePath driverLicense() { + if (_driverLicense == null) + _driverLicense = new DriverLicensePath(this, null, ervu_dashboard.ervu_dashboard.db_beans.total_registered.Keys.DRIVER_LICENSE__DRIVER_LICENSE_FK1.getInverseKey()); + + return _driverLicense; + } + + private transient EducationLevelPath _educationLevel; + + /** + * Get the implicit to-many join path to the + * total_registered.education_level table + */ + public EducationLevelPath educationLevel() { + if (_educationLevel == null) + _educationLevel = new EducationLevelPath(this, null, ervu_dashboard.ervu_dashboard.db_beans.total_registered.Keys.EDUCATION_LEVEL__EDUCATION_LEVEL_FK1.getInverseKey()); + + return _educationLevel; + } + + private transient MaritalStatusPath _maritalStatus; + + /** + * Get the implicit to-many join path to the + * total_registered.marital_status table + */ + public MaritalStatusPath maritalStatus() { + if (_maritalStatus == null) + _maritalStatus = new MaritalStatusPath(this, null, ervu_dashboard.ervu_dashboard.db_beans.total_registered.Keys.MARITAL_STATUS__MARITAL_STATUS_FK1.getInverseKey()); + + return _maritalStatus; + } + + private transient RegMilCatPath _regMilCat; + + /** + * Get the implicit to-many join path to the + * total_registered.reg_mil_cat table + */ + public RegMilCatPath regMilCat() { + if (_regMilCat == null) + _regMilCat = new RegMilCatPath(this, null, ervu_dashboard.ervu_dashboard.db_beans.total_registered.Keys.REG_MIL_CAT__REG_MIL_CAT_FK1.getInverseKey()); + + return _regMilCat; + } + + private transient RemovedRegistryPath _removedRegistry; + + /** + * Get the implicit to-many join path to the + * total_registered.removed_registry table + */ + public RemovedRegistryPath removedRegistry() { + if (_removedRegistry == null) + _removedRegistry = new RemovedRegistryPath(this, null, ervu_dashboard.ervu_dashboard.db_beans.total_registered.Keys.REMOVED_REGISTRY__REMOVED_REGISTRY_FK1.getInverseKey()); + + return _removedRegistry; + } + + @Override + public PubRecruitment as(String alias) { + return new PubRecruitment(DSL.name(alias), this); + } + + @Override + public PubRecruitment as(Name alias) { + return new PubRecruitment(alias, this); + } + + @Override + public PubRecruitment as(Table alias) { + return new PubRecruitment(alias.getQualifiedName(), this); + } + + /** + * Rename this table + */ + @Override + public PubRecruitment rename(String name) { + return new PubRecruitment(DSL.name(name), null); + } + + /** + * Rename this table + */ + @Override + public PubRecruitment rename(Name name) { + return new PubRecruitment(name, null); + } + + /** + * Rename this table + */ + @Override + public PubRecruitment rename(Table name) { + return new PubRecruitment(name.getQualifiedName(), null); + } + + /** + * Create an inline derived table from this table + */ + @Override + public PubRecruitment where(Condition condition) { + return new PubRecruitment(getQualifiedName(), aliased() ? this : null, null, condition); + } + + /** + * Create an inline derived table from this table + */ + @Override + public PubRecruitment where(Collection conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public PubRecruitment where(Condition... conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public PubRecruitment where(Field condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public PubRecruitment where(SQL condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public PubRecruitment where(@Stringly.SQL String condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public PubRecruitment where(@Stringly.SQL String condition, Object... binds) { + return where(DSL.condition(condition, binds)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public PubRecruitment where(@Stringly.SQL String condition, QueryPart... parts) { + return where(DSL.condition(condition, parts)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public PubRecruitment whereExists(Select select) { + return where(DSL.exists(select)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public PubRecruitment whereNotExists(Select select) { + return where(DSL.notExists(select)); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/public_/tables/ReasonRegistration.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/public_/tables/ReasonRegistration.java new file mode 100644 index 0000000..208dac7 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/public_/tables/ReasonRegistration.java @@ -0,0 +1,284 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.public_.tables; + + +import ervu_dashboard.ervu_dashboard.db_beans.public_.Keys; +import ervu_dashboard.ervu_dashboard.db_beans.public_.Public; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.Citizen.CitizenPath; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.records.ReasonRegistrationRecord; + +import java.util.Collection; + +import org.jooq.Condition; +import org.jooq.Field; +import org.jooq.ForeignKey; +import org.jooq.Identity; +import org.jooq.InverseForeignKey; +import org.jooq.Name; +import org.jooq.Path; +import org.jooq.PlainSQL; +import org.jooq.QueryPart; +import org.jooq.Record; +import org.jooq.SQL; +import org.jooq.Schema; +import org.jooq.Select; +import org.jooq.Stringly; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.TableOptions; +import org.jooq.UniqueKey; +import org.jooq.impl.DSL; +import org.jooq.impl.SQLDataType; +import org.jooq.impl.TableImpl; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class ReasonRegistration extends TableImpl { + + private static final long serialVersionUID = 1L; + + /** + * The reference instance of public.reason_registration + */ + public static final ReasonRegistration REASON_REGISTRATION = new ReasonRegistration(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return ReasonRegistrationRecord.class; + } + + /** + * The column + * public.reason_registration.reason_registration_id. + */ + public final TableField REASON_REGISTRATION_ID = createField(DSL.name("reason_registration_id"), SQLDataType.BIGINT.nullable(false).identity(true), this, ""); + + /** + * The column public.reason_registration.code. + */ + public final TableField CODE = createField(DSL.name("code"), SQLDataType.INTEGER.nullable(false), this, ""); + + /** + * The column public.reason_registration.name. + */ + public final TableField NAME = createField(DSL.name("name"), SQLDataType.VARCHAR.nullable(false), this, ""); + + private ReasonRegistration(Name alias, Table aliased) { + this(alias, aliased, (Field[]) null, null); + } + + private ReasonRegistration(Name alias, Table aliased, Field[] parameters, Condition where) { + super(alias, null, aliased, parameters, DSL.comment(""), TableOptions.table(), where); + } + + /** + * Create an aliased public.reason_registration table reference + */ + public ReasonRegistration(String alias) { + this(DSL.name(alias), REASON_REGISTRATION); + } + + /** + * Create an aliased public.reason_registration table reference + */ + public ReasonRegistration(Name alias) { + this(alias, REASON_REGISTRATION); + } + + /** + * Create a public.reason_registration table reference + */ + public ReasonRegistration() { + this(DSL.name("reason_registration"), null); + } + + public ReasonRegistration(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath, REASON_REGISTRATION); + } + + /** + * A subtype implementing {@link Path} for simplified path-based joins. + */ + public static class ReasonRegistrationPath extends ReasonRegistration implements Path { + public ReasonRegistrationPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath); + } + private ReasonRegistrationPath(Name alias, Table aliased) { + super(alias, aliased); + } + + @Override + public ReasonRegistrationPath as(String alias) { + return new ReasonRegistrationPath(DSL.name(alias), this); + } + + @Override + public ReasonRegistrationPath as(Name alias) { + return new ReasonRegistrationPath(alias, this); + } + + @Override + public ReasonRegistrationPath as(Table alias) { + return new ReasonRegistrationPath(alias.getQualifiedName(), this); + } + } + + @Override + public Schema getSchema() { + return aliased() ? null : Public.PUBLIC; + } + + @Override + public Identity getIdentity() { + return (Identity) super.getIdentity(); + } + + @Override + public UniqueKey getPrimaryKey() { + return Keys.REASON_REGISTRATION_PKEY; + } + + private transient CitizenPath _citizen; + + /** + * Get the implicit to-many join path to the public.citizen + * table + */ + public CitizenPath citizen() { + if (_citizen == null) + _citizen = new CitizenPath(this, null, Keys.CITIZEN__P_CITIZEN_FK6.getInverseKey()); + + return _citizen; + } + + @Override + public ReasonRegistration as(String alias) { + return new ReasonRegistration(DSL.name(alias), this); + } + + @Override + public ReasonRegistration as(Name alias) { + return new ReasonRegistration(alias, this); + } + + @Override + public ReasonRegistration as(Table alias) { + return new ReasonRegistration(alias.getQualifiedName(), this); + } + + /** + * Rename this table + */ + @Override + public ReasonRegistration rename(String name) { + return new ReasonRegistration(DSL.name(name), null); + } + + /** + * Rename this table + */ + @Override + public ReasonRegistration rename(Name name) { + return new ReasonRegistration(name, null); + } + + /** + * Rename this table + */ + @Override + public ReasonRegistration rename(Table name) { + return new ReasonRegistration(name.getQualifiedName(), null); + } + + /** + * Create an inline derived table from this table + */ + @Override + public ReasonRegistration where(Condition condition) { + return new ReasonRegistration(getQualifiedName(), aliased() ? this : null, null, condition); + } + + /** + * Create an inline derived table from this table + */ + @Override + public ReasonRegistration where(Collection conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public ReasonRegistration where(Condition... conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public ReasonRegistration where(Field condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public ReasonRegistration where(SQL condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public ReasonRegistration where(@Stringly.SQL String condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public ReasonRegistration where(@Stringly.SQL String condition, Object... binds) { + return where(DSL.condition(condition, binds)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public ReasonRegistration where(@Stringly.SQL String condition, QueryPart... parts) { + return where(DSL.condition(condition, parts)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public ReasonRegistration whereExists(Select select) { + return where(DSL.exists(select)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public ReasonRegistration whereNotExists(Select select) { + return where(DSL.notExists(select)); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/public_/tables/Subpoena.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/public_/tables/Subpoena.java new file mode 100644 index 0000000..099e305 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/public_/tables/Subpoena.java @@ -0,0 +1,281 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.public_.tables; + + +import ervu_dashboard.ervu_dashboard.db_beans.public_.Keys; +import ervu_dashboard.ervu_dashboard.db_beans.public_.Public; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.records.SubpoenaRecord; + +import java.sql.Timestamp; +import java.util.Collection; +import java.util.UUID; + +import org.jooq.Condition; +import org.jooq.Field; +import org.jooq.Identity; +import org.jooq.Name; +import org.jooq.PlainSQL; +import org.jooq.QueryPart; +import org.jooq.SQL; +import org.jooq.Schema; +import org.jooq.Select; +import org.jooq.Stringly; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.TableOptions; +import org.jooq.UniqueKey; +import org.jooq.impl.DSL; +import org.jooq.impl.SQLDataType; +import org.jooq.impl.TableImpl; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Subpoena extends TableImpl { + + private static final long serialVersionUID = 1L; + + /** + * The reference instance of public.subpoena + */ + public static final Subpoena SUBPOENA = new Subpoena(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return SubpoenaRecord.class; + } + + /** + * The column public.subpoena.subpoena_id. + */ + public final TableField SUBPOENA_ID = createField(DSL.name("subpoena_id"), SQLDataType.BIGINT.nullable(false).identity(true), this, ""); + + /** + * The column public.subpoena.series. + */ + public final TableField SERIES = createField(DSL.name("series"), SQLDataType.VARCHAR(16), this, ""); + + /** + * The column public.subpoena.number. + */ + public final TableField NUMBER = createField(DSL.name("number"), SQLDataType.VARCHAR(36).nullable(false), this, ""); + + /** + * The column public.subpoena.id_ern. + */ + public final TableField ID_ERN = createField(DSL.name("id_ern"), SQLDataType.VARCHAR(36), this, ""); + + /** + * The column public.subpoena.create_date. + */ + public final TableField CREATE_DATE = createField(DSL.name("create_date"), SQLDataType.TIMESTAMP(0).nullable(false).defaultValue(DSL.field(DSL.raw("now()"), SQLDataType.TIMESTAMP)), this, ""); + + /** + * The column public.subpoena.visit_date. + */ + public final TableField VISIT_DATE = createField(DSL.name("visit_date"), SQLDataType.TIMESTAMP(0), this, ""); + + /** + * The column public.subpoena.send_date. + */ + public final TableField SEND_DATE = createField(DSL.name("send_date"), SQLDataType.TIMESTAMP(0), this, ""); + + /** + * The column public.subpoena.reason_cancelled. + */ + public final TableField REASON_CANCELLED = createField(DSL.name("reason_cancelled"), SQLDataType.VARCHAR(255), this, ""); + + /** + * The column public.subpoena.recruit_id. + */ + public final TableField RECRUIT_ID = createField(DSL.name("recruit_id"), SQLDataType.UUID, this, ""); + + /** + * The column public.subpoena.department_id. + */ + public final TableField DEPARTMENT_ID = createField(DSL.name("department_id"), SQLDataType.UUID, this, ""); + + /** + * The column public.subpoena.subpoena_status. + */ + public final TableField SUBPOENA_STATUS = createField(DSL.name("subpoena_status"), SQLDataType.CLOB, this, ""); + + /** + * The column public.subpoena.subpoena_reason. + */ + public final TableField SUBPOENA_REASON = createField(DSL.name("subpoena_reason"), SQLDataType.CLOB, this, ""); + + private Subpoena(Name alias, Table aliased) { + this(alias, aliased, (Field[]) null, null); + } + + private Subpoena(Name alias, Table aliased, Field[] parameters, Condition where) { + super(alias, null, aliased, parameters, DSL.comment(""), TableOptions.table(), where); + } + + /** + * Create an aliased public.subpoena table reference + */ + public Subpoena(String alias) { + this(DSL.name(alias), SUBPOENA); + } + + /** + * Create an aliased public.subpoena table reference + */ + public Subpoena(Name alias) { + this(alias, SUBPOENA); + } + + /** + * Create a public.subpoena table reference + */ + public Subpoena() { + this(DSL.name("subpoena"), null); + } + + @Override + public Schema getSchema() { + return aliased() ? null : Public.PUBLIC; + } + + @Override + public Identity getIdentity() { + return (Identity) super.getIdentity(); + } + + @Override + public UniqueKey getPrimaryKey() { + return Keys.SUBPOENA_PKEY; + } + + @Override + public Subpoena as(String alias) { + return new Subpoena(DSL.name(alias), this); + } + + @Override + public Subpoena as(Name alias) { + return new Subpoena(alias, this); + } + + @Override + public Subpoena as(Table alias) { + return new Subpoena(alias.getQualifiedName(), this); + } + + /** + * Rename this table + */ + @Override + public Subpoena rename(String name) { + return new Subpoena(DSL.name(name), null); + } + + /** + * Rename this table + */ + @Override + public Subpoena rename(Name name) { + return new Subpoena(name, null); + } + + /** + * Rename this table + */ + @Override + public Subpoena rename(Table name) { + return new Subpoena(name.getQualifiedName(), null); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Subpoena where(Condition condition) { + return new Subpoena(getQualifiedName(), aliased() ? this : null, null, condition); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Subpoena where(Collection conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Subpoena where(Condition... conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Subpoena where(Field condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Subpoena where(SQL condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Subpoena where(@Stringly.SQL String condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Subpoena where(@Stringly.SQL String condition, Object... binds) { + return where(DSL.condition(condition, binds)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Subpoena where(@Stringly.SQL String condition, QueryPart... parts) { + return where(DSL.condition(condition, parts)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Subpoena whereExists(Select select) { + return where(DSL.exists(select)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Subpoena whereNotExists(Select select) { + return where(DSL.notExists(select)); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/public_/tables/records/CitizenRecord.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/public_/tables/records/CitizenRecord.java new file mode 100644 index 0000000..10fb95f --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/public_/tables/records/CitizenRecord.java @@ -0,0 +1,352 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.public_.tables.records; + + +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.Citizen; + +import java.sql.Date; +import java.util.UUID; + +import org.jooq.Record1; +import org.jooq.impl.UpdatableRecordImpl; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class CitizenRecord extends UpdatableRecordImpl { + + private static final long serialVersionUID = 1L; + + /** + * Setter for public.citizen.id_ERN. + */ + public void setIdErn(String value) { + set(0, value); + } + + /** + * Getter for public.citizen.id_ERN. + */ + public String getIdErn() { + return (String) get(0); + } + + /** + * Setter for public.citizen.fio. + */ + public void setFio(String value) { + set(1, value); + } + + /** + * Getter for public.citizen.fio. + */ + public String getFio() { + return (String) get(1); + } + + /** + * Setter for public.citizen.residence. + */ + public void setResidence(String value) { + set(2, value); + } + + /** + * Getter for public.citizen.residence. + */ + public String getResidence() { + return (String) get(2); + } + + /** + * Setter for public.citizen.age. + */ + public void setAge(String value) { + set(3, value); + } + + /** + * Getter for public.citizen.age. + */ + public String getAge() { + return (String) get(3); + } + + /** + * Setter for public.citizen.recruitment. + */ + public void setRecruitment(String value) { + set(4, value); + } + + /** + * Getter for public.citizen.recruitment. + */ + public String getRecruitment() { + return (String) get(4); + } + + /** + * Setter for public.citizen.recruitment_id. + */ + public void setRecruitmentId(UUID value) { + set(5, value); + } + + /** + * Getter for public.citizen.recruitment_id. + */ + public UUID getRecruitmentId() { + return (UUID) get(5); + } + + /** + * Setter for public.citizen.gender_id. + */ + public void setGenderId(Long value) { + set(6, value); + } + + /** + * Getter for public.citizen.gender_id. + */ + public Long getGenderId() { + return (Long) get(6); + } + + /** + * Setter for public.citizen.marital_status_id. + */ + public void setMaritalStatusId(Long value) { + set(7, value); + } + + /** + * Getter for public.citizen.marital_status_id. + */ + public Long getMaritalStatusId() { + return (Long) get(7); + } + + /** + * Setter for public.citizen.education_id. + */ + public void setEducationId(Long value) { + set(8, value); + } + + /** + * Getter for public.citizen.education_id. + */ + public Long getEducationId() { + return (Long) get(8); + } + + /** + * Setter for public.citizen.employment_id. + */ + public void setEmploymentId(Long value) { + set(9, value); + } + + /** + * Getter for public.citizen.employment_id. + */ + public Long getEmploymentId() { + return (Long) get(9); + } + + /** + * Setter for public.citizen.urgent_service. + */ + public void setUrgentService(Boolean value) { + set(10, value); + } + + /** + * Getter for public.citizen.urgent_service. + */ + public Boolean getUrgentService() { + return (Boolean) get(10); + } + + /** + * Setter for public.citizen.contract_service. + */ + public void setContractService(Boolean value) { + set(11, value); + } + + /** + * Getter for public.citizen.contract_service. + */ + public Boolean getContractService() { + return (Boolean) get(11); + } + + /** + * Setter for public.citizen.mobilization. + */ + public void setMobilization(Boolean value) { + set(12, value); + } + + /** + * Getter for public.citizen.mobilization. + */ + public Boolean getMobilization() { + return (Boolean) get(12); + } + + /** + * Setter for public.citizen.is_registered. + */ + public void setIsRegistered(Boolean value) { + set(13, value); + } + + /** + * Getter for public.citizen.is_registered. + */ + public Boolean getIsRegistered() { + return (Boolean) get(13); + } + + /** + * Setter for public.citizen.reason_registration_id. + */ + public void setReasonRegistrationId(Integer value) { + set(14, value); + } + + /** + * Getter for public.citizen.reason_registration_id. + */ + public Integer getReasonRegistrationId() { + return (Integer) get(14); + } + + /** + * Setter for public.citizen.issue_date. + */ + public void setIssueDate(Date value) { + set(15, value); + } + + /** + * Getter for public.citizen.issue_date. + */ + public Date getIssueDate() { + return (Date) get(15); + } + + /** + * Setter for public.citizen.passport_series. + */ + public void setPassportSeries(String value) { + set(16, value); + } + + /** + * Getter for public.citizen.passport_series. + */ + public String getPassportSeries() { + return (String) get(16); + } + + /** + * Setter for public.citizen.passport_number. + */ + public void setPassportNumber(String value) { + set(17, value); + } + + /** + * Getter for public.citizen.passport_number. + */ + public String getPassportNumber() { + return (String) get(17); + } + + /** + * Setter for public.citizen.number_children. + */ + public void setNumberChildren(Integer value) { + set(18, value); + } + + /** + * Getter for public.citizen.number_children. + */ + public Integer getNumberChildren() { + return (Integer) get(18); + } + + /** + * Setter for public.citizen.phone. + */ + public void setPhone(String value) { + set(19, value); + } + + /** + * Getter for public.citizen.phone. + */ + public String getPhone() { + return (String) get(19); + } + + // ------------------------------------------------------------------------- + // Primary key information + // ------------------------------------------------------------------------- + + @Override + public Record1 key() { + return (Record1) super.key(); + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached CitizenRecord + */ + public CitizenRecord() { + super(Citizen.CITIZEN); + } + + /** + * Create a detached, initialised CitizenRecord + */ + public CitizenRecord(String idErn, String fio, String residence, String age, String recruitment, UUID recruitmentId, Long genderId, Long maritalStatusId, Long educationId, Long employmentId, Boolean urgentService, Boolean contractService, Boolean mobilization, Boolean isRegistered, Integer reasonRegistrationId, Date issueDate, String passportSeries, String passportNumber, Integer numberChildren, String phone) { + super(Citizen.CITIZEN); + + setIdErn(idErn); + setFio(fio); + setResidence(residence); + setAge(age); + setRecruitment(recruitment); + setRecruitmentId(recruitmentId); + setGenderId(genderId); + setMaritalStatusId(maritalStatusId); + setEducationId(educationId); + setEmploymentId(employmentId); + setUrgentService(urgentService); + setContractService(contractService); + setMobilization(mobilization); + setIsRegistered(isRegistered); + setReasonRegistrationId(reasonRegistrationId); + setIssueDate(issueDate); + setPassportSeries(passportSeries); + setPassportNumber(passportNumber); + setNumberChildren(numberChildren); + setPhone(phone); + resetChangedOnNotNull(); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/public_/tables/records/EducationRecord.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/public_/tables/records/EducationRecord.java new file mode 100644 index 0000000..1883e0c --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/public_/tables/records/EducationRecord.java @@ -0,0 +1,94 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.public_.tables.records; + + +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.Education; + +import org.jooq.Record1; +import org.jooq.impl.UpdatableRecordImpl; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class EducationRecord extends UpdatableRecordImpl { + + private static final long serialVersionUID = 1L; + + /** + * Setter for public.education.education_id. + */ + public void setEducationId(Long value) { + set(0, value); + } + + /** + * Getter for public.education.education_id. + */ + public Long getEducationId() { + return (Long) get(0); + } + + /** + * Setter for public.education.code. + */ + public void setCode(Integer value) { + set(1, value); + } + + /** + * Getter for public.education.code. + */ + public Integer getCode() { + return (Integer) get(1); + } + + /** + * Setter for public.education.name. + */ + public void setName(String value) { + set(2, value); + } + + /** + * Getter for public.education.name. + */ + public String getName() { + return (String) get(2); + } + + // ------------------------------------------------------------------------- + // Primary key information + // ------------------------------------------------------------------------- + + @Override + public Record1 key() { + return (Record1) super.key(); + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached EducationRecord + */ + public EducationRecord() { + super(Education.EDUCATION); + } + + /** + * Create a detached, initialised EducationRecord + */ + public EducationRecord(Long educationId, Integer code, String name) { + super(Education.EDUCATION); + + setEducationId(educationId); + setCode(code); + setName(name); + resetChangedOnNotNull(); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/public_/tables/records/EmploymentRecord.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/public_/tables/records/EmploymentRecord.java new file mode 100644 index 0000000..db494a6 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/public_/tables/records/EmploymentRecord.java @@ -0,0 +1,94 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.public_.tables.records; + + +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.Employment; + +import org.jooq.Record1; +import org.jooq.impl.UpdatableRecordImpl; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class EmploymentRecord extends UpdatableRecordImpl { + + private static final long serialVersionUID = 1L; + + /** + * Setter for public.employment.employment_id. + */ + public void setEmploymentId(Long value) { + set(0, value); + } + + /** + * Getter for public.employment.employment_id. + */ + public Long getEmploymentId() { + return (Long) get(0); + } + + /** + * Setter for public.employment.code. + */ + public void setCode(Integer value) { + set(1, value); + } + + /** + * Getter for public.employment.code. + */ + public Integer getCode() { + return (Integer) get(1); + } + + /** + * Setter for public.employment.name. + */ + public void setName(String value) { + set(2, value); + } + + /** + * Getter for public.employment.name. + */ + public String getName() { + return (String) get(2); + } + + // ------------------------------------------------------------------------- + // Primary key information + // ------------------------------------------------------------------------- + + @Override + public Record1 key() { + return (Record1) super.key(); + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached EmploymentRecord + */ + public EmploymentRecord() { + super(Employment.EMPLOYMENT); + } + + /** + * Create a detached, initialised EmploymentRecord + */ + public EmploymentRecord(Long employmentId, Integer code, String name) { + super(Employment.EMPLOYMENT); + + setEmploymentId(employmentId); + setCode(code); + setName(name); + resetChangedOnNotNull(); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/public_/tables/records/GenderRecord.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/public_/tables/records/GenderRecord.java new file mode 100644 index 0000000..e3dd965 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/public_/tables/records/GenderRecord.java @@ -0,0 +1,94 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.public_.tables.records; + + +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.Gender; + +import org.jooq.Record1; +import org.jooq.impl.UpdatableRecordImpl; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class GenderRecord extends UpdatableRecordImpl { + + private static final long serialVersionUID = 1L; + + /** + * Setter for public.gender.gender_id. + */ + public void setGenderId(Long value) { + set(0, value); + } + + /** + * Getter for public.gender.gender_id. + */ + public Long getGenderId() { + return (Long) get(0); + } + + /** + * Setter for public.gender.code. + */ + public void setCode(String value) { + set(1, value); + } + + /** + * Getter for public.gender.code. + */ + public String getCode() { + return (String) get(1); + } + + /** + * Setter for public.gender.name. + */ + public void setName(String value) { + set(2, value); + } + + /** + * Getter for public.gender.name. + */ + public String getName() { + return (String) get(2); + } + + // ------------------------------------------------------------------------- + // Primary key information + // ------------------------------------------------------------------------- + + @Override + public Record1 key() { + return (Record1) super.key(); + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached GenderRecord + */ + public GenderRecord() { + super(Gender.GENDER); + } + + /** + * Create a detached, initialised GenderRecord + */ + public GenderRecord(Long genderId, String code, String name) { + super(Gender.GENDER); + + setGenderId(genderId); + setCode(code); + setName(name); + resetChangedOnNotNull(); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/public_/tables/records/MaritalStatusRecord.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/public_/tables/records/MaritalStatusRecord.java new file mode 100644 index 0000000..c26baaf --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/public_/tables/records/MaritalStatusRecord.java @@ -0,0 +1,109 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.public_.tables.records; + + +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.MaritalStatus; + +import org.jooq.Record1; +import org.jooq.impl.UpdatableRecordImpl; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class MaritalStatusRecord extends UpdatableRecordImpl { + + private static final long serialVersionUID = 1L; + + /** + * Setter for public.marital_status.marital_status_id. + */ + public void setMaritalStatusId(Long value) { + set(0, value); + } + + /** + * Getter for public.marital_status.marital_status_id. + */ + public Long getMaritalStatusId() { + return (Long) get(0); + } + + /** + * Setter for public.marital_status.code. + */ + public void setCode(String value) { + set(1, value); + } + + /** + * Getter for public.marital_status.code. + */ + public String getCode() { + return (String) get(1); + } + + /** + * Setter for public.marital_status.name. + */ + public void setName(String value) { + set(2, value); + } + + /** + * Getter for public.marital_status.name. + */ + public String getName() { + return (String) get(2); + } + + /** + * Setter for public.marital_status.gender_id. + */ + public void setGenderId(Long value) { + set(3, value); + } + + /** + * Getter for public.marital_status.gender_id. + */ + public Long getGenderId() { + return (Long) get(3); + } + + // ------------------------------------------------------------------------- + // Primary key information + // ------------------------------------------------------------------------- + + @Override + public Record1 key() { + return (Record1) super.key(); + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached MaritalStatusRecord + */ + public MaritalStatusRecord() { + super(MaritalStatus.MARITAL_STATUS); + } + + /** + * Create a detached, initialised MaritalStatusRecord + */ + public MaritalStatusRecord(Long maritalStatusId, String code, String name, Long genderId) { + super(MaritalStatus.MARITAL_STATUS); + + setMaritalStatusId(maritalStatusId); + setCode(code); + setName(name); + setGenderId(genderId); + resetChangedOnNotNull(); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/public_/tables/records/PubRecruitmentRecord.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/public_/tables/records/PubRecruitmentRecord.java new file mode 100644 index 0000000..e40e328 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/public_/tables/records/PubRecruitmentRecord.java @@ -0,0 +1,577 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.public_.tables.records; + + +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.PubRecruitment; + +import java.sql.Timestamp; +import java.util.UUID; + +import org.jooq.Record1; +import org.jooq.impl.UpdatableRecordImpl; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class PubRecruitmentRecord extends UpdatableRecordImpl { + + private static final long serialVersionUID = 1L; + + /** + * Setter for public.pub_recruitment.id. + */ + public void setId(UUID value) { + set(0, value); + } + + /** + * Getter for public.pub_recruitment.id. + */ + public UUID getId() { + return (UUID) get(0); + } + + /** + * Setter for public.pub_recruitment.idm_id. + */ + public void setIdmId(String value) { + set(1, value); + } + + /** + * Getter for public.pub_recruitment.idm_id. + */ + public String getIdmId() { + return (String) get(1); + } + + /** + * Setter for public.pub_recruitment.parent_id. + */ + public void setParentId(String value) { + set(2, value); + } + + /** + * Getter for public.pub_recruitment.parent_id. + */ + public String getParentId() { + return (String) get(2); + } + + /** + * Setter for public.pub_recruitment.version. + */ + public void setVersion(Integer value) { + set(3, value); + } + + /** + * Getter for public.pub_recruitment.version. + */ + public Integer getVersion() { + return (Integer) get(3); + } + + /** + * Setter for public.pub_recruitment.created_at. + */ + public void setCreatedAt(Timestamp value) { + set(4, value); + } + + /** + * Getter for public.pub_recruitment.created_at. + */ + public Timestamp getCreatedAt() { + return (Timestamp) get(4); + } + + /** + * Setter for public.pub_recruitment.updated_at. + */ + public void setUpdatedAt(Timestamp value) { + set(5, value); + } + + /** + * Getter for public.pub_recruitment.updated_at. + */ + public Timestamp getUpdatedAt() { + return (Timestamp) get(5); + } + + /** + * Setter for public.pub_recruitment.schema. + */ + public void setSchema(String value) { + set(6, value); + } + + /** + * Getter for public.pub_recruitment.schema. + */ + public String getSchema() { + return (String) get(6); + } + + /** + * Setter for public.pub_recruitment.military_code. + */ + public void setMilitaryCode(String value) { + set(7, value); + } + + /** + * Getter for public.pub_recruitment.military_code. + */ + public String getMilitaryCode() { + return (String) get(7); + } + + /** + * Setter for public.pub_recruitment.shortname. + */ + public void setShortname(String value) { + set(8, value); + } + + /** + * Getter for public.pub_recruitment.shortname. + */ + public String getShortname() { + return (String) get(8); + } + + /** + * Setter for public.pub_recruitment.fullname. + */ + public void setFullname(String value) { + set(9, value); + } + + /** + * Getter for public.pub_recruitment.fullname. + */ + public String getFullname() { + return (String) get(9); + } + + /** + * Setter for public.pub_recruitment.dns. + */ + public void setDns(String value) { + set(10, value); + } + + /** + * Getter for public.pub_recruitment.dns. + */ + public String getDns() { + return (String) get(10); + } + + /** + * Setter for public.pub_recruitment.email. + */ + public void setEmail(String value) { + set(11, value); + } + + /** + * Getter for public.pub_recruitment.email. + */ + public String getEmail() { + return (String) get(11); + } + + /** + * Setter for public.pub_recruitment.phone. + */ + public void setPhone(String value) { + set(12, value); + } + + /** + * Getter for public.pub_recruitment.phone. + */ + public String getPhone() { + return (String) get(12); + } + + /** + * Setter for public.pub_recruitment.address. + */ + public void setAddress(String value) { + set(13, value); + } + + /** + * Getter for public.pub_recruitment.address. + */ + public String getAddress() { + return (String) get(13); + } + + /** + * Setter for public.pub_recruitment.address_id. + */ + public void setAddressId(String value) { + set(14, value); + } + + /** + * Getter for public.pub_recruitment.address_id. + */ + public String getAddressId() { + return (String) get(14); + } + + /** + * Setter for public.pub_recruitment.postal_address. + */ + public void setPostalAddress(String value) { + set(15, value); + } + + /** + * Getter for public.pub_recruitment.postal_address. + */ + public String getPostalAddress() { + return (String) get(15); + } + + /** + * Setter for public.pub_recruitment.postal_address_id. + */ + public void setPostalAddressId(String value) { + set(16, value); + } + + /** + * Getter for public.pub_recruitment.postal_address_id. + */ + public String getPostalAddressId() { + return (String) get(16); + } + + /** + * Setter for public.pub_recruitment.nsi_department_id. + */ + public void setNsiDepartmentId(String value) { + set(17, value); + } + + /** + * Getter for public.pub_recruitment.nsi_department_id. + */ + public String getNsiDepartmentId() { + return (String) get(17); + } + + /** + * Setter for public.pub_recruitment.nsi_organization_id. + */ + public void setNsiOrganizationId(String value) { + set(18, value); + } + + /** + * Getter for public.pub_recruitment.nsi_organization_id. + */ + public String getNsiOrganizationId() { + return (String) get(18); + } + + /** + * Setter for public.pub_recruitment.oktmo. + */ + public void setOktmo(String value) { + set(19, value); + } + + /** + * Getter for public.pub_recruitment.oktmo. + */ + public String getOktmo() { + return (String) get(19); + } + + /** + * Setter for public.pub_recruitment.org_ogrn. + */ + public void setOrgOgrn(String value) { + set(20, value); + } + + /** + * Getter for public.pub_recruitment.org_ogrn. + */ + public String getOrgOgrn() { + return (String) get(20); + } + + /** + * Setter for public.pub_recruitment.dep_ogrn. + */ + public void setDepOgrn(String value) { + set(21, value); + } + + /** + * Getter for public.pub_recruitment.dep_ogrn. + */ + public String getDepOgrn() { + return (String) get(21); + } + + /** + * Setter for public.pub_recruitment.epgu_id. + */ + public void setEpguId(String value) { + set(22, value); + } + + /** + * Getter for public.pub_recruitment.epgu_id. + */ + public String getEpguId() { + return (String) get(22); + } + + /** + * Setter for public.pub_recruitment.kpp. + */ + public void setKpp(String value) { + set(23, value); + } + + /** + * Getter for public.pub_recruitment.kpp. + */ + public String getKpp() { + return (String) get(23); + } + + /** + * Setter for public.pub_recruitment.inn. + */ + public void setInn(String value) { + set(24, value); + } + + /** + * Getter for public.pub_recruitment.inn. + */ + public String getInn() { + return (String) get(24); + } + + /** + * Setter for public.pub_recruitment.okato. + */ + public void setOkato(String value) { + set(25, value); + } + + /** + * Getter for public.pub_recruitment.okato. + */ + public String getOkato() { + return (String) get(25); + } + + /** + * Setter for public.pub_recruitment.division_type. + */ + public void setDivisionType(String value) { + set(26, value); + } + + /** + * Getter for public.pub_recruitment.division_type. + */ + public String getDivisionType() { + return (String) get(26); + } + + /** + * Setter for public.pub_recruitment.tns_department_id. + */ + public void setTnsDepartmentId(String value) { + set(27, value); + } + + /** + * Getter for public.pub_recruitment.tns_department_id. + */ + public String getTnsDepartmentId() { + return (String) get(27); + } + + /** + * Setter for public.pub_recruitment.enabled. + */ + public void setEnabled(Boolean value) { + set(28, value); + } + + /** + * Getter for public.pub_recruitment.enabled. + */ + public Boolean getEnabled() { + return (Boolean) get(28); + } + + /** + * Setter for public.pub_recruitment.timezone. + */ + public void setTimezone(String value) { + set(29, value); + } + + /** + * Getter for public.pub_recruitment.timezone. + */ + public String getTimezone() { + return (String) get(29); + } + + /** + * Setter for public.pub_recruitment.reports_enabled. + */ + public void setReportsEnabled(Boolean value) { + set(30, value); + } + + /** + * Getter for public.pub_recruitment.reports_enabled. + */ + public Boolean getReportsEnabled() { + return (Boolean) get(30); + } + + /** + * Setter for public.pub_recruitment.region_id. + */ + public void setRegionId(String value) { + set(31, value); + } + + /** + * Getter for public.pub_recruitment.region_id. + */ + public String getRegionId() { + return (String) get(31); + } + + /** + * Setter for public.pub_recruitment.series. + */ + public void setSeries(String value) { + set(32, value); + } + + /** + * Getter for public.pub_recruitment.series. + */ + public String getSeries() { + return (String) get(32); + } + + /** + * Setter for public.pub_recruitment.hidden. + */ + public void setHidden(Boolean value) { + set(33, value); + } + + /** + * Getter for public.pub_recruitment.hidden. + */ + public Boolean getHidden() { + return (Boolean) get(33); + } + + /** + * Setter for public.pub_recruitment.sort. + */ + public void setSort(Integer value) { + set(34, value); + } + + /** + * Getter for public.pub_recruitment.sort. + */ + public Integer getSort() { + return (Integer) get(34); + } + + // ------------------------------------------------------------------------- + // Primary key information + // ------------------------------------------------------------------------- + + @Override + public Record1 key() { + return (Record1) super.key(); + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached PubRecruitmentRecord + */ + public PubRecruitmentRecord() { + super(PubRecruitment.PUB_RECRUITMENT); + } + + /** + * Create a detached, initialised PubRecruitmentRecord + */ + public PubRecruitmentRecord(UUID id, String idmId, String parentId, Integer version, Timestamp createdAt, Timestamp updatedAt, String schema, String militaryCode, String shortname, String fullname, String dns, String email, String phone, String address, String addressId, String postalAddress, String postalAddressId, String nsiDepartmentId, String nsiOrganizationId, String oktmo, String orgOgrn, String depOgrn, String epguId, String kpp, String inn, String okato, String divisionType, String tnsDepartmentId, Boolean enabled, String timezone, Boolean reportsEnabled, String regionId, String series, Boolean hidden, Integer sort) { + super(PubRecruitment.PUB_RECRUITMENT); + + setId(id); + setIdmId(idmId); + setParentId(parentId); + setVersion(version); + setCreatedAt(createdAt); + setUpdatedAt(updatedAt); + setSchema(schema); + setMilitaryCode(militaryCode); + setShortname(shortname); + setFullname(fullname); + setDns(dns); + setEmail(email); + setPhone(phone); + setAddress(address); + setAddressId(addressId); + setPostalAddress(postalAddress); + setPostalAddressId(postalAddressId); + setNsiDepartmentId(nsiDepartmentId); + setNsiOrganizationId(nsiOrganizationId); + setOktmo(oktmo); + setOrgOgrn(orgOgrn); + setDepOgrn(depOgrn); + setEpguId(epguId); + setKpp(kpp); + setInn(inn); + setOkato(okato); + setDivisionType(divisionType); + setTnsDepartmentId(tnsDepartmentId); + setEnabled(enabled); + setTimezone(timezone); + setReportsEnabled(reportsEnabled); + setRegionId(regionId); + setSeries(series); + setHidden(hidden); + setSort(sort); + resetChangedOnNotNull(); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/public_/tables/records/ReasonRegistrationRecord.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/public_/tables/records/ReasonRegistrationRecord.java new file mode 100644 index 0000000..383a9ef --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/public_/tables/records/ReasonRegistrationRecord.java @@ -0,0 +1,96 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.public_.tables.records; + + +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.ReasonRegistration; + +import org.jooq.Record1; +import org.jooq.impl.UpdatableRecordImpl; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class ReasonRegistrationRecord extends UpdatableRecordImpl { + + private static final long serialVersionUID = 1L; + + /** + * Setter for + * public.reason_registration.reason_registration_id. + */ + public void setReasonRegistrationId(Long value) { + set(0, value); + } + + /** + * Getter for + * public.reason_registration.reason_registration_id. + */ + public Long getReasonRegistrationId() { + return (Long) get(0); + } + + /** + * Setter for public.reason_registration.code. + */ + public void setCode(Integer value) { + set(1, value); + } + + /** + * Getter for public.reason_registration.code. + */ + public Integer getCode() { + return (Integer) get(1); + } + + /** + * Setter for public.reason_registration.name. + */ + public void setName(String value) { + set(2, value); + } + + /** + * Getter for public.reason_registration.name. + */ + public String getName() { + return (String) get(2); + } + + // ------------------------------------------------------------------------- + // Primary key information + // ------------------------------------------------------------------------- + + @Override + public Record1 key() { + return (Record1) super.key(); + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached ReasonRegistrationRecord + */ + public ReasonRegistrationRecord() { + super(ReasonRegistration.REASON_REGISTRATION); + } + + /** + * Create a detached, initialised ReasonRegistrationRecord + */ + public ReasonRegistrationRecord(Long reasonRegistrationId, Integer code, String name) { + super(ReasonRegistration.REASON_REGISTRATION); + + setReasonRegistrationId(reasonRegistrationId); + setCode(code); + setName(name); + resetChangedOnNotNull(); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/public_/tables/records/SubpoenaRecord.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/public_/tables/records/SubpoenaRecord.java new file mode 100644 index 0000000..77adddd --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/public_/tables/records/SubpoenaRecord.java @@ -0,0 +1,232 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.public_.tables.records; + + +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.Subpoena; + +import java.sql.Timestamp; +import java.util.UUID; + +import org.jooq.Record1; +import org.jooq.impl.UpdatableRecordImpl; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class SubpoenaRecord extends UpdatableRecordImpl { + + private static final long serialVersionUID = 1L; + + /** + * Setter for public.subpoena.subpoena_id. + */ + public void setSubpoenaId(Long value) { + set(0, value); + } + + /** + * Getter for public.subpoena.subpoena_id. + */ + public Long getSubpoenaId() { + return (Long) get(0); + } + + /** + * Setter for public.subpoena.series. + */ + public void setSeries(String value) { + set(1, value); + } + + /** + * Getter for public.subpoena.series. + */ + public String getSeries() { + return (String) get(1); + } + + /** + * Setter for public.subpoena.number. + */ + public void setNumber(String value) { + set(2, value); + } + + /** + * Getter for public.subpoena.number. + */ + public String getNumber() { + return (String) get(2); + } + + /** + * Setter for public.subpoena.id_ern. + */ + public void setIdErn(String value) { + set(3, value); + } + + /** + * Getter for public.subpoena.id_ern. + */ + public String getIdErn() { + return (String) get(3); + } + + /** + * Setter for public.subpoena.create_date. + */ + public void setCreateDate(Timestamp value) { + set(4, value); + } + + /** + * Getter for public.subpoena.create_date. + */ + public Timestamp getCreateDate() { + return (Timestamp) get(4); + } + + /** + * Setter for public.subpoena.visit_date. + */ + public void setVisitDate(Timestamp value) { + set(5, value); + } + + /** + * Getter for public.subpoena.visit_date. + */ + public Timestamp getVisitDate() { + return (Timestamp) get(5); + } + + /** + * Setter for public.subpoena.send_date. + */ + public void setSendDate(Timestamp value) { + set(6, value); + } + + /** + * Getter for public.subpoena.send_date. + */ + public Timestamp getSendDate() { + return (Timestamp) get(6); + } + + /** + * Setter for public.subpoena.reason_cancelled. + */ + public void setReasonCancelled(String value) { + set(7, value); + } + + /** + * Getter for public.subpoena.reason_cancelled. + */ + public String getReasonCancelled() { + return (String) get(7); + } + + /** + * Setter for public.subpoena.recruit_id. + */ + public void setRecruitId(UUID value) { + set(8, value); + } + + /** + * Getter for public.subpoena.recruit_id. + */ + public UUID getRecruitId() { + return (UUID) get(8); + } + + /** + * Setter for public.subpoena.department_id. + */ + public void setDepartmentId(UUID value) { + set(9, value); + } + + /** + * Getter for public.subpoena.department_id. + */ + public UUID getDepartmentId() { + return (UUID) get(9); + } + + /** + * Setter for public.subpoena.subpoena_status. + */ + public void setSubpoenaStatus(String value) { + set(10, value); + } + + /** + * Getter for public.subpoena.subpoena_status. + */ + public String getSubpoenaStatus() { + return (String) get(10); + } + + /** + * Setter for public.subpoena.subpoena_reason. + */ + public void setSubpoenaReason(String value) { + set(11, value); + } + + /** + * Getter for public.subpoena.subpoena_reason. + */ + public String getSubpoenaReason() { + return (String) get(11); + } + + // ------------------------------------------------------------------------- + // Primary key information + // ------------------------------------------------------------------------- + + @Override + public Record1 key() { + return (Record1) super.key(); + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached SubpoenaRecord + */ + public SubpoenaRecord() { + super(Subpoena.SUBPOENA); + } + + /** + * Create a detached, initialised SubpoenaRecord + */ + public SubpoenaRecord(Long subpoenaId, String series, String number, String idErn, Timestamp createDate, Timestamp visitDate, Timestamp sendDate, String reasonCancelled, UUID recruitId, UUID departmentId, String subpoenaStatus, String subpoenaReason) { + super(Subpoena.SUBPOENA); + + setSubpoenaId(subpoenaId); + setSeries(series); + setNumber(number); + setIdErn(idErn); + setCreateDate(createDate); + setVisitDate(visitDate); + setSendDate(sendDate); + setReasonCancelled(reasonCancelled); + setRecruitId(recruitId); + setDepartmentId(departmentId); + setSubpoenaStatus(subpoenaStatus); + setSubpoenaReason(subpoenaReason); + resetChangedOnNotNull(); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/ratings/Keys.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/ratings/Keys.java new file mode 100644 index 0000000..394b75d --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/ratings/Keys.java @@ -0,0 +1,50 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.ratings; + + +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.PubRecruitment; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.records.PubRecruitmentRecord; +import ervu_dashboard.ervu_dashboard.db_beans.ratings.tables.AppearSubppoena; +import ervu_dashboard.ervu_dashboard.db_beans.ratings.tables.ConsiderationComplaint; +import ervu_dashboard.ervu_dashboard.db_beans.ratings.tables.Recruitment; +import ervu_dashboard.ervu_dashboard.db_beans.ratings.tables.records.AppearSubppoenaRecord; +import ervu_dashboard.ervu_dashboard.db_beans.ratings.tables.records.ConsiderationComplaintRecord; +import ervu_dashboard.ervu_dashboard.db_beans.ratings.tables.records.RecruitmentRecord; +import ervu_dashboard.ervu_dashboard.db_beans.space.tables.Region; +import ervu_dashboard.ervu_dashboard.db_beans.space.tables.records.RegionRecord; + +import org.jooq.ForeignKey; +import org.jooq.TableField; +import org.jooq.UniqueKey; +import org.jooq.impl.DSL; +import org.jooq.impl.Internal; + + +/** + * A class modelling foreign key relationships and constraints of tables in + * ratings. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Keys { + + // ------------------------------------------------------------------------- + // UNIQUE and PRIMARY KEY definitions + // ------------------------------------------------------------------------- + + public static final UniqueKey PK_APPEAR_SUBPPOENA = Internal.createUniqueKey(AppearSubppoena.APPEAR_SUBPPOENA, DSL.name("pk_appear_subppoena"), new TableField[] { AppearSubppoena.APPEAR_SUBPPOENA.ID_APPEAR_SUBPPOENA }, true); + public static final UniqueKey PK_CONSIDERATION_COMPLAINT = Internal.createUniqueKey(ConsiderationComplaint.CONSIDERATION_COMPLAINT, DSL.name("pk_consideration_complaint"), new TableField[] { ConsiderationComplaint.CONSIDERATION_COMPLAINT.ID_CONSIDERATION_COMPLAINT }, true); + public static final UniqueKey PK_RECRUITMENT = Internal.createUniqueKey(Recruitment.RECRUITMENT, DSL.name("pk_recruitment"), new TableField[] { Recruitment.RECRUITMENT.ID_RECRUITMENT }, true); + + // ------------------------------------------------------------------------- + // FOREIGN KEY definitions + // ------------------------------------------------------------------------- + + public static final ForeignKey APPEAR_SUBPPOENA__APPEAR_SUBPPOENA_FK1 = Internal.createForeignKey(AppearSubppoena.APPEAR_SUBPPOENA, DSL.name("appear_subppoena_fk1"), new TableField[] { AppearSubppoena.APPEAR_SUBPPOENA.RECRUITMENT_ID }, ervu_dashboard.ervu_dashboard.db_beans.public_.Keys.RECRUITMENT_PKEY, new TableField[] { PubRecruitment.PUB_RECRUITMENT.ID }, true); + public static final ForeignKey APPEAR_SUBPPOENA__FK_REGION = Internal.createForeignKey(AppearSubppoena.APPEAR_SUBPPOENA, DSL.name("fk_region"), new TableField[] { AppearSubppoena.APPEAR_SUBPPOENA.ID_REGION }, ervu_dashboard.ervu_dashboard.db_beans.space.Keys.PK_REGION, new TableField[] { Region.REGION.ID_REGION }, true); + public static final ForeignKey CONSIDERATION_COMPLAINT__CONSIDERATION_COMPLAINT_FK1 = Internal.createForeignKey(ConsiderationComplaint.CONSIDERATION_COMPLAINT, DSL.name("consideration_complaint_fk1"), new TableField[] { ConsiderationComplaint.CONSIDERATION_COMPLAINT.RECRUITMENT_ID }, ervu_dashboard.ervu_dashboard.db_beans.public_.Keys.RECRUITMENT_PKEY, new TableField[] { PubRecruitment.PUB_RECRUITMENT.ID }, true); + public static final ForeignKey CONSIDERATION_COMPLAINT__FK_REGION = Internal.createForeignKey(ConsiderationComplaint.CONSIDERATION_COMPLAINT, DSL.name("fk_region"), new TableField[] { ConsiderationComplaint.CONSIDERATION_COMPLAINT.ID_REGION }, ervu_dashboard.ervu_dashboard.db_beans.space.Keys.PK_REGION, new TableField[] { Region.REGION.ID_REGION }, true); + public static final ForeignKey RECRUITMENT__FK_REGION = Internal.createForeignKey(Recruitment.RECRUITMENT, DSL.name("fk_region"), new TableField[] { Recruitment.RECRUITMENT.ID_REGION }, ervu_dashboard.ervu_dashboard.db_beans.space.Keys.PK_REGION, new TableField[] { Region.REGION.ID_REGION }, true); + public static final ForeignKey RECRUITMENT__R_RECRUITMENT_FK1 = Internal.createForeignKey(Recruitment.RECRUITMENT, DSL.name("r_recruitment_fk1"), new TableField[] { Recruitment.RECRUITMENT.RECRUITMENT_ID }, ervu_dashboard.ervu_dashboard.db_beans.public_.Keys.RECRUITMENT_PKEY, new TableField[] { PubRecruitment.PUB_RECRUITMENT.ID }, true); +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/ratings/Ratings.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/ratings/Ratings.java new file mode 100644 index 0000000..54ab840 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/ratings/Ratings.java @@ -0,0 +1,69 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.ratings; + + +import ervu_dashboard.ervu_dashboard.db_beans.DefaultCatalog; +import ervu_dashboard.ervu_dashboard.db_beans.ratings.tables.AppearSubppoena; +import ervu_dashboard.ervu_dashboard.db_beans.ratings.tables.ConsiderationComplaint; +import ervu_dashboard.ervu_dashboard.db_beans.ratings.tables.Recruitment; + +import java.util.Arrays; +import java.util.List; + +import org.jooq.Catalog; +import org.jooq.Table; +import org.jooq.impl.SchemaImpl; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Ratings extends SchemaImpl { + + private static final long serialVersionUID = 1L; + + /** + * The reference instance of ratings + */ + public static final Ratings RATINGS = new Ratings(); + + /** + * Явка по повестке уровень РФ + */ + public final AppearSubppoena APPEAR_SUBPPOENA = AppearSubppoena.APPEAR_SUBPPOENA; + + /** + * Рассмотрение жалоб уровень РФ + */ + public final ConsiderationComplaint CONSIDERATION_COMPLAINT = ConsiderationComplaint.CONSIDERATION_COMPLAINT; + + /** + * Призыв уровень РФ + */ + public final Recruitment RECRUITMENT = Recruitment.RECRUITMENT; + + /** + * No further instances allowed + */ + private Ratings() { + super("ratings", null); + } + + + @Override + public Catalog getCatalog() { + return DefaultCatalog.DEFAULT_CATALOG; + } + + @Override + public final List> getTables() { + return Arrays.asList( + AppearSubppoena.APPEAR_SUBPPOENA, + ConsiderationComplaint.CONSIDERATION_COMPLAINT, + Recruitment.RECRUITMENT + ); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/ratings/Tables.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/ratings/Tables.java new file mode 100644 index 0000000..c6fd6df --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/ratings/Tables.java @@ -0,0 +1,32 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.ratings; + + +import ervu_dashboard.ervu_dashboard.db_beans.ratings.tables.AppearSubppoena; +import ervu_dashboard.ervu_dashboard.db_beans.ratings.tables.ConsiderationComplaint; +import ervu_dashboard.ervu_dashboard.db_beans.ratings.tables.Recruitment; + + +/** + * Convenience access to all tables in ratings. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Tables { + + /** + * Явка по повестке уровень РФ + */ + public static final AppearSubppoena APPEAR_SUBPPOENA = AppearSubppoena.APPEAR_SUBPPOENA; + + /** + * Рассмотрение жалоб уровень РФ + */ + public static final ConsiderationComplaint CONSIDERATION_COMPLAINT = ConsiderationComplaint.CONSIDERATION_COMPLAINT; + + /** + * Призыв уровень РФ + */ + public static final Recruitment RECRUITMENT = Recruitment.RECRUITMENT; +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/ratings/tables/AppearSubppoena.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/ratings/tables/AppearSubppoena.java new file mode 100644 index 0000000..66f455f --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/ratings/tables/AppearSubppoena.java @@ -0,0 +1,324 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.ratings.tables; + + +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.PubRecruitment.PubRecruitmentPath; +import ervu_dashboard.ervu_dashboard.db_beans.ratings.Keys; +import ervu_dashboard.ervu_dashboard.db_beans.ratings.Ratings; +import ervu_dashboard.ervu_dashboard.db_beans.ratings.tables.records.AppearSubppoenaRecord; +import ervu_dashboard.ervu_dashboard.db_beans.space.tables.Region.RegionPath; + +import java.math.BigDecimal; +import java.sql.Date; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; +import java.util.UUID; + +import org.jooq.Condition; +import org.jooq.Field; +import org.jooq.ForeignKey; +import org.jooq.Identity; +import org.jooq.InverseForeignKey; +import org.jooq.Name; +import org.jooq.Path; +import org.jooq.PlainSQL; +import org.jooq.QueryPart; +import org.jooq.Record; +import org.jooq.SQL; +import org.jooq.Schema; +import org.jooq.Select; +import org.jooq.Stringly; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.TableOptions; +import org.jooq.UniqueKey; +import org.jooq.impl.DSL; +import org.jooq.impl.SQLDataType; +import org.jooq.impl.TableImpl; + + +/** + * Явка по повестке уровень РФ + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class AppearSubppoena extends TableImpl { + + private static final long serialVersionUID = 1L; + + /** + * The reference instance of ratings.appear_subppoena + */ + public static final AppearSubppoena APPEAR_SUBPPOENA = new AppearSubppoena(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return AppearSubppoenaRecord.class; + } + + /** + * The column ratings.appear_subppoena.id_appear_subppoena. + */ + public final TableField ID_APPEAR_SUBPPOENA = createField(DSL.name("id_appear_subppoena"), SQLDataType.BIGINT.nullable(false).identity(true), this, ""); + + /** + * The column ratings.appear_subppoena.id_region. + */ + public final TableField ID_REGION = createField(DSL.name("id_region"), SQLDataType.INTEGER, this, ""); + + /** + * The column ratings.appear_subppoena.appear_mil_com. Явка в + * военкомат + */ + public final TableField APPEAR_MIL_COM = createField(DSL.name("appear_mil_com"), SQLDataType.NUMERIC, this, "Явка в военкомат"); + + /** + * The column ratings.appear_subppoena.recording_date. Дата + * записи + */ + public final TableField RECORDING_DATE = createField(DSL.name("recording_date"), SQLDataType.DATE, this, "Дата записи"); + + /** + * The column ratings.appear_subppoena.appear_mil_com_percent. + * Явка в военкомат в процентах + */ + public final TableField APPEAR_MIL_COM_PERCENT = createField(DSL.name("appear_mil_com_percent"), SQLDataType.NUMERIC, this, "Явка в военкомат в процентах"); + + /** + * The column ratings.appear_subppoena.recruitment_id. + */ + public final TableField RECRUITMENT_ID = createField(DSL.name("recruitment_id"), SQLDataType.UUID, this, ""); + + private AppearSubppoena(Name alias, Table aliased) { + this(alias, aliased, (Field[]) null, null); + } + + private AppearSubppoena(Name alias, Table aliased, Field[] parameters, Condition where) { + super(alias, null, aliased, parameters, DSL.comment("Явка по повестке уровень РФ"), TableOptions.table(), where); + } + + /** + * Create an aliased ratings.appear_subppoena table reference + */ + public AppearSubppoena(String alias) { + this(DSL.name(alias), APPEAR_SUBPPOENA); + } + + /** + * Create an aliased ratings.appear_subppoena table reference + */ + public AppearSubppoena(Name alias) { + this(alias, APPEAR_SUBPPOENA); + } + + /** + * Create a ratings.appear_subppoena table reference + */ + public AppearSubppoena() { + this(DSL.name("appear_subppoena"), null); + } + + public AppearSubppoena(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath, APPEAR_SUBPPOENA); + } + + /** + * A subtype implementing {@link Path} for simplified path-based joins. + */ + public static class AppearSubppoenaPath extends AppearSubppoena implements Path { + public AppearSubppoenaPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath); + } + private AppearSubppoenaPath(Name alias, Table aliased) { + super(alias, aliased); + } + + @Override + public AppearSubppoenaPath as(String alias) { + return new AppearSubppoenaPath(DSL.name(alias), this); + } + + @Override + public AppearSubppoenaPath as(Name alias) { + return new AppearSubppoenaPath(alias, this); + } + + @Override + public AppearSubppoenaPath as(Table alias) { + return new AppearSubppoenaPath(alias.getQualifiedName(), this); + } + } + + @Override + public Schema getSchema() { + return aliased() ? null : Ratings.RATINGS; + } + + @Override + public Identity getIdentity() { + return (Identity) super.getIdentity(); + } + + @Override + public UniqueKey getPrimaryKey() { + return Keys.PK_APPEAR_SUBPPOENA; + } + + @Override + public List> getReferences() { + return Arrays.asList(Keys.APPEAR_SUBPPOENA__FK_REGION, Keys.APPEAR_SUBPPOENA__APPEAR_SUBPPOENA_FK1); + } + + private transient RegionPath _region; + + /** + * Get the implicit join path to the space.region table. + */ + public RegionPath region() { + if (_region == null) + _region = new RegionPath(this, Keys.APPEAR_SUBPPOENA__FK_REGION, null); + + return _region; + } + + private transient PubRecruitmentPath _pubRecruitment; + + /** + * Get the implicit join path to the public.pub_recruitment + * table. + */ + public PubRecruitmentPath pubRecruitment() { + if (_pubRecruitment == null) + _pubRecruitment = new PubRecruitmentPath(this, Keys.APPEAR_SUBPPOENA__APPEAR_SUBPPOENA_FK1, null); + + return _pubRecruitment; + } + + @Override + public AppearSubppoena as(String alias) { + return new AppearSubppoena(DSL.name(alias), this); + } + + @Override + public AppearSubppoena as(Name alias) { + return new AppearSubppoena(alias, this); + } + + @Override + public AppearSubppoena as(Table alias) { + return new AppearSubppoena(alias.getQualifiedName(), this); + } + + /** + * Rename this table + */ + @Override + public AppearSubppoena rename(String name) { + return new AppearSubppoena(DSL.name(name), null); + } + + /** + * Rename this table + */ + @Override + public AppearSubppoena rename(Name name) { + return new AppearSubppoena(name, null); + } + + /** + * Rename this table + */ + @Override + public AppearSubppoena rename(Table name) { + return new AppearSubppoena(name.getQualifiedName(), null); + } + + /** + * Create an inline derived table from this table + */ + @Override + public AppearSubppoena where(Condition condition) { + return new AppearSubppoena(getQualifiedName(), aliased() ? this : null, null, condition); + } + + /** + * Create an inline derived table from this table + */ + @Override + public AppearSubppoena where(Collection conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public AppearSubppoena where(Condition... conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public AppearSubppoena where(Field condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public AppearSubppoena where(SQL condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public AppearSubppoena where(@Stringly.SQL String condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public AppearSubppoena where(@Stringly.SQL String condition, Object... binds) { + return where(DSL.condition(condition, binds)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public AppearSubppoena where(@Stringly.SQL String condition, QueryPart... parts) { + return where(DSL.condition(condition, parts)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public AppearSubppoena whereExists(Select select) { + return where(DSL.exists(select)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public AppearSubppoena whereNotExists(Select select) { + return where(DSL.notExists(select)); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/ratings/tables/ConsiderationComplaint.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/ratings/tables/ConsiderationComplaint.java new file mode 100644 index 0000000..bd62383 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/ratings/tables/ConsiderationComplaint.java @@ -0,0 +1,329 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.ratings.tables; + + +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.PubRecruitment.PubRecruitmentPath; +import ervu_dashboard.ervu_dashboard.db_beans.ratings.Keys; +import ervu_dashboard.ervu_dashboard.db_beans.ratings.Ratings; +import ervu_dashboard.ervu_dashboard.db_beans.ratings.tables.records.ConsiderationComplaintRecord; +import ervu_dashboard.ervu_dashboard.db_beans.space.tables.Region.RegionPath; + +import java.math.BigDecimal; +import java.sql.Date; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; +import java.util.UUID; + +import org.jooq.Condition; +import org.jooq.Field; +import org.jooq.ForeignKey; +import org.jooq.Identity; +import org.jooq.InverseForeignKey; +import org.jooq.Name; +import org.jooq.Path; +import org.jooq.PlainSQL; +import org.jooq.QueryPart; +import org.jooq.Record; +import org.jooq.SQL; +import org.jooq.Schema; +import org.jooq.Select; +import org.jooq.Stringly; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.TableOptions; +import org.jooq.UniqueKey; +import org.jooq.impl.DSL; +import org.jooq.impl.SQLDataType; +import org.jooq.impl.TableImpl; + + +/** + * Рассмотрение жалоб уровень РФ + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class ConsiderationComplaint extends TableImpl { + + private static final long serialVersionUID = 1L; + + /** + * The reference instance of ratings.consideration_complaint + */ + public static final ConsiderationComplaint CONSIDERATION_COMPLAINT = new ConsiderationComplaint(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return ConsiderationComplaintRecord.class; + } + + /** + * The column + * ratings.consideration_complaint.id_consideration_complaint. + */ + public final TableField ID_CONSIDERATION_COMPLAINT = createField(DSL.name("id_consideration_complaint"), SQLDataType.BIGINT.nullable(false).identity(true), this, ""); + + /** + * The column ratings.consideration_complaint.id_region. + */ + public final TableField ID_REGION = createField(DSL.name("id_region"), SQLDataType.INTEGER, this, ""); + + /** + * The column + * ratings.consideration_complaint.consideration_complaint. + * Рассмотрение жалоб + */ + public final TableField CONSIDERATION_COMPLAINT_ = createField(DSL.name("consideration_complaint"), SQLDataType.NUMERIC, this, "Рассмотрение жалоб"); + + /** + * The column ratings.consideration_complaint.recording_date. + * Дата записи + */ + public final TableField RECORDING_DATE = createField(DSL.name("recording_date"), SQLDataType.DATE, this, "Дата записи"); + + /** + * The column + * ratings.consideration_complaint.consideration_complaint_percent. + * Рассмотрение жалоб в процентах + */ + public final TableField CONSIDERATION_COMPLAINT_PERCENT = createField(DSL.name("consideration_complaint_percent"), SQLDataType.NUMERIC, this, "Рассмотрение жалоб в процентах"); + + /** + * The column ratings.consideration_complaint.recruitment_id. + */ + public final TableField RECRUITMENT_ID = createField(DSL.name("recruitment_id"), SQLDataType.UUID, this, ""); + + private ConsiderationComplaint(Name alias, Table aliased) { + this(alias, aliased, (Field[]) null, null); + } + + private ConsiderationComplaint(Name alias, Table aliased, Field[] parameters, Condition where) { + super(alias, null, aliased, parameters, DSL.comment("Рассмотрение жалоб уровень РФ"), TableOptions.table(), where); + } + + /** + * Create an aliased ratings.consideration_complaint table + * reference + */ + public ConsiderationComplaint(String alias) { + this(DSL.name(alias), CONSIDERATION_COMPLAINT); + } + + /** + * Create an aliased ratings.consideration_complaint table + * reference + */ + public ConsiderationComplaint(Name alias) { + this(alias, CONSIDERATION_COMPLAINT); + } + + /** + * Create a ratings.consideration_complaint table reference + */ + public ConsiderationComplaint() { + this(DSL.name("consideration_complaint"), null); + } + + public ConsiderationComplaint(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath, CONSIDERATION_COMPLAINT); + } + + /** + * A subtype implementing {@link Path} for simplified path-based joins. + */ + public static class ConsiderationComplaintPath extends ConsiderationComplaint implements Path { + public ConsiderationComplaintPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath); + } + private ConsiderationComplaintPath(Name alias, Table aliased) { + super(alias, aliased); + } + + @Override + public ConsiderationComplaintPath as(String alias) { + return new ConsiderationComplaintPath(DSL.name(alias), this); + } + + @Override + public ConsiderationComplaintPath as(Name alias) { + return new ConsiderationComplaintPath(alias, this); + } + + @Override + public ConsiderationComplaintPath as(Table alias) { + return new ConsiderationComplaintPath(alias.getQualifiedName(), this); + } + } + + @Override + public Schema getSchema() { + return aliased() ? null : Ratings.RATINGS; + } + + @Override + public Identity getIdentity() { + return (Identity) super.getIdentity(); + } + + @Override + public UniqueKey getPrimaryKey() { + return Keys.PK_CONSIDERATION_COMPLAINT; + } + + @Override + public List> getReferences() { + return Arrays.asList(Keys.CONSIDERATION_COMPLAINT__FK_REGION, Keys.CONSIDERATION_COMPLAINT__CONSIDERATION_COMPLAINT_FK1); + } + + private transient RegionPath _region; + + /** + * Get the implicit join path to the space.region table. + */ + public RegionPath region() { + if (_region == null) + _region = new RegionPath(this, Keys.CONSIDERATION_COMPLAINT__FK_REGION, null); + + return _region; + } + + private transient PubRecruitmentPath _pubRecruitment; + + /** + * Get the implicit join path to the public.pub_recruitment + * table. + */ + public PubRecruitmentPath pubRecruitment() { + if (_pubRecruitment == null) + _pubRecruitment = new PubRecruitmentPath(this, Keys.CONSIDERATION_COMPLAINT__CONSIDERATION_COMPLAINT_FK1, null); + + return _pubRecruitment; + } + + @Override + public ConsiderationComplaint as(String alias) { + return new ConsiderationComplaint(DSL.name(alias), this); + } + + @Override + public ConsiderationComplaint as(Name alias) { + return new ConsiderationComplaint(alias, this); + } + + @Override + public ConsiderationComplaint as(Table alias) { + return new ConsiderationComplaint(alias.getQualifiedName(), this); + } + + /** + * Rename this table + */ + @Override + public ConsiderationComplaint rename(String name) { + return new ConsiderationComplaint(DSL.name(name), null); + } + + /** + * Rename this table + */ + @Override + public ConsiderationComplaint rename(Name name) { + return new ConsiderationComplaint(name, null); + } + + /** + * Rename this table + */ + @Override + public ConsiderationComplaint rename(Table name) { + return new ConsiderationComplaint(name.getQualifiedName(), null); + } + + /** + * Create an inline derived table from this table + */ + @Override + public ConsiderationComplaint where(Condition condition) { + return new ConsiderationComplaint(getQualifiedName(), aliased() ? this : null, null, condition); + } + + /** + * Create an inline derived table from this table + */ + @Override + public ConsiderationComplaint where(Collection conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public ConsiderationComplaint where(Condition... conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public ConsiderationComplaint where(Field condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public ConsiderationComplaint where(SQL condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public ConsiderationComplaint where(@Stringly.SQL String condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public ConsiderationComplaint where(@Stringly.SQL String condition, Object... binds) { + return where(DSL.condition(condition, binds)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public ConsiderationComplaint where(@Stringly.SQL String condition, QueryPart... parts) { + return where(DSL.condition(condition, parts)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public ConsiderationComplaint whereExists(Select select) { + return where(DSL.exists(select)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public ConsiderationComplaint whereNotExists(Select select) { + return where(DSL.notExists(select)); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/ratings/tables/Recruitment.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/ratings/tables/Recruitment.java new file mode 100644 index 0000000..59e9bf2 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/ratings/tables/Recruitment.java @@ -0,0 +1,328 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.ratings.tables; + + +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.PubRecruitment.PubRecruitmentPath; +import ervu_dashboard.ervu_dashboard.db_beans.ratings.Keys; +import ervu_dashboard.ervu_dashboard.db_beans.ratings.Ratings; +import ervu_dashboard.ervu_dashboard.db_beans.ratings.tables.records.RecruitmentRecord; +import ervu_dashboard.ervu_dashboard.db_beans.space.tables.Region.RegionPath; + +import java.math.BigDecimal; +import java.sql.Date; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; +import java.util.UUID; + +import org.jooq.Condition; +import org.jooq.Field; +import org.jooq.ForeignKey; +import org.jooq.Identity; +import org.jooq.InverseForeignKey; +import org.jooq.Name; +import org.jooq.Path; +import org.jooq.PlainSQL; +import org.jooq.QueryPart; +import org.jooq.Record; +import org.jooq.SQL; +import org.jooq.Schema; +import org.jooq.Select; +import org.jooq.Stringly; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.TableOptions; +import org.jooq.UniqueKey; +import org.jooq.impl.DSL; +import org.jooq.impl.SQLDataType; +import org.jooq.impl.TableImpl; + + +/** + * Призыв уровень РФ + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Recruitment extends TableImpl { + + private static final long serialVersionUID = 1L; + + /** + * The reference instance of ratings.recruitment + */ + public static final Recruitment RECRUITMENT = new Recruitment(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return RecruitmentRecord.class; + } + + /** + * The column ratings.recruitment.id_recruitment. + */ + public final TableField ID_RECRUITMENT = createField(DSL.name("id_recruitment"), SQLDataType.BIGINT.nullable(false).identity(true), this, ""); + + /** + * The column ratings.recruitment.id_region. + */ + public final TableField ID_REGION = createField(DSL.name("id_region"), SQLDataType.INTEGER, this, ""); + + /** + * The column ratings.recruitment.execution. Исполнение плана + * призыва + */ + public final TableField EXECUTION = createField(DSL.name("execution"), SQLDataType.NUMERIC, this, "Исполнение плана призыва"); + + /** + * The column ratings.recruitment.spring_autumn. Осень/весна + */ + public final TableField SPRING_AUTUMN = createField(DSL.name("spring_autumn"), SQLDataType.CLOB, this, "Осень/весна"); + + /** + * The column ratings.recruitment.recording_date. Дата записи + */ + public final TableField RECORDING_DATE = createField(DSL.name("recording_date"), SQLDataType.DATE, this, "Дата записи"); + + /** + * The column ratings.recruitment.execution_percent. Исолнение + * плана призыва в процентах + */ + public final TableField EXECUTION_PERCENT = createField(DSL.name("execution_percent"), SQLDataType.NUMERIC, this, "Исолнение плана призыва в процентах"); + + /** + * The column ratings.recruitment.recruitment_id. + */ + public final TableField RECRUITMENT_ID = createField(DSL.name("recruitment_id"), SQLDataType.UUID, this, ""); + + private Recruitment(Name alias, Table aliased) { + this(alias, aliased, (Field[]) null, null); + } + + private Recruitment(Name alias, Table aliased, Field[] parameters, Condition where) { + super(alias, null, aliased, parameters, DSL.comment("Призыв уровень РФ"), TableOptions.table(), where); + } + + /** + * Create an aliased ratings.recruitment table reference + */ + public Recruitment(String alias) { + this(DSL.name(alias), RECRUITMENT); + } + + /** + * Create an aliased ratings.recruitment table reference + */ + public Recruitment(Name alias) { + this(alias, RECRUITMENT); + } + + /** + * Create a ratings.recruitment table reference + */ + public Recruitment() { + this(DSL.name("recruitment"), null); + } + + public Recruitment(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath, RECRUITMENT); + } + + /** + * A subtype implementing {@link Path} for simplified path-based joins. + */ + public static class RecruitmentPath extends Recruitment implements Path { + public RecruitmentPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath); + } + private RecruitmentPath(Name alias, Table aliased) { + super(alias, aliased); + } + + @Override + public RecruitmentPath as(String alias) { + return new RecruitmentPath(DSL.name(alias), this); + } + + @Override + public RecruitmentPath as(Name alias) { + return new RecruitmentPath(alias, this); + } + + @Override + public RecruitmentPath as(Table alias) { + return new RecruitmentPath(alias.getQualifiedName(), this); + } + } + + @Override + public Schema getSchema() { + return aliased() ? null : Ratings.RATINGS; + } + + @Override + public Identity getIdentity() { + return (Identity) super.getIdentity(); + } + + @Override + public UniqueKey getPrimaryKey() { + return Keys.PK_RECRUITMENT; + } + + @Override + public List> getReferences() { + return Arrays.asList(Keys.RECRUITMENT__FK_REGION, Keys.RECRUITMENT__R_RECRUITMENT_FK1); + } + + private transient RegionPath _region; + + /** + * Get the implicit join path to the space.region table. + */ + public RegionPath region() { + if (_region == null) + _region = new RegionPath(this, Keys.RECRUITMENT__FK_REGION, null); + + return _region; + } + + private transient PubRecruitmentPath _pubRecruitment; + + /** + * Get the implicit join path to the public.pub_recruitment + * table. + */ + public PubRecruitmentPath pubRecruitment() { + if (_pubRecruitment == null) + _pubRecruitment = new PubRecruitmentPath(this, Keys.RECRUITMENT__R_RECRUITMENT_FK1, null); + + return _pubRecruitment; + } + + @Override + public Recruitment as(String alias) { + return new Recruitment(DSL.name(alias), this); + } + + @Override + public Recruitment as(Name alias) { + return new Recruitment(alias, this); + } + + @Override + public Recruitment as(Table alias) { + return new Recruitment(alias.getQualifiedName(), this); + } + + /** + * Rename this table + */ + @Override + public Recruitment rename(String name) { + return new Recruitment(DSL.name(name), null); + } + + /** + * Rename this table + */ + @Override + public Recruitment rename(Name name) { + return new Recruitment(name, null); + } + + /** + * Rename this table + */ + @Override + public Recruitment rename(Table name) { + return new Recruitment(name.getQualifiedName(), null); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Recruitment where(Condition condition) { + return new Recruitment(getQualifiedName(), aliased() ? this : null, null, condition); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Recruitment where(Collection conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Recruitment where(Condition... conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Recruitment where(Field condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Recruitment where(SQL condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Recruitment where(@Stringly.SQL String condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Recruitment where(@Stringly.SQL String condition, Object... binds) { + return where(DSL.condition(condition, binds)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Recruitment where(@Stringly.SQL String condition, QueryPart... parts) { + return where(DSL.condition(condition, parts)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Recruitment whereExists(Select select) { + return where(DSL.exists(select)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Recruitment whereNotExists(Select select) { + return where(DSL.notExists(select)); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/ratings/tables/records/AppearSubppoenaRecord.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/ratings/tables/records/AppearSubppoenaRecord.java new file mode 100644 index 0000000..006e46a --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/ratings/tables/records/AppearSubppoenaRecord.java @@ -0,0 +1,149 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.ratings.tables.records; + + +import ervu_dashboard.ervu_dashboard.db_beans.ratings.tables.AppearSubppoena; + +import java.math.BigDecimal; +import java.sql.Date; +import java.util.UUID; + +import org.jooq.Record1; +import org.jooq.impl.UpdatableRecordImpl; + + +/** + * Явка по повестке уровень РФ + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class AppearSubppoenaRecord extends UpdatableRecordImpl { + + private static final long serialVersionUID = 1L; + + /** + * Setter for ratings.appear_subppoena.id_appear_subppoena. + */ + public void setIdAppearSubppoena(Long value) { + set(0, value); + } + + /** + * Getter for ratings.appear_subppoena.id_appear_subppoena. + */ + public Long getIdAppearSubppoena() { + return (Long) get(0); + } + + /** + * Setter for ratings.appear_subppoena.id_region. + */ + public void setIdRegion(Integer value) { + set(1, value); + } + + /** + * Getter for ratings.appear_subppoena.id_region. + */ + public Integer getIdRegion() { + return (Integer) get(1); + } + + /** + * Setter for ratings.appear_subppoena.appear_mil_com. Явка в + * военкомат + */ + public void setAppearMilCom(BigDecimal value) { + set(2, value); + } + + /** + * Getter for ratings.appear_subppoena.appear_mil_com. Явка в + * военкомат + */ + public BigDecimal getAppearMilCom() { + return (BigDecimal) get(2); + } + + /** + * Setter for ratings.appear_subppoena.recording_date. Дата + * записи + */ + public void setRecordingDate(Date value) { + set(3, value); + } + + /** + * Getter for ratings.appear_subppoena.recording_date. Дата + * записи + */ + public Date getRecordingDate() { + return (Date) get(3); + } + + /** + * Setter for ratings.appear_subppoena.appear_mil_com_percent. + * Явка в военкомат в процентах + */ + public void setAppearMilComPercent(BigDecimal value) { + set(4, value); + } + + /** + * Getter for ratings.appear_subppoena.appear_mil_com_percent. + * Явка в военкомат в процентах + */ + public BigDecimal getAppearMilComPercent() { + return (BigDecimal) get(4); + } + + /** + * Setter for ratings.appear_subppoena.recruitment_id. + */ + public void setRecruitmentId(UUID value) { + set(5, value); + } + + /** + * Getter for ratings.appear_subppoena.recruitment_id. + */ + public UUID getRecruitmentId() { + return (UUID) get(5); + } + + // ------------------------------------------------------------------------- + // Primary key information + // ------------------------------------------------------------------------- + + @Override + public Record1 key() { + return (Record1) super.key(); + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached AppearSubppoenaRecord + */ + public AppearSubppoenaRecord() { + super(AppearSubppoena.APPEAR_SUBPPOENA); + } + + /** + * Create a detached, initialised AppearSubppoenaRecord + */ + public AppearSubppoenaRecord(Long idAppearSubppoena, Integer idRegion, BigDecimal appearMilCom, Date recordingDate, BigDecimal appearMilComPercent, UUID recruitmentId) { + super(AppearSubppoena.APPEAR_SUBPPOENA); + + setIdAppearSubppoena(idAppearSubppoena); + setIdRegion(idRegion); + setAppearMilCom(appearMilCom); + setRecordingDate(recordingDate); + setAppearMilComPercent(appearMilComPercent); + setRecruitmentId(recruitmentId); + resetChangedOnNotNull(); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/ratings/tables/records/ConsiderationComplaintRecord.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/ratings/tables/records/ConsiderationComplaintRecord.java new file mode 100644 index 0000000..39afb84 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/ratings/tables/records/ConsiderationComplaintRecord.java @@ -0,0 +1,155 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.ratings.tables.records; + + +import ervu_dashboard.ervu_dashboard.db_beans.ratings.tables.ConsiderationComplaint; + +import java.math.BigDecimal; +import java.sql.Date; +import java.util.UUID; + +import org.jooq.Record1; +import org.jooq.impl.UpdatableRecordImpl; + + +/** + * Рассмотрение жалоб уровень РФ + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class ConsiderationComplaintRecord extends UpdatableRecordImpl { + + private static final long serialVersionUID = 1L; + + /** + * Setter for + * ratings.consideration_complaint.id_consideration_complaint. + */ + public void setIdConsiderationComplaint(Long value) { + set(0, value); + } + + /** + * Getter for + * ratings.consideration_complaint.id_consideration_complaint. + */ + public Long getIdConsiderationComplaint() { + return (Long) get(0); + } + + /** + * Setter for ratings.consideration_complaint.id_region. + */ + public void setIdRegion(Integer value) { + set(1, value); + } + + /** + * Getter for ratings.consideration_complaint.id_region. + */ + public Integer getIdRegion() { + return (Integer) get(1); + } + + /** + * Setter for + * ratings.consideration_complaint.consideration_complaint. + * Рассмотрение жалоб + */ + public void setConsiderationComplaint(BigDecimal value) { + set(2, value); + } + + /** + * Getter for + * ratings.consideration_complaint.consideration_complaint. + * Рассмотрение жалоб + */ + public BigDecimal getConsiderationComplaint() { + return (BigDecimal) get(2); + } + + /** + * Setter for ratings.consideration_complaint.recording_date. + * Дата записи + */ + public void setRecordingDate(Date value) { + set(3, value); + } + + /** + * Getter for ratings.consideration_complaint.recording_date. + * Дата записи + */ + public Date getRecordingDate() { + return (Date) get(3); + } + + /** + * Setter for + * ratings.consideration_complaint.consideration_complaint_percent. + * Рассмотрение жалоб в процентах + */ + public void setConsiderationComplaintPercent(BigDecimal value) { + set(4, value); + } + + /** + * Getter for + * ratings.consideration_complaint.consideration_complaint_percent. + * Рассмотрение жалоб в процентах + */ + public BigDecimal getConsiderationComplaintPercent() { + return (BigDecimal) get(4); + } + + /** + * Setter for ratings.consideration_complaint.recruitment_id. + */ + public void setRecruitmentId(UUID value) { + set(5, value); + } + + /** + * Getter for ratings.consideration_complaint.recruitment_id. + */ + public UUID getRecruitmentId() { + return (UUID) get(5); + } + + // ------------------------------------------------------------------------- + // Primary key information + // ------------------------------------------------------------------------- + + @Override + public Record1 key() { + return (Record1) super.key(); + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached ConsiderationComplaintRecord + */ + public ConsiderationComplaintRecord() { + super(ConsiderationComplaint.CONSIDERATION_COMPLAINT); + } + + /** + * Create a detached, initialised ConsiderationComplaintRecord + */ + public ConsiderationComplaintRecord(Long idConsiderationComplaint, Integer idRegion, BigDecimal considerationComplaint, Date recordingDate, BigDecimal considerationComplaintPercent, UUID recruitmentId) { + super(ConsiderationComplaint.CONSIDERATION_COMPLAINT); + + setIdConsiderationComplaint(idConsiderationComplaint); + setIdRegion(idRegion); + setConsiderationComplaint(considerationComplaint); + setRecordingDate(recordingDate); + setConsiderationComplaintPercent(considerationComplaintPercent); + setRecruitmentId(recruitmentId); + resetChangedOnNotNull(); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/ratings/tables/records/RecruitmentRecord.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/ratings/tables/records/RecruitmentRecord.java new file mode 100644 index 0000000..a7e01a9 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/ratings/tables/records/RecruitmentRecord.java @@ -0,0 +1,162 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.ratings.tables.records; + + +import ervu_dashboard.ervu_dashboard.db_beans.ratings.tables.Recruitment; + +import java.math.BigDecimal; +import java.sql.Date; +import java.util.UUID; + +import org.jooq.Record1; +import org.jooq.impl.UpdatableRecordImpl; + + +/** + * Призыв уровень РФ + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class RecruitmentRecord extends UpdatableRecordImpl { + + private static final long serialVersionUID = 1L; + + /** + * Setter for ratings.recruitment.id_recruitment. + */ + public void setIdRecruitment(Long value) { + set(0, value); + } + + /** + * Getter for ratings.recruitment.id_recruitment. + */ + public Long getIdRecruitment() { + return (Long) get(0); + } + + /** + * Setter for ratings.recruitment.id_region. + */ + public void setIdRegion(Integer value) { + set(1, value); + } + + /** + * Getter for ratings.recruitment.id_region. + */ + public Integer getIdRegion() { + return (Integer) get(1); + } + + /** + * Setter for ratings.recruitment.execution. Исполнение плана + * призыва + */ + public void setExecution(BigDecimal value) { + set(2, value); + } + + /** + * Getter for ratings.recruitment.execution. Исполнение плана + * призыва + */ + public BigDecimal getExecution() { + return (BigDecimal) get(2); + } + + /** + * Setter for ratings.recruitment.spring_autumn. Осень/весна + */ + public void setSpringAutumn(String value) { + set(3, value); + } + + /** + * Getter for ratings.recruitment.spring_autumn. Осень/весна + */ + public String getSpringAutumn() { + return (String) get(3); + } + + /** + * Setter for ratings.recruitment.recording_date. Дата записи + */ + public void setRecordingDate(Date value) { + set(4, value); + } + + /** + * Getter for ratings.recruitment.recording_date. Дата записи + */ + public Date getRecordingDate() { + return (Date) get(4); + } + + /** + * Setter for ratings.recruitment.execution_percent. Исолнение + * плана призыва в процентах + */ + public void setExecutionPercent(BigDecimal value) { + set(5, value); + } + + /** + * Getter for ratings.recruitment.execution_percent. Исолнение + * плана призыва в процентах + */ + public BigDecimal getExecutionPercent() { + return (BigDecimal) get(5); + } + + /** + * Setter for ratings.recruitment.recruitment_id. + */ + public void setRecruitmentId(UUID value) { + set(6, value); + } + + /** + * Getter for ratings.recruitment.recruitment_id. + */ + public UUID getRecruitmentId() { + return (UUID) get(6); + } + + // ------------------------------------------------------------------------- + // Primary key information + // ------------------------------------------------------------------------- + + @Override + public Record1 key() { + return (Record1) super.key(); + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached RecruitmentRecord + */ + public RecruitmentRecord() { + super(Recruitment.RECRUITMENT); + } + + /** + * Create a detached, initialised RecruitmentRecord + */ + public RecruitmentRecord(Long idRecruitment, Integer idRegion, BigDecimal execution, String springAutumn, Date recordingDate, BigDecimal executionPercent, UUID recruitmentId) { + super(Recruitment.RECRUITMENT); + + setIdRecruitment(idRecruitment); + setIdRegion(idRegion); + setExecution(execution); + setSpringAutumn(springAutumn); + setRecordingDate(recordingDate); + setExecutionPercent(executionPercent); + setRecruitmentId(recruitmentId); + resetChangedOnNotNull(); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/recruitment_campaign/Keys.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/recruitment_campaign/Keys.java new file mode 100644 index 0000000..1c2552e --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/recruitment_campaign/Keys.java @@ -0,0 +1,45 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.recruitment_campaign; + + +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.PubRecruitment; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.records.PubRecruitmentRecord; +import ervu_dashboard.ervu_dashboard.db_beans.recruitment_campaign.tables.Appeals; +import ervu_dashboard.ervu_dashboard.db_beans.recruitment_campaign.tables.Recruitment; +import ervu_dashboard.ervu_dashboard.db_beans.recruitment_campaign.tables.Subpoenas; +import ervu_dashboard.ervu_dashboard.db_beans.recruitment_campaign.tables.records.AppealsRecord; +import ervu_dashboard.ervu_dashboard.db_beans.recruitment_campaign.tables.records.RecruitmentRecord; +import ervu_dashboard.ervu_dashboard.db_beans.recruitment_campaign.tables.records.SubpoenasRecord; + +import org.jooq.ForeignKey; +import org.jooq.TableField; +import org.jooq.UniqueKey; +import org.jooq.impl.DSL; +import org.jooq.impl.Internal; + + +/** + * A class modelling foreign key relationships and constraints of tables in + * recruitment_campaign. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Keys { + + // ------------------------------------------------------------------------- + // UNIQUE and PRIMARY KEY definitions + // ------------------------------------------------------------------------- + + public static final UniqueKey PK_APPEAL = Internal.createUniqueKey(Appeals.APPEALS, DSL.name("pk_appeal"), new TableField[] { Appeals.APPEALS.ID_APPEAL }, true); + public static final UniqueKey PK_RECRUITMENT = Internal.createUniqueKey(Recruitment.RECRUITMENT, DSL.name("pk_recruitment"), new TableField[] { Recruitment.RECRUITMENT.ID_RECRUITMENT }, true); + public static final UniqueKey PK_SUBPOENA = Internal.createUniqueKey(Subpoenas.SUBPOENAS, DSL.name("pk_subpoena"), new TableField[] { Subpoenas.SUBPOENAS.ID_SUBPOENA }, true); + + // ------------------------------------------------------------------------- + // FOREIGN KEY definitions + // ------------------------------------------------------------------------- + + public static final ForeignKey APPEALS__RC_APPEALS_FK1 = Internal.createForeignKey(Appeals.APPEALS, DSL.name("rc_appeals_fk1"), new TableField[] { Appeals.APPEALS.RECRUITMENT_ID }, ervu_dashboard.ervu_dashboard.db_beans.public_.Keys.RECRUITMENT_PKEY, new TableField[] { PubRecruitment.PUB_RECRUITMENT.ID }, true); + public static final ForeignKey RECRUITMENT__RC_RECRUITMENT_FK1 = Internal.createForeignKey(Recruitment.RECRUITMENT, DSL.name("rc_recruitment_fk1"), new TableField[] { Recruitment.RECRUITMENT.RECRUITMENT_ID }, ervu_dashboard.ervu_dashboard.db_beans.public_.Keys.RECRUITMENT_PKEY, new TableField[] { PubRecruitment.PUB_RECRUITMENT.ID }, true); + public static final ForeignKey SUBPOENAS__SUBPOENAS_FK1 = Internal.createForeignKey(Subpoenas.SUBPOENAS, DSL.name("subpoenas_fk1"), new TableField[] { Subpoenas.SUBPOENAS.RECRUITMENT_ID }, ervu_dashboard.ervu_dashboard.db_beans.public_.Keys.RECRUITMENT_PKEY, new TableField[] { PubRecruitment.PUB_RECRUITMENT.ID }, true); +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/recruitment_campaign/RecruitmentCampaign.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/recruitment_campaign/RecruitmentCampaign.java new file mode 100644 index 0000000..797df4a --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/recruitment_campaign/RecruitmentCampaign.java @@ -0,0 +1,69 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.recruitment_campaign; + + +import ervu_dashboard.ervu_dashboard.db_beans.DefaultCatalog; +import ervu_dashboard.ervu_dashboard.db_beans.recruitment_campaign.tables.Appeals; +import ervu_dashboard.ervu_dashboard.db_beans.recruitment_campaign.tables.Recruitment; +import ervu_dashboard.ervu_dashboard.db_beans.recruitment_campaign.tables.Subpoenas; + +import java.util.Arrays; +import java.util.List; + +import org.jooq.Catalog; +import org.jooq.Table; +import org.jooq.impl.SchemaImpl; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class RecruitmentCampaign extends SchemaImpl { + + private static final long serialVersionUID = 1L; + + /** + * The reference instance of recruitment_campaign + */ + public static final RecruitmentCampaign RECRUITMENT_CAMPAIGN = new RecruitmentCampaign(); + + /** + * The table recruitment_campaign.appeals. + */ + public final Appeals APPEALS = Appeals.APPEALS; + + /** + * The table recruitment_campaign.recruitment. + */ + public final Recruitment RECRUITMENT = Recruitment.RECRUITMENT; + + /** + * Повестки уровень РФ + */ + public final Subpoenas SUBPOENAS = Subpoenas.SUBPOENAS; + + /** + * No further instances allowed + */ + private RecruitmentCampaign() { + super("recruitment_campaign", null); + } + + + @Override + public Catalog getCatalog() { + return DefaultCatalog.DEFAULT_CATALOG; + } + + @Override + public final List> getTables() { + return Arrays.asList( + Appeals.APPEALS, + Recruitment.RECRUITMENT, + Subpoenas.SUBPOENAS + ); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/recruitment_campaign/Tables.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/recruitment_campaign/Tables.java new file mode 100644 index 0000000..be8998f --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/recruitment_campaign/Tables.java @@ -0,0 +1,32 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.recruitment_campaign; + + +import ervu_dashboard.ervu_dashboard.db_beans.recruitment_campaign.tables.Appeals; +import ervu_dashboard.ervu_dashboard.db_beans.recruitment_campaign.tables.Recruitment; +import ervu_dashboard.ervu_dashboard.db_beans.recruitment_campaign.tables.Subpoenas; + + +/** + * Convenience access to all tables in recruitment_campaign. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Tables { + + /** + * The table recruitment_campaign.appeals. + */ + public static final Appeals APPEALS = Appeals.APPEALS; + + /** + * The table recruitment_campaign.recruitment. + */ + public static final Recruitment RECRUITMENT = Recruitment.RECRUITMENT; + + /** + * Повестки уровень РФ + */ + public static final Subpoenas SUBPOENAS = Subpoenas.SUBPOENAS; +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/recruitment_campaign/tables/Appeals.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/recruitment_campaign/tables/Appeals.java new file mode 100644 index 0000000..c00d499 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/recruitment_campaign/tables/Appeals.java @@ -0,0 +1,345 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.recruitment_campaign.tables; + + +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.PubRecruitment.PubRecruitmentPath; +import ervu_dashboard.ervu_dashboard.db_beans.recruitment_campaign.Keys; +import ervu_dashboard.ervu_dashboard.db_beans.recruitment_campaign.RecruitmentCampaign; +import ervu_dashboard.ervu_dashboard.db_beans.recruitment_campaign.tables.records.AppealsRecord; + +import java.math.BigDecimal; +import java.sql.Date; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; +import java.util.UUID; + +import org.jooq.Condition; +import org.jooq.Field; +import org.jooq.ForeignKey; +import org.jooq.Identity; +import org.jooq.InverseForeignKey; +import org.jooq.Name; +import org.jooq.Path; +import org.jooq.PlainSQL; +import org.jooq.QueryPart; +import org.jooq.Record; +import org.jooq.SQL; +import org.jooq.Schema; +import org.jooq.Select; +import org.jooq.Stringly; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.TableOptions; +import org.jooq.UniqueKey; +import org.jooq.impl.DSL; +import org.jooq.impl.SQLDataType; +import org.jooq.impl.TableImpl; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Appeals extends TableImpl { + + private static final long serialVersionUID = 1L; + + /** + * The reference instance of recruitment_campaign.appeals + */ + public static final Appeals APPEALS = new Appeals(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return AppealsRecord.class; + } + + /** + * The column recruitment_campaign.appeals.id_appeal. + */ + public final TableField ID_APPEAL = createField(DSL.name("id_appeal"), SQLDataType.BIGINT.nullable(false).identity(true), this, ""); + + /** + * The column recruitment_campaign.appeals.total_appeal. + * Получено жалоб + */ + public final TableField TOTAL_APPEAL = createField(DSL.name("total_appeal"), SQLDataType.NUMERIC, this, "Получено жалоб"); + + /** + * The column recruitment_campaign.appeals.resolved. Решено + */ + public final TableField RESOLVED = createField(DSL.name("resolved"), SQLDataType.NUMERIC, this, "Решено"); + + /** + * The column recruitment_campaign.appeals.not_resolved. Не + * решено + */ + public final TableField NOT_RESOLVED = createField(DSL.name("not_resolved"), SQLDataType.NUMERIC, this, "Не решено"); + + /** + * The column + * recruitment_campaign.appeals.average_consideration. Время + * решения + */ + public final TableField AVERAGE_CONSIDERATION = createField(DSL.name("average_consideration"), SQLDataType.NUMERIC, this, "Время решения"); + + /** + * The column recruitment_campaign.appeals.average_rating. + * Оценка удовлетворенности + */ + public final TableField AVERAGE_RATING = createField(DSL.name("average_rating"), SQLDataType.NUMERIC, this, "Оценка удовлетворенности"); + + /** + * The column recruitment_campaign.appeals.spring_autumn. + * Весна/Осень + */ + public final TableField SPRING_AUTUMN = createField(DSL.name("spring_autumn"), SQLDataType.CLOB, this, "Весна/Осень"); + + /** + * The column recruitment_campaign.appeals.recording_date. Дата + * записи + */ + public final TableField RECORDING_DATE = createField(DSL.name("recording_date"), SQLDataType.DATE.defaultValue(DSL.field(DSL.raw("now()"), SQLDataType.DATE)), this, "Дата записи"); + + /** + * The column recruitment_campaign.appeals.resolved_percent. + * Процент решенных + */ + public final TableField RESOLVED_PERCENT = createField(DSL.name("resolved_percent"), SQLDataType.NUMERIC, this, "Процент решенных"); + + /** + * The column + * recruitment_campaign.appeals.not_resolved_percent. Процент + * не решенных + */ + public final TableField NOT_RESOLVED_PERCENT = createField(DSL.name("not_resolved_percent"), SQLDataType.NUMERIC, this, "Процент не решенных"); + + /** + * The column recruitment_campaign.appeals.recruitment_id. + */ + public final TableField RECRUITMENT_ID = createField(DSL.name("recruitment_id"), SQLDataType.UUID, this, ""); + + private Appeals(Name alias, Table aliased) { + this(alias, aliased, (Field[]) null, null); + } + + private Appeals(Name alias, Table aliased, Field[] parameters, Condition where) { + super(alias, null, aliased, parameters, DSL.comment(""), TableOptions.table(), where); + } + + /** + * Create an aliased recruitment_campaign.appeals table + * reference + */ + public Appeals(String alias) { + this(DSL.name(alias), APPEALS); + } + + /** + * Create an aliased recruitment_campaign.appeals table + * reference + */ + public Appeals(Name alias) { + this(alias, APPEALS); + } + + /** + * Create a recruitment_campaign.appeals table reference + */ + public Appeals() { + this(DSL.name("appeals"), null); + } + + public Appeals(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath, APPEALS); + } + + /** + * A subtype implementing {@link Path} for simplified path-based joins. + */ + public static class AppealsPath extends Appeals implements Path { + public AppealsPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath); + } + private AppealsPath(Name alias, Table aliased) { + super(alias, aliased); + } + + @Override + public AppealsPath as(String alias) { + return new AppealsPath(DSL.name(alias), this); + } + + @Override + public AppealsPath as(Name alias) { + return new AppealsPath(alias, this); + } + + @Override + public AppealsPath as(Table alias) { + return new AppealsPath(alias.getQualifiedName(), this); + } + } + + @Override + public Schema getSchema() { + return aliased() ? null : RecruitmentCampaign.RECRUITMENT_CAMPAIGN; + } + + @Override + public Identity getIdentity() { + return (Identity) super.getIdentity(); + } + + @Override + public UniqueKey getPrimaryKey() { + return Keys.PK_APPEAL; + } + + @Override + public List> getReferences() { + return Arrays.asList(Keys.APPEALS__RC_APPEALS_FK1); + } + + private transient PubRecruitmentPath _pubRecruitment; + + /** + * Get the implicit join path to the public.pub_recruitment + * table. + */ + public PubRecruitmentPath pubRecruitment() { + if (_pubRecruitment == null) + _pubRecruitment = new PubRecruitmentPath(this, Keys.APPEALS__RC_APPEALS_FK1, null); + + return _pubRecruitment; + } + + @Override + public Appeals as(String alias) { + return new Appeals(DSL.name(alias), this); + } + + @Override + public Appeals as(Name alias) { + return new Appeals(alias, this); + } + + @Override + public Appeals as(Table alias) { + return new Appeals(alias.getQualifiedName(), this); + } + + /** + * Rename this table + */ + @Override + public Appeals rename(String name) { + return new Appeals(DSL.name(name), null); + } + + /** + * Rename this table + */ + @Override + public Appeals rename(Name name) { + return new Appeals(name, null); + } + + /** + * Rename this table + */ + @Override + public Appeals rename(Table name) { + return new Appeals(name.getQualifiedName(), null); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Appeals where(Condition condition) { + return new Appeals(getQualifiedName(), aliased() ? this : null, null, condition); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Appeals where(Collection conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Appeals where(Condition... conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Appeals where(Field condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Appeals where(SQL condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Appeals where(@Stringly.SQL String condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Appeals where(@Stringly.SQL String condition, Object... binds) { + return where(DSL.condition(condition, binds)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Appeals where(@Stringly.SQL String condition, QueryPart... parts) { + return where(DSL.condition(condition, parts)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Appeals whereExists(Select select) { + return where(DSL.exists(select)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Appeals whereNotExists(Select select) { + return where(DSL.notExists(select)); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/recruitment_campaign/tables/Recruitment.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/recruitment_campaign/tables/Recruitment.java new file mode 100644 index 0000000..bbbe3d7 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/recruitment_campaign/tables/Recruitment.java @@ -0,0 +1,337 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.recruitment_campaign.tables; + + +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.PubRecruitment.PubRecruitmentPath; +import ervu_dashboard.ervu_dashboard.db_beans.recruitment_campaign.Keys; +import ervu_dashboard.ervu_dashboard.db_beans.recruitment_campaign.RecruitmentCampaign; +import ervu_dashboard.ervu_dashboard.db_beans.recruitment_campaign.tables.records.RecruitmentRecord; + +import java.math.BigDecimal; +import java.sql.Date; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; +import java.util.UUID; + +import org.jooq.Condition; +import org.jooq.Field; +import org.jooq.ForeignKey; +import org.jooq.Identity; +import org.jooq.InverseForeignKey; +import org.jooq.Name; +import org.jooq.Path; +import org.jooq.PlainSQL; +import org.jooq.QueryPart; +import org.jooq.Record; +import org.jooq.SQL; +import org.jooq.Schema; +import org.jooq.Select; +import org.jooq.Stringly; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.TableOptions; +import org.jooq.UniqueKey; +import org.jooq.impl.DSL; +import org.jooq.impl.SQLDataType; +import org.jooq.impl.TableImpl; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Recruitment extends TableImpl { + + private static final long serialVersionUID = 1L; + + /** + * The reference instance of recruitment_campaign.recruitment + */ + public static final Recruitment RECRUITMENT = new Recruitment(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return RecruitmentRecord.class; + } + + /** + * The column recruitment_campaign.recruitment.id_recruitment. + */ + public final TableField ID_RECRUITMENT = createField(DSL.name("id_recruitment"), SQLDataType.BIGINT.nullable(false).identity(true), this, ""); + + /** + * The column + * recruitment_campaign.recruitment.suitable_recruit. Подходят + * под призыв + */ + public final TableField SUITABLE_RECRUIT = createField(DSL.name("suitable_recruit"), SQLDataType.NUMERIC, this, "Подходят под призыв"); + + /** + * The column + * recruitment_campaign.recruitment.postponement_have_right. + * Имеют право на отсрочку + */ + public final TableField POSTPONEMENT_HAVE_RIGHT = createField(DSL.name("postponement_have_right"), SQLDataType.NUMERIC, this, "Имеют право на отсрочку"); + + /** + * The column + * recruitment_campaign.recruitment.postponement_granted. + * Предоставлена отсрочка + */ + public final TableField POSTPONEMENT_GRANTED = createField(DSL.name("postponement_granted"), SQLDataType.NUMERIC, this, "Предоставлена отсрочка"); + + /** + * The column recruitment_campaign.recruitment.spring_autumn. + * Осень/Весна + */ + public final TableField SPRING_AUTUMN = createField(DSL.name("spring_autumn"), SQLDataType.CLOB, this, "Осень/Весна"); + + /** + * The column recruitment_campaign.recruitment.recording_date. + * Дата записи + */ + public final TableField RECORDING_DATE = createField(DSL.name("recording_date"), SQLDataType.DATE.defaultValue(DSL.field(DSL.raw("now()"), SQLDataType.DATE)), this, "Дата записи"); + + /** + * The column + * recruitment_campaign.recruitment.postponement_have_right_percent. + * Процент имеющих право на отсрочку + */ + public final TableField POSTPONEMENT_HAVE_RIGHT_PERCENT = createField(DSL.name("postponement_have_right_percent"), SQLDataType.NUMERIC, this, "Процент имеющих право на отсрочку"); + + /** + * The column + * recruitment_campaign.recruitment.postponement_granted_percent. + * Процент предоставленных отсрочек + */ + public final TableField POSTPONEMENT_GRANTED_PERCENT = createField(DSL.name("postponement_granted_percent"), SQLDataType.NUMERIC, this, "Процент предоставленных отсрочек"); + + /** + * The column recruitment_campaign.recruitment.recruitment_id. + */ + public final TableField RECRUITMENT_ID = createField(DSL.name("recruitment_id"), SQLDataType.UUID, this, ""); + + private Recruitment(Name alias, Table aliased) { + this(alias, aliased, (Field[]) null, null); + } + + private Recruitment(Name alias, Table aliased, Field[] parameters, Condition where) { + super(alias, null, aliased, parameters, DSL.comment(""), TableOptions.table(), where); + } + + /** + * Create an aliased recruitment_campaign.recruitment table + * reference + */ + public Recruitment(String alias) { + this(DSL.name(alias), RECRUITMENT); + } + + /** + * Create an aliased recruitment_campaign.recruitment table + * reference + */ + public Recruitment(Name alias) { + this(alias, RECRUITMENT); + } + + /** + * Create a recruitment_campaign.recruitment table reference + */ + public Recruitment() { + this(DSL.name("recruitment"), null); + } + + public Recruitment(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath, RECRUITMENT); + } + + /** + * A subtype implementing {@link Path} for simplified path-based joins. + */ + public static class RecruitmentPath extends Recruitment implements Path { + public RecruitmentPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath); + } + private RecruitmentPath(Name alias, Table aliased) { + super(alias, aliased); + } + + @Override + public RecruitmentPath as(String alias) { + return new RecruitmentPath(DSL.name(alias), this); + } + + @Override + public RecruitmentPath as(Name alias) { + return new RecruitmentPath(alias, this); + } + + @Override + public RecruitmentPath as(Table alias) { + return new RecruitmentPath(alias.getQualifiedName(), this); + } + } + + @Override + public Schema getSchema() { + return aliased() ? null : RecruitmentCampaign.RECRUITMENT_CAMPAIGN; + } + + @Override + public Identity getIdentity() { + return (Identity) super.getIdentity(); + } + + @Override + public UniqueKey getPrimaryKey() { + return Keys.PK_RECRUITMENT; + } + + @Override + public List> getReferences() { + return Arrays.asList(Keys.RECRUITMENT__RC_RECRUITMENT_FK1); + } + + private transient PubRecruitmentPath _pubRecruitment; + + /** + * Get the implicit join path to the public.pub_recruitment + * table. + */ + public PubRecruitmentPath pubRecruitment() { + if (_pubRecruitment == null) + _pubRecruitment = new PubRecruitmentPath(this, Keys.RECRUITMENT__RC_RECRUITMENT_FK1, null); + + return _pubRecruitment; + } + + @Override + public Recruitment as(String alias) { + return new Recruitment(DSL.name(alias), this); + } + + @Override + public Recruitment as(Name alias) { + return new Recruitment(alias, this); + } + + @Override + public Recruitment as(Table alias) { + return new Recruitment(alias.getQualifiedName(), this); + } + + /** + * Rename this table + */ + @Override + public Recruitment rename(String name) { + return new Recruitment(DSL.name(name), null); + } + + /** + * Rename this table + */ + @Override + public Recruitment rename(Name name) { + return new Recruitment(name, null); + } + + /** + * Rename this table + */ + @Override + public Recruitment rename(Table name) { + return new Recruitment(name.getQualifiedName(), null); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Recruitment where(Condition condition) { + return new Recruitment(getQualifiedName(), aliased() ? this : null, null, condition); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Recruitment where(Collection conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Recruitment where(Condition... conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Recruitment where(Field condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Recruitment where(SQL condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Recruitment where(@Stringly.SQL String condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Recruitment where(@Stringly.SQL String condition, Object... binds) { + return where(DSL.condition(condition, binds)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Recruitment where(@Stringly.SQL String condition, QueryPart... parts) { + return where(DSL.condition(condition, parts)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Recruitment whereExists(Select select) { + return where(DSL.exists(select)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Recruitment whereNotExists(Select select) { + return where(DSL.notExists(select)); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/recruitment_campaign/tables/Subpoenas.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/recruitment_campaign/tables/Subpoenas.java new file mode 100644 index 0000000..2554ba0 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/recruitment_campaign/tables/Subpoenas.java @@ -0,0 +1,403 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.recruitment_campaign.tables; + + +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.PubRecruitment.PubRecruitmentPath; +import ervu_dashboard.ervu_dashboard.db_beans.recruitment_campaign.Keys; +import ervu_dashboard.ervu_dashboard.db_beans.recruitment_campaign.RecruitmentCampaign; +import ervu_dashboard.ervu_dashboard.db_beans.recruitment_campaign.tables.records.SubpoenasRecord; + +import java.math.BigDecimal; +import java.sql.Date; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; +import java.util.UUID; + +import org.jooq.Condition; +import org.jooq.Field; +import org.jooq.ForeignKey; +import org.jooq.Identity; +import org.jooq.InverseForeignKey; +import org.jooq.Name; +import org.jooq.Path; +import org.jooq.PlainSQL; +import org.jooq.QueryPart; +import org.jooq.Record; +import org.jooq.SQL; +import org.jooq.Schema; +import org.jooq.Select; +import org.jooq.Stringly; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.TableOptions; +import org.jooq.UniqueKey; +import org.jooq.impl.DSL; +import org.jooq.impl.SQLDataType; +import org.jooq.impl.TableImpl; + + +/** + * Повестки уровень РФ + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Subpoenas extends TableImpl { + + private static final long serialVersionUID = 1L; + + /** + * The reference instance of recruitment_campaign.subpoenas + */ + public static final Subpoenas SUBPOENAS = new Subpoenas(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return SubpoenasRecord.class; + } + + /** + * The column recruitment_campaign.subpoenas.id_subpoena. + */ + public final TableField ID_SUBPOENA = createField(DSL.name("id_subpoena"), SQLDataType.BIGINT.nullable(false).identity(true), this, ""); + + /** + * The column recruitment_campaign.subpoenas.subpoena. + * Направлено повесток + */ + public final TableField SUBPOENA = createField(DSL.name("subpoena"), SQLDataType.NUMERIC, this, "Направлено повесток"); + + /** + * The column recruitment_campaign.subpoenas.appeared. Явились + */ + public final TableField APPEARED = createField(DSL.name("appeared"), SQLDataType.NUMERIC, this, "Явились"); + + /** + * The column recruitment_campaign.subpoenas.not_appeared. Не + * явились + */ + public final TableField NOT_APPEARED = createField(DSL.name("not_appeared"), SQLDataType.NUMERIC, this, "Не явились"); + + /** + * The column + * recruitment_campaign.subpoenas.not_ap_good_reason. Не + * явились по уважительной причине + */ + public final TableField NOT_AP_GOOD_REASON = createField(DSL.name("not_ap_good_reason"), SQLDataType.NUMERIC, this, "Не явились по уважительной причине"); + + /** + * The column recruitment_campaign.subpoenas.ap_not_required. + * Явка не требуется + */ + public final TableField AP_NOT_REQUIRED = createField(DSL.name("ap_not_required"), SQLDataType.NUMERIC, this, "Явка не требуется"); + + /** + * The column + * recruitment_campaign.subpoenas.restrictions_applied. + * Наложено ограничений + */ + public final TableField RESTRICTIONS_APPLIED = createField(DSL.name("restrictions_applied"), SQLDataType.NUMERIC, this, "Наложено ограничений"); + + /** + * The column recruitment_campaign.subpoenas.spring_autumn. + * Весна/Осень + */ + public final TableField SPRING_AUTUMN = createField(DSL.name("spring_autumn"), SQLDataType.CLOB, this, "Весна/Осень"); + + /** + * The column recruitment_campaign.subpoenas.recording_date. + * Дата записи + */ + public final TableField RECORDING_DATE = createField(DSL.name("recording_date"), SQLDataType.DATE.defaultValue(DSL.field(DSL.raw("now()"), SQLDataType.DATE)), this, "Дата записи"); + + /** + * The column recruitment_campaign.subpoenas.appeared_percent. + * Процент явившихся + */ + public final TableField APPEARED_PERCENT = createField(DSL.name("appeared_percent"), SQLDataType.NUMERIC, this, "Процент явившихся"); + + /** + * The column + * recruitment_campaign.subpoenas.not_appeared_percent. Процент + * не явившихся + */ + public final TableField NOT_APPEARED_PERCENT = createField(DSL.name("not_appeared_percent"), SQLDataType.NUMERIC, this, "Процент не явившихся"); + + /** + * The column + * recruitment_campaign.subpoenas.not_ap_good_reason_percent. + * Процент не явившихся по уважительной причине + */ + public final TableField NOT_AP_GOOD_REASON_PERCENT = createField(DSL.name("not_ap_good_reason_percent"), SQLDataType.NUMERIC, this, "Процент не явившихся по уважительной причине"); + + /** + * The column + * recruitment_campaign.subpoenas.ap_not_required_percent. + * Процент тех, где явка не требуется + */ + public final TableField AP_NOT_REQUIRED_PERCENT = createField(DSL.name("ap_not_required_percent"), SQLDataType.NUMERIC, this, "Процент тех, где явка не требуется"); + + /** + * The column + * recruitment_campaign.subpoenas.restrictions_applied_percent. + * Наложено ограничений + */ + public final TableField RESTRICTIONS_APPLIED_PERCENT = createField(DSL.name("restrictions_applied_percent"), SQLDataType.NUMERIC, this, "Наложено ограничений"); + + /** + * The column + * recruitment_campaign.subpoenas.introduced_measures. Введено + * реализатором мер + */ + public final TableField INTRODUCED_MEASURES = createField(DSL.name("introduced_measures"), SQLDataType.NUMERIC, this, "Введено реализатором мер"); + + /** + * The column + * recruitment_campaign.subpoenas.introduced_measures_percent. + * Процент введенных реализатором мер + */ + public final TableField INTRODUCED_MEASURES_PERCENT = createField(DSL.name("introduced_measures_percent"), SQLDataType.NUMERIC, this, "Процент введенных реализатором мер"); + + /** + * The column recruitment_campaign.subpoenas.recruitment_id. + */ + public final TableField RECRUITMENT_ID = createField(DSL.name("recruitment_id"), SQLDataType.UUID, this, ""); + + /** + * The column recruitment_campaign.subpoenas.rest. Остальные + */ + public final TableField REST = createField(DSL.name("rest"), SQLDataType.NUMERIC, this, "Остальные"); + + /** + * The column + * recruitment_campaign.subpoenas.testrecruitment_id. + */ + public final TableField TESTRECRUITMENT_ID = createField(DSL.name("testrecruitment_id"), SQLDataType.CHAR(36), this, ""); + + /** + * The column recruitment_campaign.subpoenas.testspring_autumn. + */ + public final TableField TESTSPRING_AUTUMN = createField(DSL.name("testspring_autumn"), SQLDataType.CHAR(36), this, ""); + + private Subpoenas(Name alias, Table aliased) { + this(alias, aliased, (Field[]) null, null); + } + + private Subpoenas(Name alias, Table aliased, Field[] parameters, Condition where) { + super(alias, null, aliased, parameters, DSL.comment("Повестки уровень РФ"), TableOptions.table(), where); + } + + /** + * Create an aliased recruitment_campaign.subpoenas table + * reference + */ + public Subpoenas(String alias) { + this(DSL.name(alias), SUBPOENAS); + } + + /** + * Create an aliased recruitment_campaign.subpoenas table + * reference + */ + public Subpoenas(Name alias) { + this(alias, SUBPOENAS); + } + + /** + * Create a recruitment_campaign.subpoenas table reference + */ + public Subpoenas() { + this(DSL.name("subpoenas"), null); + } + + public Subpoenas(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath, SUBPOENAS); + } + + /** + * A subtype implementing {@link Path} for simplified path-based joins. + */ + public static class SubpoenasPath extends Subpoenas implements Path { + public SubpoenasPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath); + } + private SubpoenasPath(Name alias, Table aliased) { + super(alias, aliased); + } + + @Override + public SubpoenasPath as(String alias) { + return new SubpoenasPath(DSL.name(alias), this); + } + + @Override + public SubpoenasPath as(Name alias) { + return new SubpoenasPath(alias, this); + } + + @Override + public SubpoenasPath as(Table alias) { + return new SubpoenasPath(alias.getQualifiedName(), this); + } + } + + @Override + public Schema getSchema() { + return aliased() ? null : RecruitmentCampaign.RECRUITMENT_CAMPAIGN; + } + + @Override + public Identity getIdentity() { + return (Identity) super.getIdentity(); + } + + @Override + public UniqueKey getPrimaryKey() { + return Keys.PK_SUBPOENA; + } + + @Override + public List> getReferences() { + return Arrays.asList(Keys.SUBPOENAS__SUBPOENAS_FK1); + } + + private transient PubRecruitmentPath _pubRecruitment; + + /** + * Get the implicit join path to the public.pub_recruitment + * table. + */ + public PubRecruitmentPath pubRecruitment() { + if (_pubRecruitment == null) + _pubRecruitment = new PubRecruitmentPath(this, Keys.SUBPOENAS__SUBPOENAS_FK1, null); + + return _pubRecruitment; + } + + @Override + public Subpoenas as(String alias) { + return new Subpoenas(DSL.name(alias), this); + } + + @Override + public Subpoenas as(Name alias) { + return new Subpoenas(alias, this); + } + + @Override + public Subpoenas as(Table alias) { + return new Subpoenas(alias.getQualifiedName(), this); + } + + /** + * Rename this table + */ + @Override + public Subpoenas rename(String name) { + return new Subpoenas(DSL.name(name), null); + } + + /** + * Rename this table + */ + @Override + public Subpoenas rename(Name name) { + return new Subpoenas(name, null); + } + + /** + * Rename this table + */ + @Override + public Subpoenas rename(Table name) { + return new Subpoenas(name.getQualifiedName(), null); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Subpoenas where(Condition condition) { + return new Subpoenas(getQualifiedName(), aliased() ? this : null, null, condition); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Subpoenas where(Collection conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Subpoenas where(Condition... conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Subpoenas where(Field condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Subpoenas where(SQL condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Subpoenas where(@Stringly.SQL String condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Subpoenas where(@Stringly.SQL String condition, Object... binds) { + return where(DSL.condition(condition, binds)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Subpoenas where(@Stringly.SQL String condition, QueryPart... parts) { + return where(DSL.condition(condition, parts)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Subpoenas whereExists(Select select) { + return where(DSL.exists(select)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Subpoenas whereNotExists(Select select) { + return where(DSL.notExists(select)); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/recruitment_campaign/tables/records/AppealsRecord.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/recruitment_campaign/tables/records/AppealsRecord.java new file mode 100644 index 0000000..55289fa --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/recruitment_campaign/tables/records/AppealsRecord.java @@ -0,0 +1,238 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.recruitment_campaign.tables.records; + + +import ervu_dashboard.ervu_dashboard.db_beans.recruitment_campaign.tables.Appeals; + +import java.math.BigDecimal; +import java.sql.Date; +import java.util.UUID; + +import org.jooq.Record1; +import org.jooq.impl.UpdatableRecordImpl; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class AppealsRecord extends UpdatableRecordImpl { + + private static final long serialVersionUID = 1L; + + /** + * Setter for recruitment_campaign.appeals.id_appeal. + */ + public void setIdAppeal(Long value) { + set(0, value); + } + + /** + * Getter for recruitment_campaign.appeals.id_appeal. + */ + public Long getIdAppeal() { + return (Long) get(0); + } + + /** + * Setter for recruitment_campaign.appeals.total_appeal. + * Получено жалоб + */ + public void setTotalAppeal(BigDecimal value) { + set(1, value); + } + + /** + * Getter for recruitment_campaign.appeals.total_appeal. + * Получено жалоб + */ + public BigDecimal getTotalAppeal() { + return (BigDecimal) get(1); + } + + /** + * Setter for recruitment_campaign.appeals.resolved. Решено + */ + public void setResolved(BigDecimal value) { + set(2, value); + } + + /** + * Getter for recruitment_campaign.appeals.resolved. Решено + */ + public BigDecimal getResolved() { + return (BigDecimal) get(2); + } + + /** + * Setter for recruitment_campaign.appeals.not_resolved. Не + * решено + */ + public void setNotResolved(BigDecimal value) { + set(3, value); + } + + /** + * Getter for recruitment_campaign.appeals.not_resolved. Не + * решено + */ + public BigDecimal getNotResolved() { + return (BigDecimal) get(3); + } + + /** + * Setter for + * recruitment_campaign.appeals.average_consideration. Время + * решения + */ + public void setAverageConsideration(BigDecimal value) { + set(4, value); + } + + /** + * Getter for + * recruitment_campaign.appeals.average_consideration. Время + * решения + */ + public BigDecimal getAverageConsideration() { + return (BigDecimal) get(4); + } + + /** + * Setter for recruitment_campaign.appeals.average_rating. + * Оценка удовлетворенности + */ + public void setAverageRating(BigDecimal value) { + set(5, value); + } + + /** + * Getter for recruitment_campaign.appeals.average_rating. + * Оценка удовлетворенности + */ + public BigDecimal getAverageRating() { + return (BigDecimal) get(5); + } + + /** + * Setter for recruitment_campaign.appeals.spring_autumn. + * Весна/Осень + */ + public void setSpringAutumn(String value) { + set(6, value); + } + + /** + * Getter for recruitment_campaign.appeals.spring_autumn. + * Весна/Осень + */ + public String getSpringAutumn() { + return (String) get(6); + } + + /** + * Setter for recruitment_campaign.appeals.recording_date. Дата + * записи + */ + public void setRecordingDate(Date value) { + set(7, value); + } + + /** + * Getter for recruitment_campaign.appeals.recording_date. Дата + * записи + */ + public Date getRecordingDate() { + return (Date) get(7); + } + + /** + * Setter for recruitment_campaign.appeals.resolved_percent. + * Процент решенных + */ + public void setResolvedPercent(BigDecimal value) { + set(8, value); + } + + /** + * Getter for recruitment_campaign.appeals.resolved_percent. + * Процент решенных + */ + public BigDecimal getResolvedPercent() { + return (BigDecimal) get(8); + } + + /** + * Setter for + * recruitment_campaign.appeals.not_resolved_percent. Процент + * не решенных + */ + public void setNotResolvedPercent(BigDecimal value) { + set(9, value); + } + + /** + * Getter for + * recruitment_campaign.appeals.not_resolved_percent. Процент + * не решенных + */ + public BigDecimal getNotResolvedPercent() { + return (BigDecimal) get(9); + } + + /** + * Setter for recruitment_campaign.appeals.recruitment_id. + */ + public void setRecruitmentId(UUID value) { + set(10, value); + } + + /** + * Getter for recruitment_campaign.appeals.recruitment_id. + */ + public UUID getRecruitmentId() { + return (UUID) get(10); + } + + // ------------------------------------------------------------------------- + // Primary key information + // ------------------------------------------------------------------------- + + @Override + public Record1 key() { + return (Record1) super.key(); + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached AppealsRecord + */ + public AppealsRecord() { + super(Appeals.APPEALS); + } + + /** + * Create a detached, initialised AppealsRecord + */ + public AppealsRecord(Long idAppeal, BigDecimal totalAppeal, BigDecimal resolved, BigDecimal notResolved, BigDecimal averageConsideration, BigDecimal averageRating, String springAutumn, Date recordingDate, BigDecimal resolvedPercent, BigDecimal notResolvedPercent, UUID recruitmentId) { + super(Appeals.APPEALS); + + setIdAppeal(idAppeal); + setTotalAppeal(totalAppeal); + setResolved(resolved); + setNotResolved(notResolved); + setAverageConsideration(averageConsideration); + setAverageRating(averageRating); + setSpringAutumn(springAutumn); + setRecordingDate(recordingDate); + setResolvedPercent(resolvedPercent); + setNotResolvedPercent(notResolvedPercent); + setRecruitmentId(recruitmentId); + resetChangedOnNotNull(); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/recruitment_campaign/tables/records/RecruitmentRecord.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/recruitment_campaign/tables/records/RecruitmentRecord.java new file mode 100644 index 0000000..44e9b79 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/recruitment_campaign/tables/records/RecruitmentRecord.java @@ -0,0 +1,212 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.recruitment_campaign.tables.records; + + +import ervu_dashboard.ervu_dashboard.db_beans.recruitment_campaign.tables.Recruitment; + +import java.math.BigDecimal; +import java.sql.Date; +import java.util.UUID; + +import org.jooq.Record1; +import org.jooq.impl.UpdatableRecordImpl; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class RecruitmentRecord extends UpdatableRecordImpl { + + private static final long serialVersionUID = 1L; + + /** + * Setter for recruitment_campaign.recruitment.id_recruitment. + */ + public void setIdRecruitment(Long value) { + set(0, value); + } + + /** + * Getter for recruitment_campaign.recruitment.id_recruitment. + */ + public Long getIdRecruitment() { + return (Long) get(0); + } + + /** + * Setter for + * recruitment_campaign.recruitment.suitable_recruit. Подходят + * под призыв + */ + public void setSuitableRecruit(BigDecimal value) { + set(1, value); + } + + /** + * Getter for + * recruitment_campaign.recruitment.suitable_recruit. Подходят + * под призыв + */ + public BigDecimal getSuitableRecruit() { + return (BigDecimal) get(1); + } + + /** + * Setter for + * recruitment_campaign.recruitment.postponement_have_right. + * Имеют право на отсрочку + */ + public void setPostponementHaveRight(BigDecimal value) { + set(2, value); + } + + /** + * Getter for + * recruitment_campaign.recruitment.postponement_have_right. + * Имеют право на отсрочку + */ + public BigDecimal getPostponementHaveRight() { + return (BigDecimal) get(2); + } + + /** + * Setter for + * recruitment_campaign.recruitment.postponement_granted. + * Предоставлена отсрочка + */ + public void setPostponementGranted(BigDecimal value) { + set(3, value); + } + + /** + * Getter for + * recruitment_campaign.recruitment.postponement_granted. + * Предоставлена отсрочка + */ + public BigDecimal getPostponementGranted() { + return (BigDecimal) get(3); + } + + /** + * Setter for recruitment_campaign.recruitment.spring_autumn. + * Осень/Весна + */ + public void setSpringAutumn(String value) { + set(4, value); + } + + /** + * Getter for recruitment_campaign.recruitment.spring_autumn. + * Осень/Весна + */ + public String getSpringAutumn() { + return (String) get(4); + } + + /** + * Setter for recruitment_campaign.recruitment.recording_date. + * Дата записи + */ + public void setRecordingDate(Date value) { + set(5, value); + } + + /** + * Getter for recruitment_campaign.recruitment.recording_date. + * Дата записи + */ + public Date getRecordingDate() { + return (Date) get(5); + } + + /** + * Setter for + * recruitment_campaign.recruitment.postponement_have_right_percent. + * Процент имеющих право на отсрочку + */ + public void setPostponementHaveRightPercent(BigDecimal value) { + set(6, value); + } + + /** + * Getter for + * recruitment_campaign.recruitment.postponement_have_right_percent. + * Процент имеющих право на отсрочку + */ + public BigDecimal getPostponementHaveRightPercent() { + return (BigDecimal) get(6); + } + + /** + * Setter for + * recruitment_campaign.recruitment.postponement_granted_percent. + * Процент предоставленных отсрочек + */ + public void setPostponementGrantedPercent(BigDecimal value) { + set(7, value); + } + + /** + * Getter for + * recruitment_campaign.recruitment.postponement_granted_percent. + * Процент предоставленных отсрочек + */ + public BigDecimal getPostponementGrantedPercent() { + return (BigDecimal) get(7); + } + + /** + * Setter for recruitment_campaign.recruitment.recruitment_id. + */ + public void setRecruitmentId(UUID value) { + set(8, value); + } + + /** + * Getter for recruitment_campaign.recruitment.recruitment_id. + */ + public UUID getRecruitmentId() { + return (UUID) get(8); + } + + // ------------------------------------------------------------------------- + // Primary key information + // ------------------------------------------------------------------------- + + @Override + public Record1 key() { + return (Record1) super.key(); + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached RecruitmentRecord + */ + public RecruitmentRecord() { + super(Recruitment.RECRUITMENT); + } + + /** + * Create a detached, initialised RecruitmentRecord + */ + public RecruitmentRecord(Long idRecruitment, BigDecimal suitableRecruit, BigDecimal postponementHaveRight, BigDecimal postponementGranted, String springAutumn, Date recordingDate, BigDecimal postponementHaveRightPercent, BigDecimal postponementGrantedPercent, UUID recruitmentId) { + super(Recruitment.RECRUITMENT); + + setIdRecruitment(idRecruitment); + setSuitableRecruit(suitableRecruit); + setPostponementHaveRight(postponementHaveRight); + setPostponementGranted(postponementGranted); + setSpringAutumn(springAutumn); + setRecordingDate(recordingDate); + setPostponementHaveRightPercent(postponementHaveRightPercent); + setPostponementGrantedPercent(postponementGrantedPercent); + setRecruitmentId(recruitmentId); + resetChangedOnNotNull(); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/recruitment_campaign/tables/records/SubpoenasRecord.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/recruitment_campaign/tables/records/SubpoenasRecord.java new file mode 100644 index 0000000..d67af79 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/recruitment_campaign/tables/records/SubpoenasRecord.java @@ -0,0 +1,399 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.recruitment_campaign.tables.records; + + +import ervu_dashboard.ervu_dashboard.db_beans.recruitment_campaign.tables.Subpoenas; + +import java.math.BigDecimal; +import java.sql.Date; +import java.util.UUID; + +import org.jooq.Record1; +import org.jooq.impl.UpdatableRecordImpl; + + +/** + * Повестки уровень РФ + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class SubpoenasRecord extends UpdatableRecordImpl { + + private static final long serialVersionUID = 1L; + + /** + * Setter for recruitment_campaign.subpoenas.id_subpoena. + */ + public void setIdSubpoena(Long value) { + set(0, value); + } + + /** + * Getter for recruitment_campaign.subpoenas.id_subpoena. + */ + public Long getIdSubpoena() { + return (Long) get(0); + } + + /** + * Setter for recruitment_campaign.subpoenas.subpoena. + * Направлено повесток + */ + public void setSubpoena(BigDecimal value) { + set(1, value); + } + + /** + * Getter for recruitment_campaign.subpoenas.subpoena. + * Направлено повесток + */ + public BigDecimal getSubpoena() { + return (BigDecimal) get(1); + } + + /** + * Setter for recruitment_campaign.subpoenas.appeared. Явились + */ + public void setAppeared(BigDecimal value) { + set(2, value); + } + + /** + * Getter for recruitment_campaign.subpoenas.appeared. Явились + */ + public BigDecimal getAppeared() { + return (BigDecimal) get(2); + } + + /** + * Setter for recruitment_campaign.subpoenas.not_appeared. Не + * явились + */ + public void setNotAppeared(BigDecimal value) { + set(3, value); + } + + /** + * Getter for recruitment_campaign.subpoenas.not_appeared. Не + * явились + */ + public BigDecimal getNotAppeared() { + return (BigDecimal) get(3); + } + + /** + * Setter for + * recruitment_campaign.subpoenas.not_ap_good_reason. Не + * явились по уважительной причине + */ + public void setNotApGoodReason(BigDecimal value) { + set(4, value); + } + + /** + * Getter for + * recruitment_campaign.subpoenas.not_ap_good_reason. Не + * явились по уважительной причине + */ + public BigDecimal getNotApGoodReason() { + return (BigDecimal) get(4); + } + + /** + * Setter for recruitment_campaign.subpoenas.ap_not_required. + * Явка не требуется + */ + public void setApNotRequired(BigDecimal value) { + set(5, value); + } + + /** + * Getter for recruitment_campaign.subpoenas.ap_not_required. + * Явка не требуется + */ + public BigDecimal getApNotRequired() { + return (BigDecimal) get(5); + } + + /** + * Setter for + * recruitment_campaign.subpoenas.restrictions_applied. + * Наложено ограничений + */ + public void setRestrictionsApplied(BigDecimal value) { + set(6, value); + } + + /** + * Getter for + * recruitment_campaign.subpoenas.restrictions_applied. + * Наложено ограничений + */ + public BigDecimal getRestrictionsApplied() { + return (BigDecimal) get(6); + } + + /** + * Setter for recruitment_campaign.subpoenas.spring_autumn. + * Весна/Осень + */ + public void setSpringAutumn(String value) { + set(7, value); + } + + /** + * Getter for recruitment_campaign.subpoenas.spring_autumn. + * Весна/Осень + */ + public String getSpringAutumn() { + return (String) get(7); + } + + /** + * Setter for recruitment_campaign.subpoenas.recording_date. + * Дата записи + */ + public void setRecordingDate(Date value) { + set(8, value); + } + + /** + * Getter for recruitment_campaign.subpoenas.recording_date. + * Дата записи + */ + public Date getRecordingDate() { + return (Date) get(8); + } + + /** + * Setter for recruitment_campaign.subpoenas.appeared_percent. + * Процент явившихся + */ + public void setAppearedPercent(BigDecimal value) { + set(9, value); + } + + /** + * Getter for recruitment_campaign.subpoenas.appeared_percent. + * Процент явившихся + */ + public BigDecimal getAppearedPercent() { + return (BigDecimal) get(9); + } + + /** + * Setter for + * recruitment_campaign.subpoenas.not_appeared_percent. Процент + * не явившихся + */ + public void setNotAppearedPercent(BigDecimal value) { + set(10, value); + } + + /** + * Getter for + * recruitment_campaign.subpoenas.not_appeared_percent. Процент + * не явившихся + */ + public BigDecimal getNotAppearedPercent() { + return (BigDecimal) get(10); + } + + /** + * Setter for + * recruitment_campaign.subpoenas.not_ap_good_reason_percent. + * Процент не явившихся по уважительной причине + */ + public void setNotApGoodReasonPercent(BigDecimal value) { + set(11, value); + } + + /** + * Getter for + * recruitment_campaign.subpoenas.not_ap_good_reason_percent. + * Процент не явившихся по уважительной причине + */ + public BigDecimal getNotApGoodReasonPercent() { + return (BigDecimal) get(11); + } + + /** + * Setter for + * recruitment_campaign.subpoenas.ap_not_required_percent. + * Процент тех, где явка не требуется + */ + public void setApNotRequiredPercent(BigDecimal value) { + set(12, value); + } + + /** + * Getter for + * recruitment_campaign.subpoenas.ap_not_required_percent. + * Процент тех, где явка не требуется + */ + public BigDecimal getApNotRequiredPercent() { + return (BigDecimal) get(12); + } + + /** + * Setter for + * recruitment_campaign.subpoenas.restrictions_applied_percent. + * Наложено ограничений + */ + public void setRestrictionsAppliedPercent(BigDecimal value) { + set(13, value); + } + + /** + * Getter for + * recruitment_campaign.subpoenas.restrictions_applied_percent. + * Наложено ограничений + */ + public BigDecimal getRestrictionsAppliedPercent() { + return (BigDecimal) get(13); + } + + /** + * Setter for + * recruitment_campaign.subpoenas.introduced_measures. Введено + * реализатором мер + */ + public void setIntroducedMeasures(BigDecimal value) { + set(14, value); + } + + /** + * Getter for + * recruitment_campaign.subpoenas.introduced_measures. Введено + * реализатором мер + */ + public BigDecimal getIntroducedMeasures() { + return (BigDecimal) get(14); + } + + /** + * Setter for + * recruitment_campaign.subpoenas.introduced_measures_percent. + * Процент введенных реализатором мер + */ + public void setIntroducedMeasuresPercent(BigDecimal value) { + set(15, value); + } + + /** + * Getter for + * recruitment_campaign.subpoenas.introduced_measures_percent. + * Процент введенных реализатором мер + */ + public BigDecimal getIntroducedMeasuresPercent() { + return (BigDecimal) get(15); + } + + /** + * Setter for recruitment_campaign.subpoenas.recruitment_id. + */ + public void setRecruitmentId(UUID value) { + set(16, value); + } + + /** + * Getter for recruitment_campaign.subpoenas.recruitment_id. + */ + public UUID getRecruitmentId() { + return (UUID) get(16); + } + + /** + * Setter for recruitment_campaign.subpoenas.rest. Остальные + */ + public void setRest(BigDecimal value) { + set(17, value); + } + + /** + * Getter for recruitment_campaign.subpoenas.rest. Остальные + */ + public BigDecimal getRest() { + return (BigDecimal) get(17); + } + + /** + * Setter for + * recruitment_campaign.subpoenas.testrecruitment_id. + */ + public void setTestrecruitmentId(String value) { + set(18, value); + } + + /** + * Getter for + * recruitment_campaign.subpoenas.testrecruitment_id. + */ + public String getTestrecruitmentId() { + return (String) get(18); + } + + /** + * Setter for recruitment_campaign.subpoenas.testspring_autumn. + */ + public void setTestspringAutumn(String value) { + set(19, value); + } + + /** + * Getter for recruitment_campaign.subpoenas.testspring_autumn. + */ + public String getTestspringAutumn() { + return (String) get(19); + } + + // ------------------------------------------------------------------------- + // Primary key information + // ------------------------------------------------------------------------- + + @Override + public Record1 key() { + return (Record1) super.key(); + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached SubpoenasRecord + */ + public SubpoenasRecord() { + super(Subpoenas.SUBPOENAS); + } + + /** + * Create a detached, initialised SubpoenasRecord + */ + public SubpoenasRecord(Long idSubpoena, BigDecimal subpoena, BigDecimal appeared, BigDecimal notAppeared, BigDecimal notApGoodReason, BigDecimal apNotRequired, BigDecimal restrictionsApplied, String springAutumn, Date recordingDate, BigDecimal appearedPercent, BigDecimal notAppearedPercent, BigDecimal notApGoodReasonPercent, BigDecimal apNotRequiredPercent, BigDecimal restrictionsAppliedPercent, BigDecimal introducedMeasures, BigDecimal introducedMeasuresPercent, UUID recruitmentId, BigDecimal rest, String testrecruitmentId, String testspringAutumn) { + super(Subpoenas.SUBPOENAS); + + setIdSubpoena(idSubpoena); + setSubpoena(subpoena); + setAppeared(appeared); + setNotAppeared(notAppeared); + setNotApGoodReason(notApGoodReason); + setApNotRequired(apNotRequired); + setRestrictionsApplied(restrictionsApplied); + setSpringAutumn(springAutumn); + setRecordingDate(recordingDate); + setAppearedPercent(appearedPercent); + setNotAppearedPercent(notAppearedPercent); + setNotApGoodReasonPercent(notApGoodReasonPercent); + setApNotRequiredPercent(apNotRequiredPercent); + setRestrictionsAppliedPercent(restrictionsAppliedPercent); + setIntroducedMeasures(introducedMeasures); + setIntroducedMeasuresPercent(introducedMeasuresPercent); + setRecruitmentId(recruitmentId); + setRest(rest); + setTestrecruitmentId(testrecruitmentId); + setTestspringAutumn(testspringAutumn); + resetChangedOnNotNull(); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/Keys.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/Keys.java new file mode 100644 index 0000000..60448e1 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/Keys.java @@ -0,0 +1,86 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.security; + + +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.AccessLevel; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.Authority; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.EsiaUser; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.LinkUserAccountUserGroup; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.LinkUserGroupUserRole; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.LinkUserRoleAuthority; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.OrgUnit; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.UserAccount; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.UserAccountRefreshToken; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.UserGroup; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.UserRole; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.records.AccessLevelRecord; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.records.AuthorityRecord; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.records.EsiaUserRecord; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.records.LinkUserAccountUserGroupRecord; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.records.LinkUserGroupUserRoleRecord; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.records.LinkUserRoleAuthorityRecord; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.records.OrgUnitRecord; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.records.UserAccountRecord; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.records.UserAccountRefreshTokenRecord; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.records.UserGroupRecord; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.records.UserRoleRecord; + +import org.jooq.ForeignKey; +import org.jooq.TableField; +import org.jooq.UniqueKey; +import org.jooq.impl.DSL; +import org.jooq.impl.Internal; + + +/** + * A class modelling foreign key relationships and constraints of tables in + * security. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Keys { + + // ------------------------------------------------------------------------- + // UNIQUE and PRIMARY KEY definitions + // ------------------------------------------------------------------------- + + public static final UniqueKey PK_ACCESS_LEVEL = Internal.createUniqueKey(AccessLevel.ACCESS_LEVEL, DSL.name("pk_access_level"), new TableField[] { AccessLevel.ACCESS_LEVEL.ACCESS_LEVEL_ID }, true); + public static final UniqueKey UNI_ACCESS_LEVEL = Internal.createUniqueKey(AccessLevel.ACCESS_LEVEL, DSL.name("uni_access_level"), new TableField[] { AccessLevel.ACCESS_LEVEL.LEVEL }, true); + public static final UniqueKey PK_AUTHORITY = Internal.createUniqueKey(Authority.AUTHORITY, DSL.name("pk_authority"), new TableField[] { Authority.AUTHORITY.AUTHORITY_ID }, true); + public static final UniqueKey UNI_AUTHORITY_NAME = Internal.createUniqueKey(Authority.AUTHORITY, DSL.name("uni_authority_name"), new TableField[] { Authority.AUTHORITY.NAME }, true); + public static final UniqueKey PK_ESIA_USER = Internal.createUniqueKey(EsiaUser.ESIA_USER, DSL.name("pk_esia_user"), new TableField[] { EsiaUser.ESIA_USER.ESIA_USER_ID }, true); + public static final UniqueKey UNI_ESIA_USER1 = Internal.createUniqueKey(EsiaUser.ESIA_USER, DSL.name("uni_esia_user1"), new TableField[] { EsiaUser.ESIA_USER.USER_ACCOUNT_ID }, true); + public static final UniqueKey UNI_ESIA_USER2 = Internal.createUniqueKey(EsiaUser.ESIA_USER, DSL.name("uni_esia_user2"), new TableField[] { EsiaUser.ESIA_USER.PERSON_CONTACT_ID }, true); + public static final UniqueKey PK_USER_GROUP = Internal.createUniqueKey(LinkUserAccountUserGroup.LINK_USER_ACCOUNT_USER_GROUP, DSL.name("pk_user_group"), new TableField[] { LinkUserAccountUserGroup.LINK_USER_ACCOUNT_USER_GROUP.LINK_USER_ACCOUNT_USER_GROUP_ID }, true); + public static final UniqueKey UNI_USER_GROUP = Internal.createUniqueKey(LinkUserAccountUserGroup.LINK_USER_ACCOUNT_USER_GROUP, DSL.name("uni_user_group"), new TableField[] { LinkUserAccountUserGroup.LINK_USER_ACCOUNT_USER_GROUP.USER_ACCOUNT_ID, LinkUserAccountUserGroup.LINK_USER_ACCOUNT_USER_GROUP.USER_GROUP_ID }, true); + public static final UniqueKey PK_GROUP_ROLE = Internal.createUniqueKey(LinkUserGroupUserRole.LINK_USER_GROUP_USER_ROLE, DSL.name("pk_group_role"), new TableField[] { LinkUserGroupUserRole.LINK_USER_GROUP_USER_ROLE.LINK_USER_GROUP_USER_ROLE_ID }, true); + public static final UniqueKey UNI_GROUP_ROLE = Internal.createUniqueKey(LinkUserGroupUserRole.LINK_USER_GROUP_USER_ROLE, DSL.name("uni_group_role"), new TableField[] { LinkUserGroupUserRole.LINK_USER_GROUP_USER_ROLE.USER_GROUP_ID, LinkUserGroupUserRole.LINK_USER_GROUP_USER_ROLE.USER_ROLE_ID }, true); + public static final UniqueKey PK_ROLE_AUTHORITY = Internal.createUniqueKey(LinkUserRoleAuthority.LINK_USER_ROLE_AUTHORITY, DSL.name("pk_role_authority"), new TableField[] { LinkUserRoleAuthority.LINK_USER_ROLE_AUTHORITY.USER_ROLE_AUTHORITY_ID }, true); + public static final UniqueKey UNI_ROLE_AUTHORITY = Internal.createUniqueKey(LinkUserRoleAuthority.LINK_USER_ROLE_AUTHORITY, DSL.name("uni_role_authority"), new TableField[] { LinkUserRoleAuthority.LINK_USER_ROLE_AUTHORITY.USER_ROLE_ID, LinkUserRoleAuthority.LINK_USER_ROLE_AUTHORITY.AUTHORITY_ID }, true); + public static final UniqueKey ORG_UNIT_CODE_KEY = Internal.createUniqueKey(OrgUnit.ORG_UNIT, DSL.name("org_unit_code_key"), new TableField[] { OrgUnit.ORG_UNIT.CODE }, true); + public static final UniqueKey PK_ORG_UNIT = Internal.createUniqueKey(OrgUnit.ORG_UNIT, DSL.name("pk_org_unit"), new TableField[] { OrgUnit.ORG_UNIT.ID }, true); + public static final UniqueKey PK_USER = Internal.createUniqueKey(UserAccount.USER_ACCOUNT, DSL.name("pk_user"), new TableField[] { UserAccount.USER_ACCOUNT.USER_ACCOUNT_ID }, true); + public static final UniqueKey USER_ACCOUNT_USERNAME_UNIQUE = Internal.createUniqueKey(UserAccount.USER_ACCOUNT, DSL.name("user_account_username_unique"), new TableField[] { UserAccount.USER_ACCOUNT.USERNAME }, true); + public static final UniqueKey PK_USER_ACCOUNT_REFRESH_TOKEN = Internal.createUniqueKey(UserAccountRefreshToken.USER_ACCOUNT_REFRESH_TOKEN, DSL.name("pk_user_account_refresh_token"), new TableField[] { UserAccountRefreshToken.USER_ACCOUNT_REFRESH_TOKEN.USER_ACCOUNT_REFRESH_TOKEN_ID }, true); + public static final UniqueKey PK_GROUP = Internal.createUniqueKey(UserGroup.USER_GROUP, DSL.name("pk_group"), new TableField[] { UserGroup.USER_GROUP.USER_GROUP_ID }, true); + public static final UniqueKey UNI_GROUP_NAME = Internal.createUniqueKey(UserGroup.USER_GROUP, DSL.name("uni_group_name"), new TableField[] { UserGroup.USER_GROUP.NAME }, true); + public static final UniqueKey PK_ROLE = Internal.createUniqueKey(UserRole.USER_ROLE, DSL.name("pk_role"), new TableField[] { UserRole.USER_ROLE.USER_ROLE_ID }, true); + public static final UniqueKey UNI_ROLE_NAME = Internal.createUniqueKey(UserRole.USER_ROLE, DSL.name("uni_role_name"), new TableField[] { UserRole.USER_ROLE.NAME }, true); + + // ------------------------------------------------------------------------- + // FOREIGN KEY definitions + // ------------------------------------------------------------------------- + + public static final ForeignKey ESIA_USER__FK_ESIA_USER1 = Internal.createForeignKey(EsiaUser.ESIA_USER, DSL.name("fk_esia_user1"), new TableField[] { EsiaUser.ESIA_USER.USER_ACCOUNT_ID }, Keys.PK_USER, new TableField[] { UserAccount.USER_ACCOUNT.USER_ACCOUNT_ID }, true); + public static final ForeignKey LINK_USER_ACCOUNT_USER_GROUP__FK_USER_GROUP_GROUP = Internal.createForeignKey(LinkUserAccountUserGroup.LINK_USER_ACCOUNT_USER_GROUP, DSL.name("fk_user_group_group"), new TableField[] { LinkUserAccountUserGroup.LINK_USER_ACCOUNT_USER_GROUP.USER_GROUP_ID }, Keys.PK_GROUP, new TableField[] { UserGroup.USER_GROUP.USER_GROUP_ID }, true); + public static final ForeignKey LINK_USER_ACCOUNT_USER_GROUP__FK_USER_GROUP_USER = Internal.createForeignKey(LinkUserAccountUserGroup.LINK_USER_ACCOUNT_USER_GROUP, DSL.name("fk_user_group_user"), new TableField[] { LinkUserAccountUserGroup.LINK_USER_ACCOUNT_USER_GROUP.USER_ACCOUNT_ID }, Keys.PK_USER, new TableField[] { UserAccount.USER_ACCOUNT.USER_ACCOUNT_ID }, true); + public static final ForeignKey LINK_USER_GROUP_USER_ROLE__FK_GROUP_ROLE_GROUP = Internal.createForeignKey(LinkUserGroupUserRole.LINK_USER_GROUP_USER_ROLE, DSL.name("fk_group_role_group"), new TableField[] { LinkUserGroupUserRole.LINK_USER_GROUP_USER_ROLE.USER_GROUP_ID }, Keys.PK_GROUP, new TableField[] { UserGroup.USER_GROUP.USER_GROUP_ID }, true); + public static final ForeignKey LINK_USER_GROUP_USER_ROLE__FK_GROUP_ROLE_ROLE = Internal.createForeignKey(LinkUserGroupUserRole.LINK_USER_GROUP_USER_ROLE, DSL.name("fk_group_role_role"), new TableField[] { LinkUserGroupUserRole.LINK_USER_GROUP_USER_ROLE.USER_ROLE_ID }, Keys.PK_ROLE, new TableField[] { UserRole.USER_ROLE.USER_ROLE_ID }, true); + public static final ForeignKey LINK_USER_ROLE_AUTHORITY__FK_ROLE_AUTHORITY_AUTHORITY = Internal.createForeignKey(LinkUserRoleAuthority.LINK_USER_ROLE_AUTHORITY, DSL.name("fk_role_authority_authority"), new TableField[] { LinkUserRoleAuthority.LINK_USER_ROLE_AUTHORITY.AUTHORITY_ID }, Keys.PK_AUTHORITY, new TableField[] { Authority.AUTHORITY.AUTHORITY_ID }, true); + public static final ForeignKey LINK_USER_ROLE_AUTHORITY__FK_ROLE_AUTHORITY_ROLE = Internal.createForeignKey(LinkUserRoleAuthority.LINK_USER_ROLE_AUTHORITY, DSL.name("fk_role_authority_role"), new TableField[] { LinkUserRoleAuthority.LINK_USER_ROLE_AUTHORITY.USER_ROLE_ID }, Keys.PK_ROLE, new TableField[] { UserRole.USER_ROLE.USER_ROLE_ID }, true); + public static final ForeignKey ORG_UNIT__FK_ORG_UNIT_PARENT_ID = Internal.createForeignKey(OrgUnit.ORG_UNIT, DSL.name("fk_org_unit_parent_id"), new TableField[] { OrgUnit.ORG_UNIT.PARENT_ID }, Keys.PK_ORG_UNIT, new TableField[] { OrgUnit.ORG_UNIT.ID }, true); + public static final ForeignKey USER_ACCOUNT__FK_USER_ORG_UNIT_ID = Internal.createForeignKey(UserAccount.USER_ACCOUNT, DSL.name("fk_user_org_unit_id"), new TableField[] { UserAccount.USER_ACCOUNT.ORG_UNIT_ID }, Keys.PK_ORG_UNIT, new TableField[] { OrgUnit.ORG_UNIT.ID }, true); + public static final ForeignKey USER_ACCOUNT_REFRESH_TOKEN__FK_USER_ACCOUNT_REFRESH_TOKEN = Internal.createForeignKey(UserAccountRefreshToken.USER_ACCOUNT_REFRESH_TOKEN, DSL.name("fk_user_account_refresh_token"), new TableField[] { UserAccountRefreshToken.USER_ACCOUNT_REFRESH_TOKEN.USER_ACCOUNT_ID }, Keys.PK_USER, new TableField[] { UserAccount.USER_ACCOUNT.USER_ACCOUNT_ID }, true); + public static final ForeignKey USER_GROUP__FK_USER_GROUP_ACCESS_LEVEL = Internal.createForeignKey(UserGroup.USER_GROUP, DSL.name("fk_user_group_access_level"), new TableField[] { UserGroup.USER_GROUP.ACCESS_LEVEL_ID }, Keys.PK_ACCESS_LEVEL, new TableField[] { AccessLevel.ACCESS_LEVEL.ACCESS_LEVEL_ID }, true); +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/Security.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/Security.java new file mode 100644 index 0000000..c1cee4e --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/Security.java @@ -0,0 +1,125 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.security; + + +import ervu_dashboard.ervu_dashboard.db_beans.DefaultCatalog; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.AccessLevel; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.Authority; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.EsiaUser; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.LinkUserAccountUserGroup; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.LinkUserGroupUserRole; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.LinkUserRoleAuthority; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.OrgUnit; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.UserAccount; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.UserAccountRefreshToken; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.UserGroup; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.UserRole; + +import java.util.Arrays; +import java.util.List; + +import org.jooq.Catalog; +import org.jooq.Table; +import org.jooq.impl.SchemaImpl; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Security extends SchemaImpl { + + private static final long serialVersionUID = 1L; + + /** + * The reference instance of security + */ + public static final Security SECURITY = new Security(); + + /** + * The table security.access_level. + */ + public final AccessLevel ACCESS_LEVEL = AccessLevel.ACCESS_LEVEL; + + /** + * The table security.authority. + */ + public final Authority AUTHORITY = Authority.AUTHORITY; + + /** + * The table security.esia_user. + */ + public final EsiaUser ESIA_USER = EsiaUser.ESIA_USER; + + /** + * The table security.link_user_account_user_group. + */ + public final LinkUserAccountUserGroup LINK_USER_ACCOUNT_USER_GROUP = LinkUserAccountUserGroup.LINK_USER_ACCOUNT_USER_GROUP; + + /** + * The table security.link_user_group_user_role. + */ + public final LinkUserGroupUserRole LINK_USER_GROUP_USER_ROLE = LinkUserGroupUserRole.LINK_USER_GROUP_USER_ROLE; + + /** + * The table security.link_user_role_authority. + */ + public final LinkUserRoleAuthority LINK_USER_ROLE_AUTHORITY = LinkUserRoleAuthority.LINK_USER_ROLE_AUTHORITY; + + /** + * The table security.org_unit. + */ + public final OrgUnit ORG_UNIT = OrgUnit.ORG_UNIT; + + /** + * The table security.user_account. + */ + public final UserAccount USER_ACCOUNT = UserAccount.USER_ACCOUNT; + + /** + * The table security.user_account_refresh_token. + */ + public final UserAccountRefreshToken USER_ACCOUNT_REFRESH_TOKEN = UserAccountRefreshToken.USER_ACCOUNT_REFRESH_TOKEN; + + /** + * The table security.user_group. + */ + public final UserGroup USER_GROUP = UserGroup.USER_GROUP; + + /** + * The table security.user_role. + */ + public final UserRole USER_ROLE = UserRole.USER_ROLE; + + /** + * No further instances allowed + */ + private Security() { + super("security", null); + } + + + @Override + public Catalog getCatalog() { + return DefaultCatalog.DEFAULT_CATALOG; + } + + @Override + public final List> getTables() { + return Arrays.asList( + AccessLevel.ACCESS_LEVEL, + Authority.AUTHORITY, + EsiaUser.ESIA_USER, + LinkUserAccountUserGroup.LINK_USER_ACCOUNT_USER_GROUP, + LinkUserGroupUserRole.LINK_USER_GROUP_USER_ROLE, + LinkUserRoleAuthority.LINK_USER_ROLE_AUTHORITY, + OrgUnit.ORG_UNIT, + UserAccount.USER_ACCOUNT, + UserAccountRefreshToken.USER_ACCOUNT_REFRESH_TOKEN, + UserGroup.USER_GROUP, + UserRole.USER_ROLE + ); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/Tables.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/Tables.java new file mode 100644 index 0000000..8974802 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/Tables.java @@ -0,0 +1,80 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.security; + + +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.AccessLevel; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.Authority; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.EsiaUser; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.LinkUserAccountUserGroup; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.LinkUserGroupUserRole; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.LinkUserRoleAuthority; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.OrgUnit; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.UserAccount; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.UserAccountRefreshToken; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.UserGroup; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.UserRole; + + +/** + * Convenience access to all tables in security. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Tables { + + /** + * The table security.access_level. + */ + public static final AccessLevel ACCESS_LEVEL = AccessLevel.ACCESS_LEVEL; + + /** + * The table security.authority. + */ + public static final Authority AUTHORITY = Authority.AUTHORITY; + + /** + * The table security.esia_user. + */ + public static final EsiaUser ESIA_USER = EsiaUser.ESIA_USER; + + /** + * The table security.link_user_account_user_group. + */ + public static final LinkUserAccountUserGroup LINK_USER_ACCOUNT_USER_GROUP = LinkUserAccountUserGroup.LINK_USER_ACCOUNT_USER_GROUP; + + /** + * The table security.link_user_group_user_role. + */ + public static final LinkUserGroupUserRole LINK_USER_GROUP_USER_ROLE = LinkUserGroupUserRole.LINK_USER_GROUP_USER_ROLE; + + /** + * The table security.link_user_role_authority. + */ + public static final LinkUserRoleAuthority LINK_USER_ROLE_AUTHORITY = LinkUserRoleAuthority.LINK_USER_ROLE_AUTHORITY; + + /** + * The table security.org_unit. + */ + public static final OrgUnit ORG_UNIT = OrgUnit.ORG_UNIT; + + /** + * The table security.user_account. + */ + public static final UserAccount USER_ACCOUNT = UserAccount.USER_ACCOUNT; + + /** + * The table security.user_account_refresh_token. + */ + public static final UserAccountRefreshToken USER_ACCOUNT_REFRESH_TOKEN = UserAccountRefreshToken.USER_ACCOUNT_REFRESH_TOKEN; + + /** + * The table security.user_group. + */ + public static final UserGroup USER_GROUP = UserGroup.USER_GROUP; + + /** + * The table security.user_role. + */ + public static final UserRole USER_ROLE = UserRole.USER_ROLE; +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/AccessLevel.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/AccessLevel.java new file mode 100644 index 0000000..76c825e --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/AccessLevel.java @@ -0,0 +1,284 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.security.tables; + + +import ervu_dashboard.ervu_dashboard.db_beans.security.Keys; +import ervu_dashboard.ervu_dashboard.db_beans.security.Security; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.UserGroup.UserGroupPath; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.records.AccessLevelRecord; + +import java.util.Arrays; +import java.util.Collection; +import java.util.List; + +import org.jooq.Condition; +import org.jooq.Field; +import org.jooq.ForeignKey; +import org.jooq.InverseForeignKey; +import org.jooq.Name; +import org.jooq.Path; +import org.jooq.PlainSQL; +import org.jooq.QueryPart; +import org.jooq.Record; +import org.jooq.SQL; +import org.jooq.Schema; +import org.jooq.Select; +import org.jooq.Stringly; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.TableOptions; +import org.jooq.UniqueKey; +import org.jooq.impl.DSL; +import org.jooq.impl.SQLDataType; +import org.jooq.impl.TableImpl; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class AccessLevel extends TableImpl { + + private static final long serialVersionUID = 1L; + + /** + * The reference instance of security.access_level + */ + public static final AccessLevel ACCESS_LEVEL = new AccessLevel(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return AccessLevelRecord.class; + } + + /** + * The column security.access_level.access_level_id. + */ + public final TableField ACCESS_LEVEL_ID = createField(DSL.name("access_level_id"), SQLDataType.CHAR(36).nullable(false), this, ""); + + /** + * The column security.access_level.level. + */ + public final TableField LEVEL = createField(DSL.name("level"), SQLDataType.SMALLINT.nullable(false), this, ""); + + /** + * The column security.access_level.description. + */ + public final TableField DESCRIPTION = createField(DSL.name("description"), SQLDataType.VARCHAR(256).nullable(false), this, ""); + + private AccessLevel(Name alias, Table aliased) { + this(alias, aliased, (Field[]) null, null); + } + + private AccessLevel(Name alias, Table aliased, Field[] parameters, Condition where) { + super(alias, null, aliased, parameters, DSL.comment(""), TableOptions.table(), where); + } + + /** + * Create an aliased security.access_level table reference + */ + public AccessLevel(String alias) { + this(DSL.name(alias), ACCESS_LEVEL); + } + + /** + * Create an aliased security.access_level table reference + */ + public AccessLevel(Name alias) { + this(alias, ACCESS_LEVEL); + } + + /** + * Create a security.access_level table reference + */ + public AccessLevel() { + this(DSL.name("access_level"), null); + } + + public AccessLevel(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath, ACCESS_LEVEL); + } + + /** + * A subtype implementing {@link Path} for simplified path-based joins. + */ + public static class AccessLevelPath extends AccessLevel implements Path { + public AccessLevelPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath); + } + private AccessLevelPath(Name alias, Table aliased) { + super(alias, aliased); + } + + @Override + public AccessLevelPath as(String alias) { + return new AccessLevelPath(DSL.name(alias), this); + } + + @Override + public AccessLevelPath as(Name alias) { + return new AccessLevelPath(alias, this); + } + + @Override + public AccessLevelPath as(Table alias) { + return new AccessLevelPath(alias.getQualifiedName(), this); + } + } + + @Override + public Schema getSchema() { + return aliased() ? null : Security.SECURITY; + } + + @Override + public UniqueKey getPrimaryKey() { + return Keys.PK_ACCESS_LEVEL; + } + + @Override + public List> getUniqueKeys() { + return Arrays.asList(Keys.UNI_ACCESS_LEVEL); + } + + private transient UserGroupPath _userGroup; + + /** + * Get the implicit to-many join path to the + * security.user_group table + */ + public UserGroupPath userGroup() { + if (_userGroup == null) + _userGroup = new UserGroupPath(this, null, Keys.USER_GROUP__FK_USER_GROUP_ACCESS_LEVEL.getInverseKey()); + + return _userGroup; + } + + @Override + public AccessLevel as(String alias) { + return new AccessLevel(DSL.name(alias), this); + } + + @Override + public AccessLevel as(Name alias) { + return new AccessLevel(alias, this); + } + + @Override + public AccessLevel as(Table alias) { + return new AccessLevel(alias.getQualifiedName(), this); + } + + /** + * Rename this table + */ + @Override + public AccessLevel rename(String name) { + return new AccessLevel(DSL.name(name), null); + } + + /** + * Rename this table + */ + @Override + public AccessLevel rename(Name name) { + return new AccessLevel(name, null); + } + + /** + * Rename this table + */ + @Override + public AccessLevel rename(Table name) { + return new AccessLevel(name.getQualifiedName(), null); + } + + /** + * Create an inline derived table from this table + */ + @Override + public AccessLevel where(Condition condition) { + return new AccessLevel(getQualifiedName(), aliased() ? this : null, null, condition); + } + + /** + * Create an inline derived table from this table + */ + @Override + public AccessLevel where(Collection conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public AccessLevel where(Condition... conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public AccessLevel where(Field condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public AccessLevel where(SQL condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public AccessLevel where(@Stringly.SQL String condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public AccessLevel where(@Stringly.SQL String condition, Object... binds) { + return where(DSL.condition(condition, binds)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public AccessLevel where(@Stringly.SQL String condition, QueryPart... parts) { + return where(DSL.condition(condition, parts)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public AccessLevel whereExists(Select select) { + return where(DSL.exists(select)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public AccessLevel whereNotExists(Select select) { + return where(DSL.notExists(select)); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/Authority.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/Authority.java new file mode 100644 index 0000000..7157e97 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/Authority.java @@ -0,0 +1,294 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.security.tables; + + +import ervu_dashboard.ervu_dashboard.db_beans.security.Keys; +import ervu_dashboard.ervu_dashboard.db_beans.security.Security; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.LinkUserRoleAuthority.LinkUserRoleAuthorityPath; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.UserRole.UserRolePath; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.records.AuthorityRecord; + +import java.sql.Timestamp; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; + +import org.jooq.Condition; +import org.jooq.Field; +import org.jooq.ForeignKey; +import org.jooq.InverseForeignKey; +import org.jooq.Name; +import org.jooq.Path; +import org.jooq.PlainSQL; +import org.jooq.QueryPart; +import org.jooq.Record; +import org.jooq.SQL; +import org.jooq.Schema; +import org.jooq.Select; +import org.jooq.Stringly; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.TableOptions; +import org.jooq.UniqueKey; +import org.jooq.impl.DSL; +import org.jooq.impl.SQLDataType; +import org.jooq.impl.TableImpl; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Authority extends TableImpl { + + private static final long serialVersionUID = 1L; + + /** + * The reference instance of security.authority + */ + public static final Authority AUTHORITY = new Authority(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return AuthorityRecord.class; + } + + /** + * The column security.authority.authority_id. + */ + public final TableField AUTHORITY_ID = createField(DSL.name("authority_id"), SQLDataType.CHAR(36).nullable(false), this, ""); + + /** + * The column security.authority.name. + */ + public final TableField NAME = createField(DSL.name("name"), SQLDataType.VARCHAR(255).nullable(false), this, ""); + + /** + * The column security.authority.created. + */ + public final TableField CREATED = createField(DSL.name("created"), SQLDataType.TIMESTAMP(0).nullable(false).defaultValue(DSL.field(DSL.raw("now()"), SQLDataType.TIMESTAMP)), this, ""); + + private Authority(Name alias, Table aliased) { + this(alias, aliased, (Field[]) null, null); + } + + private Authority(Name alias, Table aliased, Field[] parameters, Condition where) { + super(alias, null, aliased, parameters, DSL.comment(""), TableOptions.table(), where); + } + + /** + * Create an aliased security.authority table reference + */ + public Authority(String alias) { + this(DSL.name(alias), AUTHORITY); + } + + /** + * Create an aliased security.authority table reference + */ + public Authority(Name alias) { + this(alias, AUTHORITY); + } + + /** + * Create a security.authority table reference + */ + public Authority() { + this(DSL.name("authority"), null); + } + + public Authority(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath, AUTHORITY); + } + + /** + * A subtype implementing {@link Path} for simplified path-based joins. + */ + public static class AuthorityPath extends Authority implements Path { + public AuthorityPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath); + } + private AuthorityPath(Name alias, Table aliased) { + super(alias, aliased); + } + + @Override + public AuthorityPath as(String alias) { + return new AuthorityPath(DSL.name(alias), this); + } + + @Override + public AuthorityPath as(Name alias) { + return new AuthorityPath(alias, this); + } + + @Override + public AuthorityPath as(Table alias) { + return new AuthorityPath(alias.getQualifiedName(), this); + } + } + + @Override + public Schema getSchema() { + return aliased() ? null : Security.SECURITY; + } + + @Override + public UniqueKey getPrimaryKey() { + return Keys.PK_AUTHORITY; + } + + @Override + public List> getUniqueKeys() { + return Arrays.asList(Keys.UNI_AUTHORITY_NAME); + } + + private transient LinkUserRoleAuthorityPath _linkUserRoleAuthority; + + /** + * Get the implicit to-many join path to the + * security.link_user_role_authority table + */ + public LinkUserRoleAuthorityPath linkUserRoleAuthority() { + if (_linkUserRoleAuthority == null) + _linkUserRoleAuthority = new LinkUserRoleAuthorityPath(this, null, Keys.LINK_USER_ROLE_AUTHORITY__FK_ROLE_AUTHORITY_AUTHORITY.getInverseKey()); + + return _linkUserRoleAuthority; + } + + /** + * Get the implicit many-to-many join path to the + * security.user_role table + */ + public UserRolePath userRole() { + return linkUserRoleAuthority().userRole(); + } + + @Override + public Authority as(String alias) { + return new Authority(DSL.name(alias), this); + } + + @Override + public Authority as(Name alias) { + return new Authority(alias, this); + } + + @Override + public Authority as(Table alias) { + return new Authority(alias.getQualifiedName(), this); + } + + /** + * Rename this table + */ + @Override + public Authority rename(String name) { + return new Authority(DSL.name(name), null); + } + + /** + * Rename this table + */ + @Override + public Authority rename(Name name) { + return new Authority(name, null); + } + + /** + * Rename this table + */ + @Override + public Authority rename(Table name) { + return new Authority(name.getQualifiedName(), null); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Authority where(Condition condition) { + return new Authority(getQualifiedName(), aliased() ? this : null, null, condition); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Authority where(Collection conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Authority where(Condition... conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Authority where(Field condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Authority where(SQL condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Authority where(@Stringly.SQL String condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Authority where(@Stringly.SQL String condition, Object... binds) { + return where(DSL.condition(condition, binds)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Authority where(@Stringly.SQL String condition, QueryPart... parts) { + return where(DSL.condition(condition, parts)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Authority whereExists(Select select) { + return where(DSL.exists(select)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Authority whereNotExists(Select select) { + return where(DSL.notExists(select)); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/EsiaUser.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/EsiaUser.java new file mode 100644 index 0000000..bca1c5a --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/EsiaUser.java @@ -0,0 +1,289 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.security.tables; + + +import ervu_dashboard.ervu_dashboard.db_beans.security.Keys; +import ervu_dashboard.ervu_dashboard.db_beans.security.Security; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.UserAccount.UserAccountPath; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.records.EsiaUserRecord; + +import java.util.Arrays; +import java.util.Collection; +import java.util.List; + +import org.jooq.Condition; +import org.jooq.Field; +import org.jooq.ForeignKey; +import org.jooq.InverseForeignKey; +import org.jooq.Name; +import org.jooq.Path; +import org.jooq.PlainSQL; +import org.jooq.QueryPart; +import org.jooq.Record; +import org.jooq.SQL; +import org.jooq.Schema; +import org.jooq.Select; +import org.jooq.Stringly; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.TableOptions; +import org.jooq.UniqueKey; +import org.jooq.impl.DSL; +import org.jooq.impl.SQLDataType; +import org.jooq.impl.TableImpl; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class EsiaUser extends TableImpl { + + private static final long serialVersionUID = 1L; + + /** + * The reference instance of security.esia_user + */ + public static final EsiaUser ESIA_USER = new EsiaUser(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return EsiaUserRecord.class; + } + + /** + * The column security.esia_user.esia_user_id. + */ + public final TableField ESIA_USER_ID = createField(DSL.name("esia_user_id"), SQLDataType.VARCHAR(36).nullable(false), this, ""); + + /** + * The column security.esia_user.user_account_id. + */ + public final TableField USER_ACCOUNT_ID = createField(DSL.name("user_account_id"), SQLDataType.VARCHAR(36).nullable(false), this, ""); + + /** + * The column security.esia_user.person_contact_id. + */ + public final TableField PERSON_CONTACT_ID = createField(DSL.name("person_contact_id"), SQLDataType.BIGINT.nullable(false), this, ""); + + private EsiaUser(Name alias, Table aliased) { + this(alias, aliased, (Field[]) null, null); + } + + private EsiaUser(Name alias, Table aliased, Field[] parameters, Condition where) { + super(alias, null, aliased, parameters, DSL.comment(""), TableOptions.table(), where); + } + + /** + * Create an aliased security.esia_user table reference + */ + public EsiaUser(String alias) { + this(DSL.name(alias), ESIA_USER); + } + + /** + * Create an aliased security.esia_user table reference + */ + public EsiaUser(Name alias) { + this(alias, ESIA_USER); + } + + /** + * Create a security.esia_user table reference + */ + public EsiaUser() { + this(DSL.name("esia_user"), null); + } + + public EsiaUser(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath, ESIA_USER); + } + + /** + * A subtype implementing {@link Path} for simplified path-based joins. + */ + public static class EsiaUserPath extends EsiaUser implements Path { + public EsiaUserPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath); + } + private EsiaUserPath(Name alias, Table aliased) { + super(alias, aliased); + } + + @Override + public EsiaUserPath as(String alias) { + return new EsiaUserPath(DSL.name(alias), this); + } + + @Override + public EsiaUserPath as(Name alias) { + return new EsiaUserPath(alias, this); + } + + @Override + public EsiaUserPath as(Table alias) { + return new EsiaUserPath(alias.getQualifiedName(), this); + } + } + + @Override + public Schema getSchema() { + return aliased() ? null : Security.SECURITY; + } + + @Override + public UniqueKey getPrimaryKey() { + return Keys.PK_ESIA_USER; + } + + @Override + public List> getUniqueKeys() { + return Arrays.asList(Keys.UNI_ESIA_USER1, Keys.UNI_ESIA_USER2); + } + + @Override + public List> getReferences() { + return Arrays.asList(Keys.ESIA_USER__FK_ESIA_USER1); + } + + private transient UserAccountPath _userAccount; + + /** + * Get the implicit join path to the security.user_account + * table. + */ + public UserAccountPath userAccount() { + if (_userAccount == null) + _userAccount = new UserAccountPath(this, Keys.ESIA_USER__FK_ESIA_USER1, null); + + return _userAccount; + } + + @Override + public EsiaUser as(String alias) { + return new EsiaUser(DSL.name(alias), this); + } + + @Override + public EsiaUser as(Name alias) { + return new EsiaUser(alias, this); + } + + @Override + public EsiaUser as(Table alias) { + return new EsiaUser(alias.getQualifiedName(), this); + } + + /** + * Rename this table + */ + @Override + public EsiaUser rename(String name) { + return new EsiaUser(DSL.name(name), null); + } + + /** + * Rename this table + */ + @Override + public EsiaUser rename(Name name) { + return new EsiaUser(name, null); + } + + /** + * Rename this table + */ + @Override + public EsiaUser rename(Table name) { + return new EsiaUser(name.getQualifiedName(), null); + } + + /** + * Create an inline derived table from this table + */ + @Override + public EsiaUser where(Condition condition) { + return new EsiaUser(getQualifiedName(), aliased() ? this : null, null, condition); + } + + /** + * Create an inline derived table from this table + */ + @Override + public EsiaUser where(Collection conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public EsiaUser where(Condition... conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public EsiaUser where(Field condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public EsiaUser where(SQL condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public EsiaUser where(@Stringly.SQL String condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public EsiaUser where(@Stringly.SQL String condition, Object... binds) { + return where(DSL.condition(condition, binds)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public EsiaUser where(@Stringly.SQL String condition, QueryPart... parts) { + return where(DSL.condition(condition, parts)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public EsiaUser whereExists(Select select) { + return where(DSL.exists(select)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public EsiaUser whereNotExists(Select select) { + return where(DSL.notExists(select)); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/LinkUserAccountUserGroup.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/LinkUserAccountUserGroup.java new file mode 100644 index 0000000..9c2cccb --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/LinkUserAccountUserGroup.java @@ -0,0 +1,315 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.security.tables; + + +import ervu_dashboard.ervu_dashboard.db_beans.security.Keys; +import ervu_dashboard.ervu_dashboard.db_beans.security.Security; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.UserAccount.UserAccountPath; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.UserGroup.UserGroupPath; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.records.LinkUserAccountUserGroupRecord; + +import java.sql.Timestamp; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; + +import org.jooq.Condition; +import org.jooq.Field; +import org.jooq.ForeignKey; +import org.jooq.InverseForeignKey; +import org.jooq.Name; +import org.jooq.Path; +import org.jooq.PlainSQL; +import org.jooq.QueryPart; +import org.jooq.Record; +import org.jooq.SQL; +import org.jooq.Schema; +import org.jooq.Select; +import org.jooq.Stringly; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.TableOptions; +import org.jooq.UniqueKey; +import org.jooq.impl.DSL; +import org.jooq.impl.SQLDataType; +import org.jooq.impl.TableImpl; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class LinkUserAccountUserGroup extends TableImpl { + + private static final long serialVersionUID = 1L; + + /** + * The reference instance of + * security.link_user_account_user_group + */ + public static final LinkUserAccountUserGroup LINK_USER_ACCOUNT_USER_GROUP = new LinkUserAccountUserGroup(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return LinkUserAccountUserGroupRecord.class; + } + + /** + * The column + * security.link_user_account_user_group.link_user_account_user_group_id. + */ + public final TableField LINK_USER_ACCOUNT_USER_GROUP_ID = createField(DSL.name("link_user_account_user_group_id"), SQLDataType.CHAR(36).nullable(false), this, ""); + + /** + * The column + * security.link_user_account_user_group.user_account_id. + */ + public final TableField USER_ACCOUNT_ID = createField(DSL.name("user_account_id"), SQLDataType.VARCHAR(150).nullable(false), this, ""); + + /** + * The column + * security.link_user_account_user_group.user_group_id. + */ + public final TableField USER_GROUP_ID = createField(DSL.name("user_group_id"), SQLDataType.CHAR(36).nullable(false), this, ""); + + /** + * The column security.link_user_account_user_group.created. + */ + public final TableField CREATED = createField(DSL.name("created"), SQLDataType.TIMESTAMP(0).defaultValue(DSL.field(DSL.raw("now()"), SQLDataType.TIMESTAMP)), this, ""); + + private LinkUserAccountUserGroup(Name alias, Table aliased) { + this(alias, aliased, (Field[]) null, null); + } + + private LinkUserAccountUserGroup(Name alias, Table aliased, Field[] parameters, Condition where) { + super(alias, null, aliased, parameters, DSL.comment(""), TableOptions.table(), where); + } + + /** + * Create an aliased security.link_user_account_user_group + * table reference + */ + public LinkUserAccountUserGroup(String alias) { + this(DSL.name(alias), LINK_USER_ACCOUNT_USER_GROUP); + } + + /** + * Create an aliased security.link_user_account_user_group + * table reference + */ + public LinkUserAccountUserGroup(Name alias) { + this(alias, LINK_USER_ACCOUNT_USER_GROUP); + } + + /** + * Create a security.link_user_account_user_group table + * reference + */ + public LinkUserAccountUserGroup() { + this(DSL.name("link_user_account_user_group"), null); + } + + public LinkUserAccountUserGroup(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath, LINK_USER_ACCOUNT_USER_GROUP); + } + + /** + * A subtype implementing {@link Path} for simplified path-based joins. + */ + public static class LinkUserAccountUserGroupPath extends LinkUserAccountUserGroup implements Path { + public LinkUserAccountUserGroupPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath); + } + private LinkUserAccountUserGroupPath(Name alias, Table aliased) { + super(alias, aliased); + } + + @Override + public LinkUserAccountUserGroupPath as(String alias) { + return new LinkUserAccountUserGroupPath(DSL.name(alias), this); + } + + @Override + public LinkUserAccountUserGroupPath as(Name alias) { + return new LinkUserAccountUserGroupPath(alias, this); + } + + @Override + public LinkUserAccountUserGroupPath as(Table alias) { + return new LinkUserAccountUserGroupPath(alias.getQualifiedName(), this); + } + } + + @Override + public Schema getSchema() { + return aliased() ? null : Security.SECURITY; + } + + @Override + public UniqueKey getPrimaryKey() { + return Keys.PK_USER_GROUP; + } + + @Override + public List> getUniqueKeys() { + return Arrays.asList(Keys.UNI_USER_GROUP); + } + + @Override + public List> getReferences() { + return Arrays.asList(Keys.LINK_USER_ACCOUNT_USER_GROUP__FK_USER_GROUP_USER, Keys.LINK_USER_ACCOUNT_USER_GROUP__FK_USER_GROUP_GROUP); + } + + private transient UserAccountPath _userAccount; + + /** + * Get the implicit join path to the security.user_account + * table. + */ + public UserAccountPath userAccount() { + if (_userAccount == null) + _userAccount = new UserAccountPath(this, Keys.LINK_USER_ACCOUNT_USER_GROUP__FK_USER_GROUP_USER, null); + + return _userAccount; + } + + private transient UserGroupPath _userGroup; + + /** + * Get the implicit join path to the security.user_group table. + */ + public UserGroupPath userGroup() { + if (_userGroup == null) + _userGroup = new UserGroupPath(this, Keys.LINK_USER_ACCOUNT_USER_GROUP__FK_USER_GROUP_GROUP, null); + + return _userGroup; + } + + @Override + public LinkUserAccountUserGroup as(String alias) { + return new LinkUserAccountUserGroup(DSL.name(alias), this); + } + + @Override + public LinkUserAccountUserGroup as(Name alias) { + return new LinkUserAccountUserGroup(alias, this); + } + + @Override + public LinkUserAccountUserGroup as(Table alias) { + return new LinkUserAccountUserGroup(alias.getQualifiedName(), this); + } + + /** + * Rename this table + */ + @Override + public LinkUserAccountUserGroup rename(String name) { + return new LinkUserAccountUserGroup(DSL.name(name), null); + } + + /** + * Rename this table + */ + @Override + public LinkUserAccountUserGroup rename(Name name) { + return new LinkUserAccountUserGroup(name, null); + } + + /** + * Rename this table + */ + @Override + public LinkUserAccountUserGroup rename(Table name) { + return new LinkUserAccountUserGroup(name.getQualifiedName(), null); + } + + /** + * Create an inline derived table from this table + */ + @Override + public LinkUserAccountUserGroup where(Condition condition) { + return new LinkUserAccountUserGroup(getQualifiedName(), aliased() ? this : null, null, condition); + } + + /** + * Create an inline derived table from this table + */ + @Override + public LinkUserAccountUserGroup where(Collection conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public LinkUserAccountUserGroup where(Condition... conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public LinkUserAccountUserGroup where(Field condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public LinkUserAccountUserGroup where(SQL condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public LinkUserAccountUserGroup where(@Stringly.SQL String condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public LinkUserAccountUserGroup where(@Stringly.SQL String condition, Object... binds) { + return where(DSL.condition(condition, binds)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public LinkUserAccountUserGroup where(@Stringly.SQL String condition, QueryPart... parts) { + return where(DSL.condition(condition, parts)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public LinkUserAccountUserGroup whereExists(Select select) { + return where(DSL.exists(select)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public LinkUserAccountUserGroup whereNotExists(Select select) { + return where(DSL.notExists(select)); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/LinkUserGroupUserRole.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/LinkUserGroupUserRole.java new file mode 100644 index 0000000..fb75edb --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/LinkUserGroupUserRole.java @@ -0,0 +1,310 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.security.tables; + + +import ervu_dashboard.ervu_dashboard.db_beans.security.Keys; +import ervu_dashboard.ervu_dashboard.db_beans.security.Security; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.UserGroup.UserGroupPath; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.UserRole.UserRolePath; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.records.LinkUserGroupUserRoleRecord; + +import java.sql.Timestamp; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; + +import org.jooq.Condition; +import org.jooq.Field; +import org.jooq.ForeignKey; +import org.jooq.InverseForeignKey; +import org.jooq.Name; +import org.jooq.Path; +import org.jooq.PlainSQL; +import org.jooq.QueryPart; +import org.jooq.Record; +import org.jooq.SQL; +import org.jooq.Schema; +import org.jooq.Select; +import org.jooq.Stringly; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.TableOptions; +import org.jooq.UniqueKey; +import org.jooq.impl.DSL; +import org.jooq.impl.SQLDataType; +import org.jooq.impl.TableImpl; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class LinkUserGroupUserRole extends TableImpl { + + private static final long serialVersionUID = 1L; + + /** + * The reference instance of security.link_user_group_user_role + */ + public static final LinkUserGroupUserRole LINK_USER_GROUP_USER_ROLE = new LinkUserGroupUserRole(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return LinkUserGroupUserRoleRecord.class; + } + + /** + * The column + * security.link_user_group_user_role.link_user_group_user_role_id. + */ + public final TableField LINK_USER_GROUP_USER_ROLE_ID = createField(DSL.name("link_user_group_user_role_id"), SQLDataType.CHAR(36).nullable(false), this, ""); + + /** + * The column security.link_user_group_user_role.user_group_id. + */ + public final TableField USER_GROUP_ID = createField(DSL.name("user_group_id"), SQLDataType.CHAR(36).nullable(false), this, ""); + + /** + * The column security.link_user_group_user_role.user_role_id. + */ + public final TableField USER_ROLE_ID = createField(DSL.name("user_role_id"), SQLDataType.CHAR(36).nullable(false), this, ""); + + /** + * The column security.link_user_group_user_role.created. + */ + public final TableField CREATED = createField(DSL.name("created"), SQLDataType.TIMESTAMP(0).defaultValue(DSL.field(DSL.raw("now()"), SQLDataType.TIMESTAMP)), this, ""); + + private LinkUserGroupUserRole(Name alias, Table aliased) { + this(alias, aliased, (Field[]) null, null); + } + + private LinkUserGroupUserRole(Name alias, Table aliased, Field[] parameters, Condition where) { + super(alias, null, aliased, parameters, DSL.comment(""), TableOptions.table(), where); + } + + /** + * Create an aliased security.link_user_group_user_role table + * reference + */ + public LinkUserGroupUserRole(String alias) { + this(DSL.name(alias), LINK_USER_GROUP_USER_ROLE); + } + + /** + * Create an aliased security.link_user_group_user_role table + * reference + */ + public LinkUserGroupUserRole(Name alias) { + this(alias, LINK_USER_GROUP_USER_ROLE); + } + + /** + * Create a security.link_user_group_user_role table reference + */ + public LinkUserGroupUserRole() { + this(DSL.name("link_user_group_user_role"), null); + } + + public LinkUserGroupUserRole(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath, LINK_USER_GROUP_USER_ROLE); + } + + /** + * A subtype implementing {@link Path} for simplified path-based joins. + */ + public static class LinkUserGroupUserRolePath extends LinkUserGroupUserRole implements Path { + public LinkUserGroupUserRolePath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath); + } + private LinkUserGroupUserRolePath(Name alias, Table aliased) { + super(alias, aliased); + } + + @Override + public LinkUserGroupUserRolePath as(String alias) { + return new LinkUserGroupUserRolePath(DSL.name(alias), this); + } + + @Override + public LinkUserGroupUserRolePath as(Name alias) { + return new LinkUserGroupUserRolePath(alias, this); + } + + @Override + public LinkUserGroupUserRolePath as(Table alias) { + return new LinkUserGroupUserRolePath(alias.getQualifiedName(), this); + } + } + + @Override + public Schema getSchema() { + return aliased() ? null : Security.SECURITY; + } + + @Override + public UniqueKey getPrimaryKey() { + return Keys.PK_GROUP_ROLE; + } + + @Override + public List> getUniqueKeys() { + return Arrays.asList(Keys.UNI_GROUP_ROLE); + } + + @Override + public List> getReferences() { + return Arrays.asList(Keys.LINK_USER_GROUP_USER_ROLE__FK_GROUP_ROLE_GROUP, Keys.LINK_USER_GROUP_USER_ROLE__FK_GROUP_ROLE_ROLE); + } + + private transient UserGroupPath _userGroup; + + /** + * Get the implicit join path to the security.user_group table. + */ + public UserGroupPath userGroup() { + if (_userGroup == null) + _userGroup = new UserGroupPath(this, Keys.LINK_USER_GROUP_USER_ROLE__FK_GROUP_ROLE_GROUP, null); + + return _userGroup; + } + + private transient UserRolePath _userRole; + + /** + * Get the implicit join path to the security.user_role table. + */ + public UserRolePath userRole() { + if (_userRole == null) + _userRole = new UserRolePath(this, Keys.LINK_USER_GROUP_USER_ROLE__FK_GROUP_ROLE_ROLE, null); + + return _userRole; + } + + @Override + public LinkUserGroupUserRole as(String alias) { + return new LinkUserGroupUserRole(DSL.name(alias), this); + } + + @Override + public LinkUserGroupUserRole as(Name alias) { + return new LinkUserGroupUserRole(alias, this); + } + + @Override + public LinkUserGroupUserRole as(Table alias) { + return new LinkUserGroupUserRole(alias.getQualifiedName(), this); + } + + /** + * Rename this table + */ + @Override + public LinkUserGroupUserRole rename(String name) { + return new LinkUserGroupUserRole(DSL.name(name), null); + } + + /** + * Rename this table + */ + @Override + public LinkUserGroupUserRole rename(Name name) { + return new LinkUserGroupUserRole(name, null); + } + + /** + * Rename this table + */ + @Override + public LinkUserGroupUserRole rename(Table name) { + return new LinkUserGroupUserRole(name.getQualifiedName(), null); + } + + /** + * Create an inline derived table from this table + */ + @Override + public LinkUserGroupUserRole where(Condition condition) { + return new LinkUserGroupUserRole(getQualifiedName(), aliased() ? this : null, null, condition); + } + + /** + * Create an inline derived table from this table + */ + @Override + public LinkUserGroupUserRole where(Collection conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public LinkUserGroupUserRole where(Condition... conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public LinkUserGroupUserRole where(Field condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public LinkUserGroupUserRole where(SQL condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public LinkUserGroupUserRole where(@Stringly.SQL String condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public LinkUserGroupUserRole where(@Stringly.SQL String condition, Object... binds) { + return where(DSL.condition(condition, binds)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public LinkUserGroupUserRole where(@Stringly.SQL String condition, QueryPart... parts) { + return where(DSL.condition(condition, parts)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public LinkUserGroupUserRole whereExists(Select select) { + return where(DSL.exists(select)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public LinkUserGroupUserRole whereNotExists(Select select) { + return where(DSL.notExists(select)); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/LinkUserRoleAuthority.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/LinkUserRoleAuthority.java new file mode 100644 index 0000000..f046c87 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/LinkUserRoleAuthority.java @@ -0,0 +1,310 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.security.tables; + + +import ervu_dashboard.ervu_dashboard.db_beans.security.Keys; +import ervu_dashboard.ervu_dashboard.db_beans.security.Security; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.Authority.AuthorityPath; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.UserRole.UserRolePath; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.records.LinkUserRoleAuthorityRecord; + +import java.sql.Timestamp; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; + +import org.jooq.Condition; +import org.jooq.Field; +import org.jooq.ForeignKey; +import org.jooq.InverseForeignKey; +import org.jooq.Name; +import org.jooq.Path; +import org.jooq.PlainSQL; +import org.jooq.QueryPart; +import org.jooq.Record; +import org.jooq.SQL; +import org.jooq.Schema; +import org.jooq.Select; +import org.jooq.Stringly; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.TableOptions; +import org.jooq.UniqueKey; +import org.jooq.impl.DSL; +import org.jooq.impl.SQLDataType; +import org.jooq.impl.TableImpl; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class LinkUserRoleAuthority extends TableImpl { + + private static final long serialVersionUID = 1L; + + /** + * The reference instance of security.link_user_role_authority + */ + public static final LinkUserRoleAuthority LINK_USER_ROLE_AUTHORITY = new LinkUserRoleAuthority(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return LinkUserRoleAuthorityRecord.class; + } + + /** + * The column + * security.link_user_role_authority.user_role_authority_id. + */ + public final TableField USER_ROLE_AUTHORITY_ID = createField(DSL.name("user_role_authority_id"), SQLDataType.CHAR(36).nullable(false), this, ""); + + /** + * The column security.link_user_role_authority.user_role_id. + */ + public final TableField USER_ROLE_ID = createField(DSL.name("user_role_id"), SQLDataType.CHAR(36).nullable(false), this, ""); + + /** + * The column security.link_user_role_authority.authority_id. + */ + public final TableField AUTHORITY_ID = createField(DSL.name("authority_id"), SQLDataType.CHAR(36).nullable(false), this, ""); + + /** + * The column security.link_user_role_authority.created. + */ + public final TableField CREATED = createField(DSL.name("created"), SQLDataType.TIMESTAMP(0).defaultValue(DSL.field(DSL.raw("now()"), SQLDataType.TIMESTAMP)), this, ""); + + private LinkUserRoleAuthority(Name alias, Table aliased) { + this(alias, aliased, (Field[]) null, null); + } + + private LinkUserRoleAuthority(Name alias, Table aliased, Field[] parameters, Condition where) { + super(alias, null, aliased, parameters, DSL.comment(""), TableOptions.table(), where); + } + + /** + * Create an aliased security.link_user_role_authority table + * reference + */ + public LinkUserRoleAuthority(String alias) { + this(DSL.name(alias), LINK_USER_ROLE_AUTHORITY); + } + + /** + * Create an aliased security.link_user_role_authority table + * reference + */ + public LinkUserRoleAuthority(Name alias) { + this(alias, LINK_USER_ROLE_AUTHORITY); + } + + /** + * Create a security.link_user_role_authority table reference + */ + public LinkUserRoleAuthority() { + this(DSL.name("link_user_role_authority"), null); + } + + public LinkUserRoleAuthority(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath, LINK_USER_ROLE_AUTHORITY); + } + + /** + * A subtype implementing {@link Path} for simplified path-based joins. + */ + public static class LinkUserRoleAuthorityPath extends LinkUserRoleAuthority implements Path { + public LinkUserRoleAuthorityPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath); + } + private LinkUserRoleAuthorityPath(Name alias, Table aliased) { + super(alias, aliased); + } + + @Override + public LinkUserRoleAuthorityPath as(String alias) { + return new LinkUserRoleAuthorityPath(DSL.name(alias), this); + } + + @Override + public LinkUserRoleAuthorityPath as(Name alias) { + return new LinkUserRoleAuthorityPath(alias, this); + } + + @Override + public LinkUserRoleAuthorityPath as(Table alias) { + return new LinkUserRoleAuthorityPath(alias.getQualifiedName(), this); + } + } + + @Override + public Schema getSchema() { + return aliased() ? null : Security.SECURITY; + } + + @Override + public UniqueKey getPrimaryKey() { + return Keys.PK_ROLE_AUTHORITY; + } + + @Override + public List> getUniqueKeys() { + return Arrays.asList(Keys.UNI_ROLE_AUTHORITY); + } + + @Override + public List> getReferences() { + return Arrays.asList(Keys.LINK_USER_ROLE_AUTHORITY__FK_ROLE_AUTHORITY_ROLE, Keys.LINK_USER_ROLE_AUTHORITY__FK_ROLE_AUTHORITY_AUTHORITY); + } + + private transient UserRolePath _userRole; + + /** + * Get the implicit join path to the security.user_role table. + */ + public UserRolePath userRole() { + if (_userRole == null) + _userRole = new UserRolePath(this, Keys.LINK_USER_ROLE_AUTHORITY__FK_ROLE_AUTHORITY_ROLE, null); + + return _userRole; + } + + private transient AuthorityPath _authority; + + /** + * Get the implicit join path to the security.authority table. + */ + public AuthorityPath authority() { + if (_authority == null) + _authority = new AuthorityPath(this, Keys.LINK_USER_ROLE_AUTHORITY__FK_ROLE_AUTHORITY_AUTHORITY, null); + + return _authority; + } + + @Override + public LinkUserRoleAuthority as(String alias) { + return new LinkUserRoleAuthority(DSL.name(alias), this); + } + + @Override + public LinkUserRoleAuthority as(Name alias) { + return new LinkUserRoleAuthority(alias, this); + } + + @Override + public LinkUserRoleAuthority as(Table alias) { + return new LinkUserRoleAuthority(alias.getQualifiedName(), this); + } + + /** + * Rename this table + */ + @Override + public LinkUserRoleAuthority rename(String name) { + return new LinkUserRoleAuthority(DSL.name(name), null); + } + + /** + * Rename this table + */ + @Override + public LinkUserRoleAuthority rename(Name name) { + return new LinkUserRoleAuthority(name, null); + } + + /** + * Rename this table + */ + @Override + public LinkUserRoleAuthority rename(Table name) { + return new LinkUserRoleAuthority(name.getQualifiedName(), null); + } + + /** + * Create an inline derived table from this table + */ + @Override + public LinkUserRoleAuthority where(Condition condition) { + return new LinkUserRoleAuthority(getQualifiedName(), aliased() ? this : null, null, condition); + } + + /** + * Create an inline derived table from this table + */ + @Override + public LinkUserRoleAuthority where(Collection conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public LinkUserRoleAuthority where(Condition... conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public LinkUserRoleAuthority where(Field condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public LinkUserRoleAuthority where(SQL condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public LinkUserRoleAuthority where(@Stringly.SQL String condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public LinkUserRoleAuthority where(@Stringly.SQL String condition, Object... binds) { + return where(DSL.condition(condition, binds)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public LinkUserRoleAuthority where(@Stringly.SQL String condition, QueryPart... parts) { + return where(DSL.condition(condition, parts)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public LinkUserRoleAuthority whereExists(Select select) { + return where(DSL.exists(select)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public LinkUserRoleAuthority whereNotExists(Select select) { + return where(DSL.notExists(select)); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/OrgUnit.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/OrgUnit.java new file mode 100644 index 0000000..979727e --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/OrgUnit.java @@ -0,0 +1,312 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.security.tables; + + +import ervu_dashboard.ervu_dashboard.db_beans.security.Keys; +import ervu_dashboard.ervu_dashboard.db_beans.security.Security; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.OrgUnit.OrgUnitPath; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.UserAccount.UserAccountPath; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.records.OrgUnitRecord; + +import java.util.Arrays; +import java.util.Collection; +import java.util.List; + +import org.jooq.Condition; +import org.jooq.Field; +import org.jooq.ForeignKey; +import org.jooq.InverseForeignKey; +import org.jooq.Name; +import org.jooq.Path; +import org.jooq.PlainSQL; +import org.jooq.QueryPart; +import org.jooq.Record; +import org.jooq.SQL; +import org.jooq.Schema; +import org.jooq.Select; +import org.jooq.Stringly; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.TableOptions; +import org.jooq.UniqueKey; +import org.jooq.impl.DSL; +import org.jooq.impl.SQLDataType; +import org.jooq.impl.TableImpl; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class OrgUnit extends TableImpl { + + private static final long serialVersionUID = 1L; + + /** + * The reference instance of security.org_unit + */ + public static final OrgUnit ORG_UNIT = new OrgUnit(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return OrgUnitRecord.class; + } + + /** + * The column security.org_unit.id. + */ + public final TableField ID = createField(DSL.name("id"), SQLDataType.CHAR(36).nullable(false), this, ""); + + /** + * The column security.org_unit.name. + */ + public final TableField NAME = createField(DSL.name("name"), SQLDataType.VARCHAR(1000).nullable(false), this, ""); + + /** + * The column security.org_unit.code. + */ + public final TableField CODE = createField(DSL.name("code"), SQLDataType.VARCHAR(50).nullable(false), this, ""); + + /** + * The column security.org_unit.parent_id. + */ + public final TableField PARENT_ID = createField(DSL.name("parent_id"), SQLDataType.CHAR(36), this, ""); + + /** + * The column security.org_unit.removed. + */ + public final TableField REMOVED = createField(DSL.name("removed"), SQLDataType.BOOLEAN.nullable(false).defaultValue(DSL.field(DSL.raw("false"), SQLDataType.BOOLEAN)), this, ""); + + private OrgUnit(Name alias, Table aliased) { + this(alias, aliased, (Field[]) null, null); + } + + private OrgUnit(Name alias, Table aliased, Field[] parameters, Condition where) { + super(alias, null, aliased, parameters, DSL.comment(""), TableOptions.table(), where); + } + + /** + * Create an aliased security.org_unit table reference + */ + public OrgUnit(String alias) { + this(DSL.name(alias), ORG_UNIT); + } + + /** + * Create an aliased security.org_unit table reference + */ + public OrgUnit(Name alias) { + this(alias, ORG_UNIT); + } + + /** + * Create a security.org_unit table reference + */ + public OrgUnit() { + this(DSL.name("org_unit"), null); + } + + public OrgUnit(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath, ORG_UNIT); + } + + /** + * A subtype implementing {@link Path} for simplified path-based joins. + */ + public static class OrgUnitPath extends OrgUnit implements Path { + public OrgUnitPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath); + } + private OrgUnitPath(Name alias, Table aliased) { + super(alias, aliased); + } + + @Override + public OrgUnitPath as(String alias) { + return new OrgUnitPath(DSL.name(alias), this); + } + + @Override + public OrgUnitPath as(Name alias) { + return new OrgUnitPath(alias, this); + } + + @Override + public OrgUnitPath as(Table alias) { + return new OrgUnitPath(alias.getQualifiedName(), this); + } + } + + @Override + public Schema getSchema() { + return aliased() ? null : Security.SECURITY; + } + + @Override + public UniqueKey getPrimaryKey() { + return Keys.PK_ORG_UNIT; + } + + @Override + public List> getUniqueKeys() { + return Arrays.asList(Keys.ORG_UNIT_CODE_KEY); + } + + @Override + public List> getReferences() { + return Arrays.asList(Keys.ORG_UNIT__FK_ORG_UNIT_PARENT_ID); + } + + private transient OrgUnitPath _orgUnit; + + /** + * Get the implicit join path to the security.org_unit table. + */ + public OrgUnitPath orgUnit() { + if (_orgUnit == null) + _orgUnit = new OrgUnitPath(this, Keys.ORG_UNIT__FK_ORG_UNIT_PARENT_ID, null); + + return _orgUnit; + } + + private transient UserAccountPath _userAccount; + + /** + * Get the implicit to-many join path to the + * security.user_account table + */ + public UserAccountPath userAccount() { + if (_userAccount == null) + _userAccount = new UserAccountPath(this, null, Keys.USER_ACCOUNT__FK_USER_ORG_UNIT_ID.getInverseKey()); + + return _userAccount; + } + + @Override + public OrgUnit as(String alias) { + return new OrgUnit(DSL.name(alias), this); + } + + @Override + public OrgUnit as(Name alias) { + return new OrgUnit(alias, this); + } + + @Override + public OrgUnit as(Table alias) { + return new OrgUnit(alias.getQualifiedName(), this); + } + + /** + * Rename this table + */ + @Override + public OrgUnit rename(String name) { + return new OrgUnit(DSL.name(name), null); + } + + /** + * Rename this table + */ + @Override + public OrgUnit rename(Name name) { + return new OrgUnit(name, null); + } + + /** + * Rename this table + */ + @Override + public OrgUnit rename(Table name) { + return new OrgUnit(name.getQualifiedName(), null); + } + + /** + * Create an inline derived table from this table + */ + @Override + public OrgUnit where(Condition condition) { + return new OrgUnit(getQualifiedName(), aliased() ? this : null, null, condition); + } + + /** + * Create an inline derived table from this table + */ + @Override + public OrgUnit where(Collection conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public OrgUnit where(Condition... conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public OrgUnit where(Field condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public OrgUnit where(SQL condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public OrgUnit where(@Stringly.SQL String condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public OrgUnit where(@Stringly.SQL String condition, Object... binds) { + return where(DSL.condition(condition, binds)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public OrgUnit where(@Stringly.SQL String condition, QueryPart... parts) { + return where(DSL.condition(condition, parts)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public OrgUnit whereExists(Select select) { + return where(DSL.exists(select)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public OrgUnit whereNotExists(Select select) { + return where(DSL.notExists(select)); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/UserAccount.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/UserAccount.java new file mode 100644 index 0000000..cf825c2 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/UserAccount.java @@ -0,0 +1,395 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.security.tables; + + +import ervu_dashboard.ervu_dashboard.db_beans.security.Keys; +import ervu_dashboard.ervu_dashboard.db_beans.security.Security; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.EsiaUser.EsiaUserPath; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.LinkUserAccountUserGroup.LinkUserAccountUserGroupPath; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.OrgUnit.OrgUnitPath; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.UserAccountRefreshToken.UserAccountRefreshTokenPath; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.UserGroup.UserGroupPath; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.records.UserAccountRecord; + +import java.sql.Timestamp; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; + +import org.jooq.Condition; +import org.jooq.Field; +import org.jooq.ForeignKey; +import org.jooq.InverseForeignKey; +import org.jooq.Name; +import org.jooq.Path; +import org.jooq.PlainSQL; +import org.jooq.QueryPart; +import org.jooq.Record; +import org.jooq.SQL; +import org.jooq.Schema; +import org.jooq.Select; +import org.jooq.Stringly; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.TableOptions; +import org.jooq.UniqueKey; +import org.jooq.impl.DSL; +import org.jooq.impl.SQLDataType; +import org.jooq.impl.TableImpl; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class UserAccount extends TableImpl { + + private static final long serialVersionUID = 1L; + + /** + * The reference instance of security.user_account + */ + public static final UserAccount USER_ACCOUNT = new UserAccount(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return UserAccountRecord.class; + } + + /** + * The column security.user_account.user_account_id. + */ + public final TableField USER_ACCOUNT_ID = createField(DSL.name("user_account_id"), SQLDataType.CHAR(36).nullable(false), this, ""); + + /** + * The column security.user_account.email. + */ + public final TableField EMAIL = createField(DSL.name("email"), SQLDataType.VARCHAR(150).nullable(false), this, ""); + + /** + * The column security.user_account.first_name. + */ + public final TableField FIRST_NAME = createField(DSL.name("first_name"), SQLDataType.VARCHAR(100).nullable(false), this, ""); + + /** + * The column security.user_account.last_name. + */ + public final TableField LAST_NAME = createField(DSL.name("last_name"), SQLDataType.VARCHAR(100).nullable(false), this, ""); + + /** + * The column security.user_account.middle_name. + */ + public final TableField MIDDLE_NAME = createField(DSL.name("middle_name"), SQLDataType.VARCHAR(100), this, ""); + + /** + * The column security.user_account.created. + */ + public final TableField CREATED = createField(DSL.name("created"), SQLDataType.TIMESTAMP(0).nullable(false).defaultValue(DSL.field(DSL.raw("now()"), SQLDataType.TIMESTAMP)), this, ""); + + /** + * The column security.user_account.updated. + */ + public final TableField UPDATED = createField(DSL.name("updated"), SQLDataType.TIMESTAMP(0).nullable(false).defaultValue(DSL.field(DSL.raw("now()"), SQLDataType.TIMESTAMP)), this, ""); + + /** + * The column security.user_account.locked. + */ + public final TableField LOCKED = createField(DSL.name("locked"), SQLDataType.BOOLEAN.nullable(false).defaultValue(DSL.field(DSL.raw("false"), SQLDataType.BOOLEAN)), this, ""); + + /** + * The column security.user_account.org_unit_id. + */ + public final TableField ORG_UNIT_ID = createField(DSL.name("org_unit_id"), SQLDataType.CHAR(36).nullable(false), this, ""); + + /** + * The column security.user_account.username. + */ + public final TableField USERNAME = createField(DSL.name("username"), SQLDataType.VARCHAR(150).nullable(false), this, ""); + + /** + * The column security.user_account.phone. + */ + public final TableField PHONE = createField(DSL.name("phone"), SQLDataType.VARCHAR(16), this, ""); + + /** + * The column security.user_account.email_confirmed. + */ + public final TableField EMAIL_CONFIRMED = createField(DSL.name("email_confirmed"), SQLDataType.BOOLEAN.nullable(false).defaultValue(DSL.field(DSL.raw("true"), SQLDataType.BOOLEAN)), this, ""); + + /** + * The column security.user_account.user_source. + */ + public final TableField USER_SOURCE = createField(DSL.name("user_source"), SQLDataType.VARCHAR(20).nullable(false).defaultValue(DSL.field(DSL.raw("'LOCAL'::character varying"), SQLDataType.VARCHAR)), this, ""); + + /** + * The column security.user_account.source_name. + */ + public final TableField SOURCE_NAME = createField(DSL.name("source_name"), SQLDataType.VARCHAR(20), this, ""); + + private UserAccount(Name alias, Table aliased) { + this(alias, aliased, (Field[]) null, null); + } + + private UserAccount(Name alias, Table aliased, Field[] parameters, Condition where) { + super(alias, null, aliased, parameters, DSL.comment(""), TableOptions.table(), where); + } + + /** + * Create an aliased security.user_account table reference + */ + public UserAccount(String alias) { + this(DSL.name(alias), USER_ACCOUNT); + } + + /** + * Create an aliased security.user_account table reference + */ + public UserAccount(Name alias) { + this(alias, USER_ACCOUNT); + } + + /** + * Create a security.user_account table reference + */ + public UserAccount() { + this(DSL.name("user_account"), null); + } + + public UserAccount(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath, USER_ACCOUNT); + } + + /** + * A subtype implementing {@link Path} for simplified path-based joins. + */ + public static class UserAccountPath extends UserAccount implements Path { + public UserAccountPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath); + } + private UserAccountPath(Name alias, Table aliased) { + super(alias, aliased); + } + + @Override + public UserAccountPath as(String alias) { + return new UserAccountPath(DSL.name(alias), this); + } + + @Override + public UserAccountPath as(Name alias) { + return new UserAccountPath(alias, this); + } + + @Override + public UserAccountPath as(Table alias) { + return new UserAccountPath(alias.getQualifiedName(), this); + } + } + + @Override + public Schema getSchema() { + return aliased() ? null : Security.SECURITY; + } + + @Override + public UniqueKey getPrimaryKey() { + return Keys.PK_USER; + } + + @Override + public List> getUniqueKeys() { + return Arrays.asList(Keys.USER_ACCOUNT_USERNAME_UNIQUE); + } + + @Override + public List> getReferences() { + return Arrays.asList(Keys.USER_ACCOUNT__FK_USER_ORG_UNIT_ID); + } + + private transient OrgUnitPath _orgUnit; + + /** + * Get the implicit join path to the security.org_unit table. + */ + public OrgUnitPath orgUnit() { + if (_orgUnit == null) + _orgUnit = new OrgUnitPath(this, Keys.USER_ACCOUNT__FK_USER_ORG_UNIT_ID, null); + + return _orgUnit; + } + + private transient EsiaUserPath _esiaUser; + + /** + * Get the implicit to-many join path to the security.esia_user + * table + */ + public EsiaUserPath esiaUser() { + if (_esiaUser == null) + _esiaUser = new EsiaUserPath(this, null, Keys.ESIA_USER__FK_ESIA_USER1.getInverseKey()); + + return _esiaUser; + } + + private transient LinkUserAccountUserGroupPath _linkUserAccountUserGroup; + + /** + * Get the implicit to-many join path to the + * security.link_user_account_user_group table + */ + public LinkUserAccountUserGroupPath linkUserAccountUserGroup() { + if (_linkUserAccountUserGroup == null) + _linkUserAccountUserGroup = new LinkUserAccountUserGroupPath(this, null, Keys.LINK_USER_ACCOUNT_USER_GROUP__FK_USER_GROUP_USER.getInverseKey()); + + return _linkUserAccountUserGroup; + } + + private transient UserAccountRefreshTokenPath _userAccountRefreshToken; + + /** + * Get the implicit to-many join path to the + * security.user_account_refresh_token table + */ + public UserAccountRefreshTokenPath userAccountRefreshToken() { + if (_userAccountRefreshToken == null) + _userAccountRefreshToken = new UserAccountRefreshTokenPath(this, null, Keys.USER_ACCOUNT_REFRESH_TOKEN__FK_USER_ACCOUNT_REFRESH_TOKEN.getInverseKey()); + + return _userAccountRefreshToken; + } + + /** + * Get the implicit many-to-many join path to the + * security.user_group table + */ + public UserGroupPath userGroup() { + return linkUserAccountUserGroup().userGroup(); + } + + @Override + public UserAccount as(String alias) { + return new UserAccount(DSL.name(alias), this); + } + + @Override + public UserAccount as(Name alias) { + return new UserAccount(alias, this); + } + + @Override + public UserAccount as(Table alias) { + return new UserAccount(alias.getQualifiedName(), this); + } + + /** + * Rename this table + */ + @Override + public UserAccount rename(String name) { + return new UserAccount(DSL.name(name), null); + } + + /** + * Rename this table + */ + @Override + public UserAccount rename(Name name) { + return new UserAccount(name, null); + } + + /** + * Rename this table + */ + @Override + public UserAccount rename(Table name) { + return new UserAccount(name.getQualifiedName(), null); + } + + /** + * Create an inline derived table from this table + */ + @Override + public UserAccount where(Condition condition) { + return new UserAccount(getQualifiedName(), aliased() ? this : null, null, condition); + } + + /** + * Create an inline derived table from this table + */ + @Override + public UserAccount where(Collection conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public UserAccount where(Condition... conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public UserAccount where(Field condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public UserAccount where(SQL condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public UserAccount where(@Stringly.SQL String condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public UserAccount where(@Stringly.SQL String condition, Object... binds) { + return where(DSL.condition(condition, binds)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public UserAccount where(@Stringly.SQL String condition, QueryPart... parts) { + return where(DSL.condition(condition, parts)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public UserAccount whereExists(Select select) { + return where(DSL.exists(select)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public UserAccount whereNotExists(Select select) { + return where(DSL.notExists(select)); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/UserAccountRefreshToken.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/UserAccountRefreshToken.java new file mode 100644 index 0000000..ad37446 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/UserAccountRefreshToken.java @@ -0,0 +1,302 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.security.tables; + + +import ervu_dashboard.ervu_dashboard.db_beans.security.Keys; +import ervu_dashboard.ervu_dashboard.db_beans.security.Security; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.UserAccount.UserAccountPath; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.records.UserAccountRefreshTokenRecord; + +import java.sql.Timestamp; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; + +import org.jooq.Condition; +import org.jooq.Field; +import org.jooq.ForeignKey; +import org.jooq.InverseForeignKey; +import org.jooq.Name; +import org.jooq.Path; +import org.jooq.PlainSQL; +import org.jooq.QueryPart; +import org.jooq.Record; +import org.jooq.SQL; +import org.jooq.Schema; +import org.jooq.Select; +import org.jooq.Stringly; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.TableOptions; +import org.jooq.UniqueKey; +import org.jooq.impl.DSL; +import org.jooq.impl.SQLDataType; +import org.jooq.impl.TableImpl; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class UserAccountRefreshToken extends TableImpl { + + private static final long serialVersionUID = 1L; + + /** + * The reference instance of + * security.user_account_refresh_token + */ + public static final UserAccountRefreshToken USER_ACCOUNT_REFRESH_TOKEN = new UserAccountRefreshToken(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return UserAccountRefreshTokenRecord.class; + } + + /** + * The column + * security.user_account_refresh_token.user_account_refresh_token_id. + */ + public final TableField USER_ACCOUNT_REFRESH_TOKEN_ID = createField(DSL.name("user_account_refresh_token_id"), SQLDataType.CHAR(36).nullable(false), this, ""); + + /** + * The column + * security.user_account_refresh_token.user_account_id. + */ + public final TableField USER_ACCOUNT_ID = createField(DSL.name("user_account_id"), SQLDataType.CHAR(36), this, ""); + + /** + * The column + * security.user_account_refresh_token.refresh_token. + */ + public final TableField REFRESH_TOKEN = createField(DSL.name("refresh_token"), SQLDataType.CLOB, this, ""); + + /** + * The column security.user_account_refresh_token.access_token. + */ + public final TableField ACCESS_TOKEN = createField(DSL.name("access_token"), SQLDataType.CLOB, this, ""); + + /** + * The column + * security.user_account_refresh_token.expiration_time. + */ + public final TableField EXPIRATION_TIME = createField(DSL.name("expiration_time"), SQLDataType.TIMESTAMP(0), this, ""); + + private UserAccountRefreshToken(Name alias, Table aliased) { + this(alias, aliased, (Field[]) null, null); + } + + private UserAccountRefreshToken(Name alias, Table aliased, Field[] parameters, Condition where) { + super(alias, null, aliased, parameters, DSL.comment(""), TableOptions.table(), where); + } + + /** + * Create an aliased security.user_account_refresh_token table + * reference + */ + public UserAccountRefreshToken(String alias) { + this(DSL.name(alias), USER_ACCOUNT_REFRESH_TOKEN); + } + + /** + * Create an aliased security.user_account_refresh_token table + * reference + */ + public UserAccountRefreshToken(Name alias) { + this(alias, USER_ACCOUNT_REFRESH_TOKEN); + } + + /** + * Create a security.user_account_refresh_token table reference + */ + public UserAccountRefreshToken() { + this(DSL.name("user_account_refresh_token"), null); + } + + public UserAccountRefreshToken(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath, USER_ACCOUNT_REFRESH_TOKEN); + } + + /** + * A subtype implementing {@link Path} for simplified path-based joins. + */ + public static class UserAccountRefreshTokenPath extends UserAccountRefreshToken implements Path { + public UserAccountRefreshTokenPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath); + } + private UserAccountRefreshTokenPath(Name alias, Table aliased) { + super(alias, aliased); + } + + @Override + public UserAccountRefreshTokenPath as(String alias) { + return new UserAccountRefreshTokenPath(DSL.name(alias), this); + } + + @Override + public UserAccountRefreshTokenPath as(Name alias) { + return new UserAccountRefreshTokenPath(alias, this); + } + + @Override + public UserAccountRefreshTokenPath as(Table alias) { + return new UserAccountRefreshTokenPath(alias.getQualifiedName(), this); + } + } + + @Override + public Schema getSchema() { + return aliased() ? null : Security.SECURITY; + } + + @Override + public UniqueKey getPrimaryKey() { + return Keys.PK_USER_ACCOUNT_REFRESH_TOKEN; + } + + @Override + public List> getReferences() { + return Arrays.asList(Keys.USER_ACCOUNT_REFRESH_TOKEN__FK_USER_ACCOUNT_REFRESH_TOKEN); + } + + private transient UserAccountPath _userAccount; + + /** + * Get the implicit join path to the security.user_account + * table. + */ + public UserAccountPath userAccount() { + if (_userAccount == null) + _userAccount = new UserAccountPath(this, Keys.USER_ACCOUNT_REFRESH_TOKEN__FK_USER_ACCOUNT_REFRESH_TOKEN, null); + + return _userAccount; + } + + @Override + public UserAccountRefreshToken as(String alias) { + return new UserAccountRefreshToken(DSL.name(alias), this); + } + + @Override + public UserAccountRefreshToken as(Name alias) { + return new UserAccountRefreshToken(alias, this); + } + + @Override + public UserAccountRefreshToken as(Table alias) { + return new UserAccountRefreshToken(alias.getQualifiedName(), this); + } + + /** + * Rename this table + */ + @Override + public UserAccountRefreshToken rename(String name) { + return new UserAccountRefreshToken(DSL.name(name), null); + } + + /** + * Rename this table + */ + @Override + public UserAccountRefreshToken rename(Name name) { + return new UserAccountRefreshToken(name, null); + } + + /** + * Rename this table + */ + @Override + public UserAccountRefreshToken rename(Table name) { + return new UserAccountRefreshToken(name.getQualifiedName(), null); + } + + /** + * Create an inline derived table from this table + */ + @Override + public UserAccountRefreshToken where(Condition condition) { + return new UserAccountRefreshToken(getQualifiedName(), aliased() ? this : null, null, condition); + } + + /** + * Create an inline derived table from this table + */ + @Override + public UserAccountRefreshToken where(Collection conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public UserAccountRefreshToken where(Condition... conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public UserAccountRefreshToken where(Field condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public UserAccountRefreshToken where(SQL condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public UserAccountRefreshToken where(@Stringly.SQL String condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public UserAccountRefreshToken where(@Stringly.SQL String condition, Object... binds) { + return where(DSL.condition(condition, binds)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public UserAccountRefreshToken where(@Stringly.SQL String condition, QueryPart... parts) { + return where(DSL.condition(condition, parts)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public UserAccountRefreshToken whereExists(Select select) { + return where(DSL.exists(select)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public UserAccountRefreshToken whereNotExists(Select select) { + return where(DSL.notExists(select)); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/UserGroup.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/UserGroup.java new file mode 100644 index 0000000..98a4e2e --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/UserGroup.java @@ -0,0 +1,346 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.security.tables; + + +import ervu_dashboard.ervu_dashboard.db_beans.security.Keys; +import ervu_dashboard.ervu_dashboard.db_beans.security.Security; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.AccessLevel.AccessLevelPath; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.LinkUserAccountUserGroup.LinkUserAccountUserGroupPath; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.LinkUserGroupUserRole.LinkUserGroupUserRolePath; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.UserAccount.UserAccountPath; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.UserRole.UserRolePath; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.records.UserGroupRecord; + +import java.sql.Timestamp; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; + +import org.jooq.Condition; +import org.jooq.Field; +import org.jooq.ForeignKey; +import org.jooq.InverseForeignKey; +import org.jooq.Name; +import org.jooq.Path; +import org.jooq.PlainSQL; +import org.jooq.QueryPart; +import org.jooq.Record; +import org.jooq.SQL; +import org.jooq.Schema; +import org.jooq.Select; +import org.jooq.Stringly; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.TableOptions; +import org.jooq.UniqueKey; +import org.jooq.impl.DSL; +import org.jooq.impl.SQLDataType; +import org.jooq.impl.TableImpl; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class UserGroup extends TableImpl { + + private static final long serialVersionUID = 1L; + + /** + * The reference instance of security.user_group + */ + public static final UserGroup USER_GROUP = new UserGroup(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return UserGroupRecord.class; + } + + /** + * The column security.user_group.user_group_id. + */ + public final TableField USER_GROUP_ID = createField(DSL.name("user_group_id"), SQLDataType.CHAR(36).nullable(false), this, ""); + + /** + * The column security.user_group.name. + */ + public final TableField NAME = createField(DSL.name("name"), SQLDataType.VARCHAR(255).nullable(false), this, ""); + + /** + * The column security.user_group.created. + */ + public final TableField CREATED = createField(DSL.name("created"), SQLDataType.TIMESTAMP(0).nullable(false).defaultValue(DSL.field(DSL.raw("now()"), SQLDataType.TIMESTAMP)), this, ""); + + /** + * The column security.user_group.updated. + */ + public final TableField UPDATED = createField(DSL.name("updated"), SQLDataType.TIMESTAMP(0).nullable(false).defaultValue(DSL.field(DSL.raw("now()"), SQLDataType.TIMESTAMP)), this, ""); + + /** + * The column security.user_group.access_level_id. + */ + public final TableField ACCESS_LEVEL_ID = createField(DSL.name("access_level_id"), SQLDataType.CHAR(36).nullable(false), this, ""); + + private UserGroup(Name alias, Table aliased) { + this(alias, aliased, (Field[]) null, null); + } + + private UserGroup(Name alias, Table aliased, Field[] parameters, Condition where) { + super(alias, null, aliased, parameters, DSL.comment(""), TableOptions.table(), where); + } + + /** + * Create an aliased security.user_group table reference + */ + public UserGroup(String alias) { + this(DSL.name(alias), USER_GROUP); + } + + /** + * Create an aliased security.user_group table reference + */ + public UserGroup(Name alias) { + this(alias, USER_GROUP); + } + + /** + * Create a security.user_group table reference + */ + public UserGroup() { + this(DSL.name("user_group"), null); + } + + public UserGroup(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath, USER_GROUP); + } + + /** + * A subtype implementing {@link Path} for simplified path-based joins. + */ + public static class UserGroupPath extends UserGroup implements Path { + public UserGroupPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath); + } + private UserGroupPath(Name alias, Table aliased) { + super(alias, aliased); + } + + @Override + public UserGroupPath as(String alias) { + return new UserGroupPath(DSL.name(alias), this); + } + + @Override + public UserGroupPath as(Name alias) { + return new UserGroupPath(alias, this); + } + + @Override + public UserGroupPath as(Table alias) { + return new UserGroupPath(alias.getQualifiedName(), this); + } + } + + @Override + public Schema getSchema() { + return aliased() ? null : Security.SECURITY; + } + + @Override + public UniqueKey getPrimaryKey() { + return Keys.PK_GROUP; + } + + @Override + public List> getUniqueKeys() { + return Arrays.asList(Keys.UNI_GROUP_NAME); + } + + @Override + public List> getReferences() { + return Arrays.asList(Keys.USER_GROUP__FK_USER_GROUP_ACCESS_LEVEL); + } + + private transient AccessLevelPath _accessLevel; + + /** + * Get the implicit join path to the security.access_level + * table. + */ + public AccessLevelPath accessLevel() { + if (_accessLevel == null) + _accessLevel = new AccessLevelPath(this, Keys.USER_GROUP__FK_USER_GROUP_ACCESS_LEVEL, null); + + return _accessLevel; + } + + private transient LinkUserAccountUserGroupPath _linkUserAccountUserGroup; + + /** + * Get the implicit to-many join path to the + * security.link_user_account_user_group table + */ + public LinkUserAccountUserGroupPath linkUserAccountUserGroup() { + if (_linkUserAccountUserGroup == null) + _linkUserAccountUserGroup = new LinkUserAccountUserGroupPath(this, null, Keys.LINK_USER_ACCOUNT_USER_GROUP__FK_USER_GROUP_GROUP.getInverseKey()); + + return _linkUserAccountUserGroup; + } + + private transient LinkUserGroupUserRolePath _linkUserGroupUserRole; + + /** + * Get the implicit to-many join path to the + * security.link_user_group_user_role table + */ + public LinkUserGroupUserRolePath linkUserGroupUserRole() { + if (_linkUserGroupUserRole == null) + _linkUserGroupUserRole = new LinkUserGroupUserRolePath(this, null, Keys.LINK_USER_GROUP_USER_ROLE__FK_GROUP_ROLE_GROUP.getInverseKey()); + + return _linkUserGroupUserRole; + } + + /** + * Get the implicit many-to-many join path to the + * security.user_account table + */ + public UserAccountPath userAccount() { + return linkUserAccountUserGroup().userAccount(); + } + + /** + * Get the implicit many-to-many join path to the + * security.user_role table + */ + public UserRolePath userRole() { + return linkUserGroupUserRole().userRole(); + } + + @Override + public UserGroup as(String alias) { + return new UserGroup(DSL.name(alias), this); + } + + @Override + public UserGroup as(Name alias) { + return new UserGroup(alias, this); + } + + @Override + public UserGroup as(Table alias) { + return new UserGroup(alias.getQualifiedName(), this); + } + + /** + * Rename this table + */ + @Override + public UserGroup rename(String name) { + return new UserGroup(DSL.name(name), null); + } + + /** + * Rename this table + */ + @Override + public UserGroup rename(Name name) { + return new UserGroup(name, null); + } + + /** + * Rename this table + */ + @Override + public UserGroup rename(Table name) { + return new UserGroup(name.getQualifiedName(), null); + } + + /** + * Create an inline derived table from this table + */ + @Override + public UserGroup where(Condition condition) { + return new UserGroup(getQualifiedName(), aliased() ? this : null, null, condition); + } + + /** + * Create an inline derived table from this table + */ + @Override + public UserGroup where(Collection conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public UserGroup where(Condition... conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public UserGroup where(Field condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public UserGroup where(SQL condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public UserGroup where(@Stringly.SQL String condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public UserGroup where(@Stringly.SQL String condition, Object... binds) { + return where(DSL.condition(condition, binds)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public UserGroup where(@Stringly.SQL String condition, QueryPart... parts) { + return where(DSL.condition(condition, parts)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public UserGroup whereExists(Select select) { + return where(DSL.exists(select)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public UserGroup whereNotExists(Select select) { + return where(DSL.notExists(select)); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/UserRole.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/UserRole.java new file mode 100644 index 0000000..ac47dd2 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/UserRole.java @@ -0,0 +1,322 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.security.tables; + + +import ervu_dashboard.ervu_dashboard.db_beans.security.Keys; +import ervu_dashboard.ervu_dashboard.db_beans.security.Security; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.Authority.AuthorityPath; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.LinkUserGroupUserRole.LinkUserGroupUserRolePath; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.LinkUserRoleAuthority.LinkUserRoleAuthorityPath; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.UserGroup.UserGroupPath; +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.records.UserRoleRecord; + +import java.sql.Timestamp; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; + +import org.jooq.Condition; +import org.jooq.Field; +import org.jooq.ForeignKey; +import org.jooq.InverseForeignKey; +import org.jooq.Name; +import org.jooq.Path; +import org.jooq.PlainSQL; +import org.jooq.QueryPart; +import org.jooq.Record; +import org.jooq.SQL; +import org.jooq.Schema; +import org.jooq.Select; +import org.jooq.Stringly; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.TableOptions; +import org.jooq.UniqueKey; +import org.jooq.impl.DSL; +import org.jooq.impl.SQLDataType; +import org.jooq.impl.TableImpl; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class UserRole extends TableImpl { + + private static final long serialVersionUID = 1L; + + /** + * The reference instance of security.user_role + */ + public static final UserRole USER_ROLE = new UserRole(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return UserRoleRecord.class; + } + + /** + * The column security.user_role.user_role_id. + */ + public final TableField USER_ROLE_ID = createField(DSL.name("user_role_id"), SQLDataType.CHAR(36).nullable(false), this, ""); + + /** + * The column security.user_role.name. + */ + public final TableField NAME = createField(DSL.name("name"), SQLDataType.VARCHAR(255).nullable(false), this, ""); + + /** + * The column security.user_role.created. + */ + public final TableField CREATED = createField(DSL.name("created"), SQLDataType.TIMESTAMP(0).nullable(false).defaultValue(DSL.field(DSL.raw("now()"), SQLDataType.TIMESTAMP)), this, ""); + + /** + * The column security.user_role.updated. + */ + public final TableField UPDATED = createField(DSL.name("updated"), SQLDataType.TIMESTAMP(0).nullable(false).defaultValue(DSL.field(DSL.raw("now()"), SQLDataType.TIMESTAMP)), this, ""); + + private UserRole(Name alias, Table aliased) { + this(alias, aliased, (Field[]) null, null); + } + + private UserRole(Name alias, Table aliased, Field[] parameters, Condition where) { + super(alias, null, aliased, parameters, DSL.comment(""), TableOptions.table(), where); + } + + /** + * Create an aliased security.user_role table reference + */ + public UserRole(String alias) { + this(DSL.name(alias), USER_ROLE); + } + + /** + * Create an aliased security.user_role table reference + */ + public UserRole(Name alias) { + this(alias, USER_ROLE); + } + + /** + * Create a security.user_role table reference + */ + public UserRole() { + this(DSL.name("user_role"), null); + } + + public UserRole(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath, USER_ROLE); + } + + /** + * A subtype implementing {@link Path} for simplified path-based joins. + */ + public static class UserRolePath extends UserRole implements Path { + public UserRolePath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath); + } + private UserRolePath(Name alias, Table aliased) { + super(alias, aliased); + } + + @Override + public UserRolePath as(String alias) { + return new UserRolePath(DSL.name(alias), this); + } + + @Override + public UserRolePath as(Name alias) { + return new UserRolePath(alias, this); + } + + @Override + public UserRolePath as(Table alias) { + return new UserRolePath(alias.getQualifiedName(), this); + } + } + + @Override + public Schema getSchema() { + return aliased() ? null : Security.SECURITY; + } + + @Override + public UniqueKey getPrimaryKey() { + return Keys.PK_ROLE; + } + + @Override + public List> getUniqueKeys() { + return Arrays.asList(Keys.UNI_ROLE_NAME); + } + + private transient LinkUserGroupUserRolePath _linkUserGroupUserRole; + + /** + * Get the implicit to-many join path to the + * security.link_user_group_user_role table + */ + public LinkUserGroupUserRolePath linkUserGroupUserRole() { + if (_linkUserGroupUserRole == null) + _linkUserGroupUserRole = new LinkUserGroupUserRolePath(this, null, Keys.LINK_USER_GROUP_USER_ROLE__FK_GROUP_ROLE_ROLE.getInverseKey()); + + return _linkUserGroupUserRole; + } + + private transient LinkUserRoleAuthorityPath _linkUserRoleAuthority; + + /** + * Get the implicit to-many join path to the + * security.link_user_role_authority table + */ + public LinkUserRoleAuthorityPath linkUserRoleAuthority() { + if (_linkUserRoleAuthority == null) + _linkUserRoleAuthority = new LinkUserRoleAuthorityPath(this, null, Keys.LINK_USER_ROLE_AUTHORITY__FK_ROLE_AUTHORITY_ROLE.getInverseKey()); + + return _linkUserRoleAuthority; + } + + /** + * Get the implicit many-to-many join path to the + * security.user_group table + */ + public UserGroupPath userGroup() { + return linkUserGroupUserRole().userGroup(); + } + + /** + * Get the implicit many-to-many join path to the + * security.authority table + */ + public AuthorityPath authority() { + return linkUserRoleAuthority().authority(); + } + + @Override + public UserRole as(String alias) { + return new UserRole(DSL.name(alias), this); + } + + @Override + public UserRole as(Name alias) { + return new UserRole(alias, this); + } + + @Override + public UserRole as(Table alias) { + return new UserRole(alias.getQualifiedName(), this); + } + + /** + * Rename this table + */ + @Override + public UserRole rename(String name) { + return new UserRole(DSL.name(name), null); + } + + /** + * Rename this table + */ + @Override + public UserRole rename(Name name) { + return new UserRole(name, null); + } + + /** + * Rename this table + */ + @Override + public UserRole rename(Table name) { + return new UserRole(name.getQualifiedName(), null); + } + + /** + * Create an inline derived table from this table + */ + @Override + public UserRole where(Condition condition) { + return new UserRole(getQualifiedName(), aliased() ? this : null, null, condition); + } + + /** + * Create an inline derived table from this table + */ + @Override + public UserRole where(Collection conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public UserRole where(Condition... conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public UserRole where(Field condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public UserRole where(SQL condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public UserRole where(@Stringly.SQL String condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public UserRole where(@Stringly.SQL String condition, Object... binds) { + return where(DSL.condition(condition, binds)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public UserRole where(@Stringly.SQL String condition, QueryPart... parts) { + return where(DSL.condition(condition, parts)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public UserRole whereExists(Select select) { + return where(DSL.exists(select)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public UserRole whereNotExists(Select select) { + return where(DSL.notExists(select)); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/records/AccessLevelRecord.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/records/AccessLevelRecord.java new file mode 100644 index 0000000..b3e323b --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/records/AccessLevelRecord.java @@ -0,0 +1,94 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.security.tables.records; + + +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.AccessLevel; + +import org.jooq.Record1; +import org.jooq.impl.UpdatableRecordImpl; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class AccessLevelRecord extends UpdatableRecordImpl { + + private static final long serialVersionUID = 1L; + + /** + * Setter for security.access_level.access_level_id. + */ + public void setAccessLevelId(String value) { + set(0, value); + } + + /** + * Getter for security.access_level.access_level_id. + */ + public String getAccessLevelId() { + return (String) get(0); + } + + /** + * Setter for security.access_level.level. + */ + public void setLevel(Short value) { + set(1, value); + } + + /** + * Getter for security.access_level.level. + */ + public Short getLevel() { + return (Short) get(1); + } + + /** + * Setter for security.access_level.description. + */ + public void setDescription(String value) { + set(2, value); + } + + /** + * Getter for security.access_level.description. + */ + public String getDescription() { + return (String) get(2); + } + + // ------------------------------------------------------------------------- + // Primary key information + // ------------------------------------------------------------------------- + + @Override + public Record1 key() { + return (Record1) super.key(); + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached AccessLevelRecord + */ + public AccessLevelRecord() { + super(AccessLevel.ACCESS_LEVEL); + } + + /** + * Create a detached, initialised AccessLevelRecord + */ + public AccessLevelRecord(String accessLevelId, Short level, String description) { + super(AccessLevel.ACCESS_LEVEL); + + setAccessLevelId(accessLevelId); + setLevel(level); + setDescription(description); + resetChangedOnNotNull(); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/records/AuthorityRecord.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/records/AuthorityRecord.java new file mode 100644 index 0000000..b7d4fdd --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/records/AuthorityRecord.java @@ -0,0 +1,96 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.security.tables.records; + + +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.Authority; + +import java.sql.Timestamp; + +import org.jooq.Record1; +import org.jooq.impl.UpdatableRecordImpl; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class AuthorityRecord extends UpdatableRecordImpl { + + private static final long serialVersionUID = 1L; + + /** + * Setter for security.authority.authority_id. + */ + public void setAuthorityId(String value) { + set(0, value); + } + + /** + * Getter for security.authority.authority_id. + */ + public String getAuthorityId() { + return (String) get(0); + } + + /** + * Setter for security.authority.name. + */ + public void setName(String value) { + set(1, value); + } + + /** + * Getter for security.authority.name. + */ + public String getName() { + return (String) get(1); + } + + /** + * Setter for security.authority.created. + */ + public void setCreated(Timestamp value) { + set(2, value); + } + + /** + * Getter for security.authority.created. + */ + public Timestamp getCreated() { + return (Timestamp) get(2); + } + + // ------------------------------------------------------------------------- + // Primary key information + // ------------------------------------------------------------------------- + + @Override + public Record1 key() { + return (Record1) super.key(); + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached AuthorityRecord + */ + public AuthorityRecord() { + super(Authority.AUTHORITY); + } + + /** + * Create a detached, initialised AuthorityRecord + */ + public AuthorityRecord(String authorityId, String name, Timestamp created) { + super(Authority.AUTHORITY); + + setAuthorityId(authorityId); + setName(name); + setCreated(created); + resetChangedOnNotNull(); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/records/EsiaUserRecord.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/records/EsiaUserRecord.java new file mode 100644 index 0000000..1353f27 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/records/EsiaUserRecord.java @@ -0,0 +1,94 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.security.tables.records; + + +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.EsiaUser; + +import org.jooq.Record1; +import org.jooq.impl.UpdatableRecordImpl; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class EsiaUserRecord extends UpdatableRecordImpl { + + private static final long serialVersionUID = 1L; + + /** + * Setter for security.esia_user.esia_user_id. + */ + public void setEsiaUserId(String value) { + set(0, value); + } + + /** + * Getter for security.esia_user.esia_user_id. + */ + public String getEsiaUserId() { + return (String) get(0); + } + + /** + * Setter for security.esia_user.user_account_id. + */ + public void setUserAccountId(String value) { + set(1, value); + } + + /** + * Getter for security.esia_user.user_account_id. + */ + public String getUserAccountId() { + return (String) get(1); + } + + /** + * Setter for security.esia_user.person_contact_id. + */ + public void setPersonContactId(Long value) { + set(2, value); + } + + /** + * Getter for security.esia_user.person_contact_id. + */ + public Long getPersonContactId() { + return (Long) get(2); + } + + // ------------------------------------------------------------------------- + // Primary key information + // ------------------------------------------------------------------------- + + @Override + public Record1 key() { + return (Record1) super.key(); + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached EsiaUserRecord + */ + public EsiaUserRecord() { + super(EsiaUser.ESIA_USER); + } + + /** + * Create a detached, initialised EsiaUserRecord + */ + public EsiaUserRecord(String esiaUserId, String userAccountId, Long personContactId) { + super(EsiaUser.ESIA_USER); + + setEsiaUserId(esiaUserId); + setUserAccountId(userAccountId); + setPersonContactId(personContactId); + resetChangedOnNotNull(); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/records/LinkUserAccountUserGroupRecord.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/records/LinkUserAccountUserGroupRecord.java new file mode 100644 index 0000000..0c19903 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/records/LinkUserAccountUserGroupRecord.java @@ -0,0 +1,117 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.security.tables.records; + + +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.LinkUserAccountUserGroup; + +import java.sql.Timestamp; + +import org.jooq.Record1; +import org.jooq.impl.UpdatableRecordImpl; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class LinkUserAccountUserGroupRecord extends UpdatableRecordImpl { + + private static final long serialVersionUID = 1L; + + /** + * Setter for + * security.link_user_account_user_group.link_user_account_user_group_id. + */ + public void setLinkUserAccountUserGroupId(String value) { + set(0, value); + } + + /** + * Getter for + * security.link_user_account_user_group.link_user_account_user_group_id. + */ + public String getLinkUserAccountUserGroupId() { + return (String) get(0); + } + + /** + * Setter for + * security.link_user_account_user_group.user_account_id. + */ + public void setUserAccountId(String value) { + set(1, value); + } + + /** + * Getter for + * security.link_user_account_user_group.user_account_id. + */ + public String getUserAccountId() { + return (String) get(1); + } + + /** + * Setter for + * security.link_user_account_user_group.user_group_id. + */ + public void setUserGroupId(String value) { + set(2, value); + } + + /** + * Getter for + * security.link_user_account_user_group.user_group_id. + */ + public String getUserGroupId() { + return (String) get(2); + } + + /** + * Setter for security.link_user_account_user_group.created. + */ + public void setCreated(Timestamp value) { + set(3, value); + } + + /** + * Getter for security.link_user_account_user_group.created. + */ + public Timestamp getCreated() { + return (Timestamp) get(3); + } + + // ------------------------------------------------------------------------- + // Primary key information + // ------------------------------------------------------------------------- + + @Override + public Record1 key() { + return (Record1) super.key(); + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached LinkUserAccountUserGroupRecord + */ + public LinkUserAccountUserGroupRecord() { + super(LinkUserAccountUserGroup.LINK_USER_ACCOUNT_USER_GROUP); + } + + /** + * Create a detached, initialised LinkUserAccountUserGroupRecord + */ + public LinkUserAccountUserGroupRecord(String linkUserAccountUserGroupId, String userAccountId, String userGroupId, Timestamp created) { + super(LinkUserAccountUserGroup.LINK_USER_ACCOUNT_USER_GROUP); + + setLinkUserAccountUserGroupId(linkUserAccountUserGroupId); + setUserAccountId(userAccountId); + setUserGroupId(userGroupId); + setCreated(created); + resetChangedOnNotNull(); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/records/LinkUserGroupUserRoleRecord.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/records/LinkUserGroupUserRoleRecord.java new file mode 100644 index 0000000..4c0dbdf --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/records/LinkUserGroupUserRoleRecord.java @@ -0,0 +1,113 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.security.tables.records; + + +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.LinkUserGroupUserRole; + +import java.sql.Timestamp; + +import org.jooq.Record1; +import org.jooq.impl.UpdatableRecordImpl; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class LinkUserGroupUserRoleRecord extends UpdatableRecordImpl { + + private static final long serialVersionUID = 1L; + + /** + * Setter for + * security.link_user_group_user_role.link_user_group_user_role_id. + */ + public void setLinkUserGroupUserRoleId(String value) { + set(0, value); + } + + /** + * Getter for + * security.link_user_group_user_role.link_user_group_user_role_id. + */ + public String getLinkUserGroupUserRoleId() { + return (String) get(0); + } + + /** + * Setter for security.link_user_group_user_role.user_group_id. + */ + public void setUserGroupId(String value) { + set(1, value); + } + + /** + * Getter for security.link_user_group_user_role.user_group_id. + */ + public String getUserGroupId() { + return (String) get(1); + } + + /** + * Setter for security.link_user_group_user_role.user_role_id. + */ + public void setUserRoleId(String value) { + set(2, value); + } + + /** + * Getter for security.link_user_group_user_role.user_role_id. + */ + public String getUserRoleId() { + return (String) get(2); + } + + /** + * Setter for security.link_user_group_user_role.created. + */ + public void setCreated(Timestamp value) { + set(3, value); + } + + /** + * Getter for security.link_user_group_user_role.created. + */ + public Timestamp getCreated() { + return (Timestamp) get(3); + } + + // ------------------------------------------------------------------------- + // Primary key information + // ------------------------------------------------------------------------- + + @Override + public Record1 key() { + return (Record1) super.key(); + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached LinkUserGroupUserRoleRecord + */ + public LinkUserGroupUserRoleRecord() { + super(LinkUserGroupUserRole.LINK_USER_GROUP_USER_ROLE); + } + + /** + * Create a detached, initialised LinkUserGroupUserRoleRecord + */ + public LinkUserGroupUserRoleRecord(String linkUserGroupUserRoleId, String userGroupId, String userRoleId, Timestamp created) { + super(LinkUserGroupUserRole.LINK_USER_GROUP_USER_ROLE); + + setLinkUserGroupUserRoleId(linkUserGroupUserRoleId); + setUserGroupId(userGroupId); + setUserRoleId(userRoleId); + setCreated(created); + resetChangedOnNotNull(); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/records/LinkUserRoleAuthorityRecord.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/records/LinkUserRoleAuthorityRecord.java new file mode 100644 index 0000000..57e1c17 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/records/LinkUserRoleAuthorityRecord.java @@ -0,0 +1,113 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.security.tables.records; + + +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.LinkUserRoleAuthority; + +import java.sql.Timestamp; + +import org.jooq.Record1; +import org.jooq.impl.UpdatableRecordImpl; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class LinkUserRoleAuthorityRecord extends UpdatableRecordImpl { + + private static final long serialVersionUID = 1L; + + /** + * Setter for + * security.link_user_role_authority.user_role_authority_id. + */ + public void setUserRoleAuthorityId(String value) { + set(0, value); + } + + /** + * Getter for + * security.link_user_role_authority.user_role_authority_id. + */ + public String getUserRoleAuthorityId() { + return (String) get(0); + } + + /** + * Setter for security.link_user_role_authority.user_role_id. + */ + public void setUserRoleId(String value) { + set(1, value); + } + + /** + * Getter for security.link_user_role_authority.user_role_id. + */ + public String getUserRoleId() { + return (String) get(1); + } + + /** + * Setter for security.link_user_role_authority.authority_id. + */ + public void setAuthorityId(String value) { + set(2, value); + } + + /** + * Getter for security.link_user_role_authority.authority_id. + */ + public String getAuthorityId() { + return (String) get(2); + } + + /** + * Setter for security.link_user_role_authority.created. + */ + public void setCreated(Timestamp value) { + set(3, value); + } + + /** + * Getter for security.link_user_role_authority.created. + */ + public Timestamp getCreated() { + return (Timestamp) get(3); + } + + // ------------------------------------------------------------------------- + // Primary key information + // ------------------------------------------------------------------------- + + @Override + public Record1 key() { + return (Record1) super.key(); + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached LinkUserRoleAuthorityRecord + */ + public LinkUserRoleAuthorityRecord() { + super(LinkUserRoleAuthority.LINK_USER_ROLE_AUTHORITY); + } + + /** + * Create a detached, initialised LinkUserRoleAuthorityRecord + */ + public LinkUserRoleAuthorityRecord(String userRoleAuthorityId, String userRoleId, String authorityId, Timestamp created) { + super(LinkUserRoleAuthority.LINK_USER_ROLE_AUTHORITY); + + setUserRoleAuthorityId(userRoleAuthorityId); + setUserRoleId(userRoleId); + setAuthorityId(authorityId); + setCreated(created); + resetChangedOnNotNull(); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/records/OrgUnitRecord.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/records/OrgUnitRecord.java new file mode 100644 index 0000000..7ea94d7 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/records/OrgUnitRecord.java @@ -0,0 +1,124 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.security.tables.records; + + +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.OrgUnit; + +import org.jooq.Record1; +import org.jooq.impl.UpdatableRecordImpl; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class OrgUnitRecord extends UpdatableRecordImpl { + + private static final long serialVersionUID = 1L; + + /** + * Setter for security.org_unit.id. + */ + public void setId(String value) { + set(0, value); + } + + /** + * Getter for security.org_unit.id. + */ + public String getId() { + return (String) get(0); + } + + /** + * Setter for security.org_unit.name. + */ + public void setName(String value) { + set(1, value); + } + + /** + * Getter for security.org_unit.name. + */ + public String getName() { + return (String) get(1); + } + + /** + * Setter for security.org_unit.code. + */ + public void setCode(String value) { + set(2, value); + } + + /** + * Getter for security.org_unit.code. + */ + public String getCode() { + return (String) get(2); + } + + /** + * Setter for security.org_unit.parent_id. + */ + public void setParentId(String value) { + set(3, value); + } + + /** + * Getter for security.org_unit.parent_id. + */ + public String getParentId() { + return (String) get(3); + } + + /** + * Setter for security.org_unit.removed. + */ + public void setRemoved(Boolean value) { + set(4, value); + } + + /** + * Getter for security.org_unit.removed. + */ + public Boolean getRemoved() { + return (Boolean) get(4); + } + + // ------------------------------------------------------------------------- + // Primary key information + // ------------------------------------------------------------------------- + + @Override + public Record1 key() { + return (Record1) super.key(); + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached OrgUnitRecord + */ + public OrgUnitRecord() { + super(OrgUnit.ORG_UNIT); + } + + /** + * Create a detached, initialised OrgUnitRecord + */ + public OrgUnitRecord(String id, String name, String code, String parentId, Boolean removed) { + super(OrgUnit.ORG_UNIT); + + setId(id); + setName(name); + setCode(code); + setParentId(parentId); + setRemoved(removed); + resetChangedOnNotNull(); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/records/UserAccountRecord.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/records/UserAccountRecord.java new file mode 100644 index 0000000..3995de9 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/records/UserAccountRecord.java @@ -0,0 +1,261 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.security.tables.records; + + +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.UserAccount; + +import java.sql.Timestamp; + +import org.jooq.Record1; +import org.jooq.impl.UpdatableRecordImpl; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class UserAccountRecord extends UpdatableRecordImpl { + + private static final long serialVersionUID = 1L; + + /** + * Setter for security.user_account.user_account_id. + */ + public void setUserAccountId(String value) { + set(0, value); + } + + /** + * Getter for security.user_account.user_account_id. + */ + public String getUserAccountId() { + return (String) get(0); + } + + /** + * Setter for security.user_account.email. + */ + public void setEmail(String value) { + set(1, value); + } + + /** + * Getter for security.user_account.email. + */ + public String getEmail() { + return (String) get(1); + } + + /** + * Setter for security.user_account.first_name. + */ + public void setFirstName(String value) { + set(2, value); + } + + /** + * Getter for security.user_account.first_name. + */ + public String getFirstName() { + return (String) get(2); + } + + /** + * Setter for security.user_account.last_name. + */ + public void setLastName(String value) { + set(3, value); + } + + /** + * Getter for security.user_account.last_name. + */ + public String getLastName() { + return (String) get(3); + } + + /** + * Setter for security.user_account.middle_name. + */ + public void setMiddleName(String value) { + set(4, value); + } + + /** + * Getter for security.user_account.middle_name. + */ + public String getMiddleName() { + return (String) get(4); + } + + /** + * Setter for security.user_account.created. + */ + public void setCreated(Timestamp value) { + set(5, value); + } + + /** + * Getter for security.user_account.created. + */ + public Timestamp getCreated() { + return (Timestamp) get(5); + } + + /** + * Setter for security.user_account.updated. + */ + public void setUpdated(Timestamp value) { + set(6, value); + } + + /** + * Getter for security.user_account.updated. + */ + public Timestamp getUpdated() { + return (Timestamp) get(6); + } + + /** + * Setter for security.user_account.locked. + */ + public void setLocked(Boolean value) { + set(7, value); + } + + /** + * Getter for security.user_account.locked. + */ + public Boolean getLocked() { + return (Boolean) get(7); + } + + /** + * Setter for security.user_account.org_unit_id. + */ + public void setOrgUnitId(String value) { + set(8, value); + } + + /** + * Getter for security.user_account.org_unit_id. + */ + public String getOrgUnitId() { + return (String) get(8); + } + + /** + * Setter for security.user_account.username. + */ + public void setUsername(String value) { + set(9, value); + } + + /** + * Getter for security.user_account.username. + */ + public String getUsername() { + return (String) get(9); + } + + /** + * Setter for security.user_account.phone. + */ + public void setPhone(String value) { + set(10, value); + } + + /** + * Getter for security.user_account.phone. + */ + public String getPhone() { + return (String) get(10); + } + + /** + * Setter for security.user_account.email_confirmed. + */ + public void setEmailConfirmed(Boolean value) { + set(11, value); + } + + /** + * Getter for security.user_account.email_confirmed. + */ + public Boolean getEmailConfirmed() { + return (Boolean) get(11); + } + + /** + * Setter for security.user_account.user_source. + */ + public void setUserSource(String value) { + set(12, value); + } + + /** + * Getter for security.user_account.user_source. + */ + public String getUserSource() { + return (String) get(12); + } + + /** + * Setter for security.user_account.source_name. + */ + public void setSourceName(String value) { + set(13, value); + } + + /** + * Getter for security.user_account.source_name. + */ + public String getSourceName() { + return (String) get(13); + } + + // ------------------------------------------------------------------------- + // Primary key information + // ------------------------------------------------------------------------- + + @Override + public Record1 key() { + return (Record1) super.key(); + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached UserAccountRecord + */ + public UserAccountRecord() { + super(UserAccount.USER_ACCOUNT); + } + + /** + * Create a detached, initialised UserAccountRecord + */ + public UserAccountRecord(String userAccountId, String email, String firstName, String lastName, String middleName, Timestamp created, Timestamp updated, Boolean locked, String orgUnitId, String username, String phone, Boolean emailConfirmed, String userSource, String sourceName) { + super(UserAccount.USER_ACCOUNT); + + setUserAccountId(userAccountId); + setEmail(email); + setFirstName(firstName); + setLastName(lastName); + setMiddleName(middleName); + setCreated(created); + setUpdated(updated); + setLocked(locked); + setOrgUnitId(orgUnitId); + setUsername(username); + setPhone(phone); + setEmailConfirmed(emailConfirmed); + setUserSource(userSource); + setSourceName(sourceName); + resetChangedOnNotNull(); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/records/UserAccountRefreshTokenRecord.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/records/UserAccountRefreshTokenRecord.java new file mode 100644 index 0000000..a9bc65d --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/records/UserAccountRefreshTokenRecord.java @@ -0,0 +1,134 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.security.tables.records; + + +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.UserAccountRefreshToken; + +import java.sql.Timestamp; + +import org.jooq.Record1; +import org.jooq.impl.UpdatableRecordImpl; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class UserAccountRefreshTokenRecord extends UpdatableRecordImpl { + + private static final long serialVersionUID = 1L; + + /** + * Setter for + * security.user_account_refresh_token.user_account_refresh_token_id. + */ + public void setUserAccountRefreshTokenId(String value) { + set(0, value); + } + + /** + * Getter for + * security.user_account_refresh_token.user_account_refresh_token_id. + */ + public String getUserAccountRefreshTokenId() { + return (String) get(0); + } + + /** + * Setter for + * security.user_account_refresh_token.user_account_id. + */ + public void setUserAccountId(String value) { + set(1, value); + } + + /** + * Getter for + * security.user_account_refresh_token.user_account_id. + */ + public String getUserAccountId() { + return (String) get(1); + } + + /** + * Setter for + * security.user_account_refresh_token.refresh_token. + */ + public void setRefreshToken(String value) { + set(2, value); + } + + /** + * Getter for + * security.user_account_refresh_token.refresh_token. + */ + public String getRefreshToken() { + return (String) get(2); + } + + /** + * Setter for security.user_account_refresh_token.access_token. + */ + public void setAccessToken(String value) { + set(3, value); + } + + /** + * Getter for security.user_account_refresh_token.access_token. + */ + public String getAccessToken() { + return (String) get(3); + } + + /** + * Setter for + * security.user_account_refresh_token.expiration_time. + */ + public void setExpirationTime(Timestamp value) { + set(4, value); + } + + /** + * Getter for + * security.user_account_refresh_token.expiration_time. + */ + public Timestamp getExpirationTime() { + return (Timestamp) get(4); + } + + // ------------------------------------------------------------------------- + // Primary key information + // ------------------------------------------------------------------------- + + @Override + public Record1 key() { + return (Record1) super.key(); + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached UserAccountRefreshTokenRecord + */ + public UserAccountRefreshTokenRecord() { + super(UserAccountRefreshToken.USER_ACCOUNT_REFRESH_TOKEN); + } + + /** + * Create a detached, initialised UserAccountRefreshTokenRecord + */ + public UserAccountRefreshTokenRecord(String userAccountRefreshTokenId, String userAccountId, String refreshToken, String accessToken, Timestamp expirationTime) { + super(UserAccountRefreshToken.USER_ACCOUNT_REFRESH_TOKEN); + + setUserAccountRefreshTokenId(userAccountRefreshTokenId); + setUserAccountId(userAccountId); + setRefreshToken(refreshToken); + setAccessToken(accessToken); + setExpirationTime(expirationTime); + resetChangedOnNotNull(); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/records/UserGroupRecord.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/records/UserGroupRecord.java new file mode 100644 index 0000000..ee11ce6 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/records/UserGroupRecord.java @@ -0,0 +1,126 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.security.tables.records; + + +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.UserGroup; + +import java.sql.Timestamp; + +import org.jooq.Record1; +import org.jooq.impl.UpdatableRecordImpl; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class UserGroupRecord extends UpdatableRecordImpl { + + private static final long serialVersionUID = 1L; + + /** + * Setter for security.user_group.user_group_id. + */ + public void setUserGroupId(String value) { + set(0, value); + } + + /** + * Getter for security.user_group.user_group_id. + */ + public String getUserGroupId() { + return (String) get(0); + } + + /** + * Setter for security.user_group.name. + */ + public void setName(String value) { + set(1, value); + } + + /** + * Getter for security.user_group.name. + */ + public String getName() { + return (String) get(1); + } + + /** + * Setter for security.user_group.created. + */ + public void setCreated(Timestamp value) { + set(2, value); + } + + /** + * Getter for security.user_group.created. + */ + public Timestamp getCreated() { + return (Timestamp) get(2); + } + + /** + * Setter for security.user_group.updated. + */ + public void setUpdated(Timestamp value) { + set(3, value); + } + + /** + * Getter for security.user_group.updated. + */ + public Timestamp getUpdated() { + return (Timestamp) get(3); + } + + /** + * Setter for security.user_group.access_level_id. + */ + public void setAccessLevelId(String value) { + set(4, value); + } + + /** + * Getter for security.user_group.access_level_id. + */ + public String getAccessLevelId() { + return (String) get(4); + } + + // ------------------------------------------------------------------------- + // Primary key information + // ------------------------------------------------------------------------- + + @Override + public Record1 key() { + return (Record1) super.key(); + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached UserGroupRecord + */ + public UserGroupRecord() { + super(UserGroup.USER_GROUP); + } + + /** + * Create a detached, initialised UserGroupRecord + */ + public UserGroupRecord(String userGroupId, String name, Timestamp created, Timestamp updated, String accessLevelId) { + super(UserGroup.USER_GROUP); + + setUserGroupId(userGroupId); + setName(name); + setCreated(created); + setUpdated(updated); + setAccessLevelId(accessLevelId); + resetChangedOnNotNull(); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/records/UserRoleRecord.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/records/UserRoleRecord.java new file mode 100644 index 0000000..cb37569 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/security/tables/records/UserRoleRecord.java @@ -0,0 +1,111 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.security.tables.records; + + +import ervu_dashboard.ervu_dashboard.db_beans.security.tables.UserRole; + +import java.sql.Timestamp; + +import org.jooq.Record1; +import org.jooq.impl.UpdatableRecordImpl; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class UserRoleRecord extends UpdatableRecordImpl { + + private static final long serialVersionUID = 1L; + + /** + * Setter for security.user_role.user_role_id. + */ + public void setUserRoleId(String value) { + set(0, value); + } + + /** + * Getter for security.user_role.user_role_id. + */ + public String getUserRoleId() { + return (String) get(0); + } + + /** + * Setter for security.user_role.name. + */ + public void setName(String value) { + set(1, value); + } + + /** + * Getter for security.user_role.name. + */ + public String getName() { + return (String) get(1); + } + + /** + * Setter for security.user_role.created. + */ + public void setCreated(Timestamp value) { + set(2, value); + } + + /** + * Getter for security.user_role.created. + */ + public Timestamp getCreated() { + return (Timestamp) get(2); + } + + /** + * Setter for security.user_role.updated. + */ + public void setUpdated(Timestamp value) { + set(3, value); + } + + /** + * Getter for security.user_role.updated. + */ + public Timestamp getUpdated() { + return (Timestamp) get(3); + } + + // ------------------------------------------------------------------------- + // Primary key information + // ------------------------------------------------------------------------- + + @Override + public Record1 key() { + return (Record1) super.key(); + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached UserRoleRecord + */ + public UserRoleRecord() { + super(UserRole.USER_ROLE); + } + + /** + * Create a detached, initialised UserRoleRecord + */ + public UserRoleRecord(String userRoleId, String name, Timestamp created, Timestamp updated) { + super(UserRole.USER_ROLE); + + setUserRoleId(userRoleId); + setName(name); + setCreated(created); + setUpdated(updated); + resetChangedOnNotNull(); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/space/Keys.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/space/Keys.java new file mode 100644 index 0000000..c8c79c8 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/space/Keys.java @@ -0,0 +1,37 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.space; + + +import ervu_dashboard.ervu_dashboard.db_beans.space.tables.MilitaryCommissariat; +import ervu_dashboard.ervu_dashboard.db_beans.space.tables.MilitaryDistrict; +import ervu_dashboard.ervu_dashboard.db_beans.space.tables.Region; +import ervu_dashboard.ervu_dashboard.db_beans.space.tables.Testrecruitment; +import ervu_dashboard.ervu_dashboard.db_beans.space.tables.records.MilitaryCommissariatRecord; +import ervu_dashboard.ervu_dashboard.db_beans.space.tables.records.MilitaryDistrictRecord; +import ervu_dashboard.ervu_dashboard.db_beans.space.tables.records.RegionRecord; +import ervu_dashboard.ervu_dashboard.db_beans.space.tables.records.TestrecruitmentRecord; + +import org.jooq.TableField; +import org.jooq.UniqueKey; +import org.jooq.impl.DSL; +import org.jooq.impl.Internal; + + +/** + * A class modelling foreign key relationships and constraints of tables in + * space. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Keys { + + // ------------------------------------------------------------------------- + // UNIQUE and PRIMARY KEY definitions + // ------------------------------------------------------------------------- + + public static final UniqueKey PK_MILITARY_COMMISSARIAT = Internal.createUniqueKey(MilitaryCommissariat.MILITARY_COMMISSARIAT, DSL.name("pk_military_commissariat"), new TableField[] { MilitaryCommissariat.MILITARY_COMMISSARIAT.ID_MILITARY_COMMISSARIAT }, true); + public static final UniqueKey MILITARY_DISTRICT_PKEY = Internal.createUniqueKey(MilitaryDistrict.MILITARY_DISTRICT, DSL.name("military_district_pkey"), new TableField[] { MilitaryDistrict.MILITARY_DISTRICT.ID_MILITARY_DISTRICT }, true); + public static final UniqueKey PK_REGION = Internal.createUniqueKey(Region.REGION, DSL.name("pk_region"), new TableField[] { Region.REGION.ID_REGION }, true); + public static final UniqueKey TESTRECRUITMENT_PKEY = Internal.createUniqueKey(Testrecruitment.TESTRECRUITMENT, DSL.name("testrecruitment_pkey"), new TableField[] { Testrecruitment.TESTRECRUITMENT.ID }, true); +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/space/Space.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/space/Space.java new file mode 100644 index 0000000..147557c --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/space/Space.java @@ -0,0 +1,76 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.space; + + +import ervu_dashboard.ervu_dashboard.db_beans.DefaultCatalog; +import ervu_dashboard.ervu_dashboard.db_beans.space.tables.MilitaryCommissariat; +import ervu_dashboard.ervu_dashboard.db_beans.space.tables.MilitaryDistrict; +import ervu_dashboard.ervu_dashboard.db_beans.space.tables.Region; +import ervu_dashboard.ervu_dashboard.db_beans.space.tables.Testrecruitment; + +import java.util.Arrays; +import java.util.List; + +import org.jooq.Catalog; +import org.jooq.Table; +import org.jooq.impl.SchemaImpl; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Space extends SchemaImpl { + + private static final long serialVersionUID = 1L; + + /** + * The reference instance of space + */ + public static final Space SPACE = new Space(); + + /** + * Военные комиссариаты + */ + public final MilitaryCommissariat MILITARY_COMMISSARIAT = MilitaryCommissariat.MILITARY_COMMISSARIAT; + + /** + * Военные округа + */ + public final MilitaryDistrict MILITARY_DISTRICT = MilitaryDistrict.MILITARY_DISTRICT; + + /** + * Регионы + */ + public final Region REGION = Region.REGION; + + /** + * The table space.testrecruitment. + */ + public final Testrecruitment TESTRECRUITMENT = Testrecruitment.TESTRECRUITMENT; + + /** + * No further instances allowed + */ + private Space() { + super("space", null); + } + + + @Override + public Catalog getCatalog() { + return DefaultCatalog.DEFAULT_CATALOG; + } + + @Override + public final List> getTables() { + return Arrays.asList( + MilitaryCommissariat.MILITARY_COMMISSARIAT, + MilitaryDistrict.MILITARY_DISTRICT, + Region.REGION, + Testrecruitment.TESTRECRUITMENT + ); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/space/Tables.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/space/Tables.java new file mode 100644 index 0000000..3ac7f50 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/space/Tables.java @@ -0,0 +1,38 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.space; + + +import ervu_dashboard.ervu_dashboard.db_beans.space.tables.MilitaryCommissariat; +import ervu_dashboard.ervu_dashboard.db_beans.space.tables.MilitaryDistrict; +import ervu_dashboard.ervu_dashboard.db_beans.space.tables.Region; +import ervu_dashboard.ervu_dashboard.db_beans.space.tables.Testrecruitment; + + +/** + * Convenience access to all tables in space. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Tables { + + /** + * Военные комиссариаты + */ + public static final MilitaryCommissariat MILITARY_COMMISSARIAT = MilitaryCommissariat.MILITARY_COMMISSARIAT; + + /** + * Военные округа + */ + public static final MilitaryDistrict MILITARY_DISTRICT = MilitaryDistrict.MILITARY_DISTRICT; + + /** + * Регионы + */ + public static final Region REGION = Region.REGION; + + /** + * The table space.testrecruitment. + */ + public static final Testrecruitment TESTRECRUITMENT = Testrecruitment.TESTRECRUITMENT; +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/space/tables/MilitaryCommissariat.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/space/tables/MilitaryCommissariat.java new file mode 100644 index 0000000..e45e6ae --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/space/tables/MilitaryCommissariat.java @@ -0,0 +1,234 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.space.tables; + + +import ervu_dashboard.ervu_dashboard.db_beans.space.Keys; +import ervu_dashboard.ervu_dashboard.db_beans.space.Space; +import ervu_dashboard.ervu_dashboard.db_beans.space.tables.records.MilitaryCommissariatRecord; + +import java.util.Collection; + +import org.jooq.Condition; +import org.jooq.Field; +import org.jooq.Identity; +import org.jooq.Name; +import org.jooq.PlainSQL; +import org.jooq.QueryPart; +import org.jooq.SQL; +import org.jooq.Schema; +import org.jooq.Select; +import org.jooq.Stringly; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.TableOptions; +import org.jooq.UniqueKey; +import org.jooq.impl.DSL; +import org.jooq.impl.SQLDataType; +import org.jooq.impl.TableImpl; + + +/** + * Военные комиссариаты + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class MilitaryCommissariat extends TableImpl { + + private static final long serialVersionUID = 1L; + + /** + * The reference instance of space.military_commissariat + */ + public static final MilitaryCommissariat MILITARY_COMMISSARIAT = new MilitaryCommissariat(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return MilitaryCommissariatRecord.class; + } + + /** + * The column + * space.military_commissariat.id_military_commissariat. + */ + public final TableField ID_MILITARY_COMMISSARIAT = createField(DSL.name("id_military_commissariat"), SQLDataType.BIGINT.nullable(false).identity(true), this, ""); + + /** + * The column + * space.military_commissariat.military_commissariat_name. + * Наименование военного комиссариата + */ + public final TableField MILITARY_COMMISSARIAT_NAME = createField(DSL.name("military_commissariat_name"), SQLDataType.CLOB, this, "Наименование военного комиссариата"); + + private MilitaryCommissariat(Name alias, Table aliased) { + this(alias, aliased, (Field[]) null, null); + } + + private MilitaryCommissariat(Name alias, Table aliased, Field[] parameters, Condition where) { + super(alias, null, aliased, parameters, DSL.comment("Военные комиссариаты"), TableOptions.table(), where); + } + + /** + * Create an aliased space.military_commissariat table + * reference + */ + public MilitaryCommissariat(String alias) { + this(DSL.name(alias), MILITARY_COMMISSARIAT); + } + + /** + * Create an aliased space.military_commissariat table + * reference + */ + public MilitaryCommissariat(Name alias) { + this(alias, MILITARY_COMMISSARIAT); + } + + /** + * Create a space.military_commissariat table reference + */ + public MilitaryCommissariat() { + this(DSL.name("military_commissariat"), null); + } + + @Override + public Schema getSchema() { + return aliased() ? null : Space.SPACE; + } + + @Override + public Identity getIdentity() { + return (Identity) super.getIdentity(); + } + + @Override + public UniqueKey getPrimaryKey() { + return Keys.PK_MILITARY_COMMISSARIAT; + } + + @Override + public MilitaryCommissariat as(String alias) { + return new MilitaryCommissariat(DSL.name(alias), this); + } + + @Override + public MilitaryCommissariat as(Name alias) { + return new MilitaryCommissariat(alias, this); + } + + @Override + public MilitaryCommissariat as(Table alias) { + return new MilitaryCommissariat(alias.getQualifiedName(), this); + } + + /** + * Rename this table + */ + @Override + public MilitaryCommissariat rename(String name) { + return new MilitaryCommissariat(DSL.name(name), null); + } + + /** + * Rename this table + */ + @Override + public MilitaryCommissariat rename(Name name) { + return new MilitaryCommissariat(name, null); + } + + /** + * Rename this table + */ + @Override + public MilitaryCommissariat rename(Table name) { + return new MilitaryCommissariat(name.getQualifiedName(), null); + } + + /** + * Create an inline derived table from this table + */ + @Override + public MilitaryCommissariat where(Condition condition) { + return new MilitaryCommissariat(getQualifiedName(), aliased() ? this : null, null, condition); + } + + /** + * Create an inline derived table from this table + */ + @Override + public MilitaryCommissariat where(Collection conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public MilitaryCommissariat where(Condition... conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public MilitaryCommissariat where(Field condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public MilitaryCommissariat where(SQL condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public MilitaryCommissariat where(@Stringly.SQL String condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public MilitaryCommissariat where(@Stringly.SQL String condition, Object... binds) { + return where(DSL.condition(condition, binds)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public MilitaryCommissariat where(@Stringly.SQL String condition, QueryPart... parts) { + return where(DSL.condition(condition, parts)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public MilitaryCommissariat whereExists(Select select) { + return where(DSL.exists(select)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public MilitaryCommissariat whereNotExists(Select select) { + return where(DSL.notExists(select)); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/space/tables/MilitaryDistrict.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/space/tables/MilitaryDistrict.java new file mode 100644 index 0000000..fcad58a --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/space/tables/MilitaryDistrict.java @@ -0,0 +1,230 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.space.tables; + + +import ervu_dashboard.ervu_dashboard.db_beans.space.Keys; +import ervu_dashboard.ervu_dashboard.db_beans.space.Space; +import ervu_dashboard.ervu_dashboard.db_beans.space.tables.records.MilitaryDistrictRecord; + +import java.util.Collection; + +import org.jooq.Condition; +import org.jooq.Field; +import org.jooq.Identity; +import org.jooq.Name; +import org.jooq.PlainSQL; +import org.jooq.QueryPart; +import org.jooq.SQL; +import org.jooq.Schema; +import org.jooq.Select; +import org.jooq.Stringly; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.TableOptions; +import org.jooq.UniqueKey; +import org.jooq.impl.DSL; +import org.jooq.impl.SQLDataType; +import org.jooq.impl.TableImpl; + + +/** + * Военные округа + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class MilitaryDistrict extends TableImpl { + + private static final long serialVersionUID = 1L; + + /** + * The reference instance of space.military_district + */ + public static final MilitaryDistrict MILITARY_DISTRICT = new MilitaryDistrict(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return MilitaryDistrictRecord.class; + } + + /** + * The column space.military_district.id_military_district. + */ + public final TableField ID_MILITARY_DISTRICT = createField(DSL.name("id_military_district"), SQLDataType.BIGINT.nullable(false).identity(true), this, ""); + + /** + * The column space.military_district.military_district_name. + * Наименование военного округа + */ + public final TableField MILITARY_DISTRICT_NAME = createField(DSL.name("military_district_name"), SQLDataType.CLOB, this, "Наименование военного округа"); + + private MilitaryDistrict(Name alias, Table aliased) { + this(alias, aliased, (Field[]) null, null); + } + + private MilitaryDistrict(Name alias, Table aliased, Field[] parameters, Condition where) { + super(alias, null, aliased, parameters, DSL.comment("Военные округа"), TableOptions.table(), where); + } + + /** + * Create an aliased space.military_district table reference + */ + public MilitaryDistrict(String alias) { + this(DSL.name(alias), MILITARY_DISTRICT); + } + + /** + * Create an aliased space.military_district table reference + */ + public MilitaryDistrict(Name alias) { + this(alias, MILITARY_DISTRICT); + } + + /** + * Create a space.military_district table reference + */ + public MilitaryDistrict() { + this(DSL.name("military_district"), null); + } + + @Override + public Schema getSchema() { + return aliased() ? null : Space.SPACE; + } + + @Override + public Identity getIdentity() { + return (Identity) super.getIdentity(); + } + + @Override + public UniqueKey getPrimaryKey() { + return Keys.MILITARY_DISTRICT_PKEY; + } + + @Override + public MilitaryDistrict as(String alias) { + return new MilitaryDistrict(DSL.name(alias), this); + } + + @Override + public MilitaryDistrict as(Name alias) { + return new MilitaryDistrict(alias, this); + } + + @Override + public MilitaryDistrict as(Table alias) { + return new MilitaryDistrict(alias.getQualifiedName(), this); + } + + /** + * Rename this table + */ + @Override + public MilitaryDistrict rename(String name) { + return new MilitaryDistrict(DSL.name(name), null); + } + + /** + * Rename this table + */ + @Override + public MilitaryDistrict rename(Name name) { + return new MilitaryDistrict(name, null); + } + + /** + * Rename this table + */ + @Override + public MilitaryDistrict rename(Table name) { + return new MilitaryDistrict(name.getQualifiedName(), null); + } + + /** + * Create an inline derived table from this table + */ + @Override + public MilitaryDistrict where(Condition condition) { + return new MilitaryDistrict(getQualifiedName(), aliased() ? this : null, null, condition); + } + + /** + * Create an inline derived table from this table + */ + @Override + public MilitaryDistrict where(Collection conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public MilitaryDistrict where(Condition... conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public MilitaryDistrict where(Field condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public MilitaryDistrict where(SQL condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public MilitaryDistrict where(@Stringly.SQL String condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public MilitaryDistrict where(@Stringly.SQL String condition, Object... binds) { + return where(DSL.condition(condition, binds)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public MilitaryDistrict where(@Stringly.SQL String condition, QueryPart... parts) { + return where(DSL.condition(condition, parts)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public MilitaryDistrict whereExists(Select select) { + return where(DSL.exists(select)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public MilitaryDistrict whereNotExists(Select select) { + return where(DSL.notExists(select)); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/space/tables/Region.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/space/tables/Region.java new file mode 100644 index 0000000..a08767c --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/space/tables/Region.java @@ -0,0 +1,320 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.space.tables; + + +import ervu_dashboard.ervu_dashboard.db_beans.appeals.tables.ReviewRating.ReviewRatingPath; +import ervu_dashboard.ervu_dashboard.db_beans.ratings.tables.AppearSubppoena.AppearSubppoenaPath; +import ervu_dashboard.ervu_dashboard.db_beans.ratings.tables.ConsiderationComplaint.ConsiderationComplaintPath; +import ervu_dashboard.ervu_dashboard.db_beans.ratings.tables.Recruitment.RecruitmentPath; +import ervu_dashboard.ervu_dashboard.db_beans.space.Keys; +import ervu_dashboard.ervu_dashboard.db_beans.space.Space; +import ervu_dashboard.ervu_dashboard.db_beans.space.tables.records.RegionRecord; + +import java.util.Collection; + +import org.jooq.Condition; +import org.jooq.Field; +import org.jooq.ForeignKey; +import org.jooq.Identity; +import org.jooq.InverseForeignKey; +import org.jooq.Name; +import org.jooq.Path; +import org.jooq.PlainSQL; +import org.jooq.QueryPart; +import org.jooq.Record; +import org.jooq.SQL; +import org.jooq.Schema; +import org.jooq.Select; +import org.jooq.Stringly; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.TableOptions; +import org.jooq.UniqueKey; +import org.jooq.impl.DSL; +import org.jooq.impl.SQLDataType; +import org.jooq.impl.TableImpl; + + +/** + * Регионы + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Region extends TableImpl { + + private static final long serialVersionUID = 1L; + + /** + * The reference instance of space.region + */ + public static final Region REGION = new Region(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return RegionRecord.class; + } + + /** + * The column space.region.id_region. + */ + public final TableField ID_REGION = createField(DSL.name("id_region"), SQLDataType.BIGINT.nullable(false).identity(true), this, ""); + + /** + * The column space.region.region. Наименование региона + */ + public final TableField REGION_ = createField(DSL.name("region"), SQLDataType.CLOB, this, "Наименование региона"); + + private Region(Name alias, Table aliased) { + this(alias, aliased, (Field[]) null, null); + } + + private Region(Name alias, Table aliased, Field[] parameters, Condition where) { + super(alias, null, aliased, parameters, DSL.comment("Регионы"), TableOptions.table(), where); + } + + /** + * Create an aliased space.region table reference + */ + public Region(String alias) { + this(DSL.name(alias), REGION); + } + + /** + * Create an aliased space.region table reference + */ + public Region(Name alias) { + this(alias, REGION); + } + + /** + * Create a space.region table reference + */ + public Region() { + this(DSL.name("region"), null); + } + + public Region(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath, REGION); + } + + /** + * A subtype implementing {@link Path} for simplified path-based joins. + */ + public static class RegionPath extends Region implements Path { + public RegionPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath); + } + private RegionPath(Name alias, Table aliased) { + super(alias, aliased); + } + + @Override + public RegionPath as(String alias) { + return new RegionPath(DSL.name(alias), this); + } + + @Override + public RegionPath as(Name alias) { + return new RegionPath(alias, this); + } + + @Override + public RegionPath as(Table alias) { + return new RegionPath(alias.getQualifiedName(), this); + } + } + + @Override + public Schema getSchema() { + return aliased() ? null : Space.SPACE; + } + + @Override + public Identity getIdentity() { + return (Identity) super.getIdentity(); + } + + @Override + public UniqueKey getPrimaryKey() { + return Keys.PK_REGION; + } + + private transient ReviewRatingPath _reviewRating; + + /** + * Get the implicit to-many join path to the + * appeals.review_rating table + */ + public ReviewRatingPath reviewRating() { + if (_reviewRating == null) + _reviewRating = new ReviewRatingPath(this, null, ervu_dashboard.ervu_dashboard.db_beans.appeals.Keys.REVIEW_RATING__FK_REGION.getInverseKey()); + + return _reviewRating; + } + + private transient AppearSubppoenaPath _appearSubppoena; + + /** + * Get the implicit to-many join path to the + * ratings.appear_subppoena table + */ + public AppearSubppoenaPath appearSubppoena() { + if (_appearSubppoena == null) + _appearSubppoena = new AppearSubppoenaPath(this, null, ervu_dashboard.ervu_dashboard.db_beans.ratings.Keys.APPEAR_SUBPPOENA__FK_REGION.getInverseKey()); + + return _appearSubppoena; + } + + private transient ConsiderationComplaintPath _considerationComplaint; + + /** + * Get the implicit to-many join path to the + * ratings.consideration_complaint table + */ + public ConsiderationComplaintPath considerationComplaint() { + if (_considerationComplaint == null) + _considerationComplaint = new ConsiderationComplaintPath(this, null, ervu_dashboard.ervu_dashboard.db_beans.ratings.Keys.CONSIDERATION_COMPLAINT__FK_REGION.getInverseKey()); + + return _considerationComplaint; + } + + private transient RecruitmentPath _recruitment; + + /** + * Get the implicit to-many join path to the + * ratings.recruitment table + */ + public RecruitmentPath recruitment() { + if (_recruitment == null) + _recruitment = new RecruitmentPath(this, null, ervu_dashboard.ervu_dashboard.db_beans.ratings.Keys.RECRUITMENT__FK_REGION.getInverseKey()); + + return _recruitment; + } + + @Override + public Region as(String alias) { + return new Region(DSL.name(alias), this); + } + + @Override + public Region as(Name alias) { + return new Region(alias, this); + } + + @Override + public Region as(Table alias) { + return new Region(alias.getQualifiedName(), this); + } + + /** + * Rename this table + */ + @Override + public Region rename(String name) { + return new Region(DSL.name(name), null); + } + + /** + * Rename this table + */ + @Override + public Region rename(Name name) { + return new Region(name, null); + } + + /** + * Rename this table + */ + @Override + public Region rename(Table name) { + return new Region(name.getQualifiedName(), null); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Region where(Condition condition) { + return new Region(getQualifiedName(), aliased() ? this : null, null, condition); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Region where(Collection conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Region where(Condition... conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Region where(Field condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Region where(SQL condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Region where(@Stringly.SQL String condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Region where(@Stringly.SQL String condition, Object... binds) { + return where(DSL.condition(condition, binds)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Region where(@Stringly.SQL String condition, QueryPart... parts) { + return where(DSL.condition(condition, parts)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Region whereExists(Select select) { + return where(DSL.exists(select)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Region whereNotExists(Select select) { + return where(DSL.notExists(select)); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/space/tables/Testrecruitment.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/space/tables/Testrecruitment.java new file mode 100644 index 0000000..1b58460 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/space/tables/Testrecruitment.java @@ -0,0 +1,223 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.space.tables; + + +import ervu_dashboard.ervu_dashboard.db_beans.space.Keys; +import ervu_dashboard.ervu_dashboard.db_beans.space.Space; +import ervu_dashboard.ervu_dashboard.db_beans.space.tables.records.TestrecruitmentRecord; + +import java.util.Collection; + +import org.jooq.Condition; +import org.jooq.Field; +import org.jooq.Name; +import org.jooq.PlainSQL; +import org.jooq.QueryPart; +import org.jooq.SQL; +import org.jooq.Schema; +import org.jooq.Select; +import org.jooq.Stringly; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.TableOptions; +import org.jooq.UniqueKey; +import org.jooq.impl.DSL; +import org.jooq.impl.SQLDataType; +import org.jooq.impl.TableImpl; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Testrecruitment extends TableImpl { + + private static final long serialVersionUID = 1L; + + /** + * The reference instance of space.testrecruitment + */ + public static final Testrecruitment TESTRECRUITMENT = new Testrecruitment(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return TestrecruitmentRecord.class; + } + + /** + * The column space.testrecruitment.id. + */ + public final TableField ID = createField(DSL.name("id"), SQLDataType.CHAR(36).nullable(false), this, ""); + + /** + * The column space.testrecruitment.name. + */ + public final TableField NAME = createField(DSL.name("name"), SQLDataType.CHAR(300), this, ""); + + private Testrecruitment(Name alias, Table aliased) { + this(alias, aliased, (Field[]) null, null); + } + + private Testrecruitment(Name alias, Table aliased, Field[] parameters, Condition where) { + super(alias, null, aliased, parameters, DSL.comment(""), TableOptions.table(), where); + } + + /** + * Create an aliased space.testrecruitment table reference + */ + public Testrecruitment(String alias) { + this(DSL.name(alias), TESTRECRUITMENT); + } + + /** + * Create an aliased space.testrecruitment table reference + */ + public Testrecruitment(Name alias) { + this(alias, TESTRECRUITMENT); + } + + /** + * Create a space.testrecruitment table reference + */ + public Testrecruitment() { + this(DSL.name("testrecruitment"), null); + } + + @Override + public Schema getSchema() { + return aliased() ? null : Space.SPACE; + } + + @Override + public UniqueKey getPrimaryKey() { + return Keys.TESTRECRUITMENT_PKEY; + } + + @Override + public Testrecruitment as(String alias) { + return new Testrecruitment(DSL.name(alias), this); + } + + @Override + public Testrecruitment as(Name alias) { + return new Testrecruitment(alias, this); + } + + @Override + public Testrecruitment as(Table alias) { + return new Testrecruitment(alias.getQualifiedName(), this); + } + + /** + * Rename this table + */ + @Override + public Testrecruitment rename(String name) { + return new Testrecruitment(DSL.name(name), null); + } + + /** + * Rename this table + */ + @Override + public Testrecruitment rename(Name name) { + return new Testrecruitment(name, null); + } + + /** + * Rename this table + */ + @Override + public Testrecruitment rename(Table name) { + return new Testrecruitment(name.getQualifiedName(), null); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Testrecruitment where(Condition condition) { + return new Testrecruitment(getQualifiedName(), aliased() ? this : null, null, condition); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Testrecruitment where(Collection conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Testrecruitment where(Condition... conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Testrecruitment where(Field condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Testrecruitment where(SQL condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Testrecruitment where(@Stringly.SQL String condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Testrecruitment where(@Stringly.SQL String condition, Object... binds) { + return where(DSL.condition(condition, binds)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Testrecruitment where(@Stringly.SQL String condition, QueryPart... parts) { + return where(DSL.condition(condition, parts)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Testrecruitment whereExists(Select select) { + return where(DSL.exists(select)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Testrecruitment whereNotExists(Select select) { + return where(DSL.notExists(select)); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/space/tables/records/MilitaryCommissariatRecord.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/space/tables/records/MilitaryCommissariatRecord.java new file mode 100644 index 0000000..eccac02 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/space/tables/records/MilitaryCommissariatRecord.java @@ -0,0 +1,85 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.space.tables.records; + + +import ervu_dashboard.ervu_dashboard.db_beans.space.tables.MilitaryCommissariat; + +import org.jooq.Record1; +import org.jooq.impl.UpdatableRecordImpl; + + +/** + * Военные комиссариаты + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class MilitaryCommissariatRecord extends UpdatableRecordImpl { + + private static final long serialVersionUID = 1L; + + /** + * Setter for + * space.military_commissariat.id_military_commissariat. + */ + public void setIdMilitaryCommissariat(Long value) { + set(0, value); + } + + /** + * Getter for + * space.military_commissariat.id_military_commissariat. + */ + public Long getIdMilitaryCommissariat() { + return (Long) get(0); + } + + /** + * Setter for + * space.military_commissariat.military_commissariat_name. + * Наименование военного комиссариата + */ + public void setMilitaryCommissariatName(String value) { + set(1, value); + } + + /** + * Getter for + * space.military_commissariat.military_commissariat_name. + * Наименование военного комиссариата + */ + public String getMilitaryCommissariatName() { + return (String) get(1); + } + + // ------------------------------------------------------------------------- + // Primary key information + // ------------------------------------------------------------------------- + + @Override + public Record1 key() { + return (Record1) super.key(); + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached MilitaryCommissariatRecord + */ + public MilitaryCommissariatRecord() { + super(MilitaryCommissariat.MILITARY_COMMISSARIAT); + } + + /** + * Create a detached, initialised MilitaryCommissariatRecord + */ + public MilitaryCommissariatRecord(Long idMilitaryCommissariat, String militaryCommissariatName) { + super(MilitaryCommissariat.MILITARY_COMMISSARIAT); + + setIdMilitaryCommissariat(idMilitaryCommissariat); + setMilitaryCommissariatName(militaryCommissariatName); + resetChangedOnNotNull(); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/space/tables/records/MilitaryDistrictRecord.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/space/tables/records/MilitaryDistrictRecord.java new file mode 100644 index 0000000..a56820a --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/space/tables/records/MilitaryDistrictRecord.java @@ -0,0 +1,81 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.space.tables.records; + + +import ervu_dashboard.ervu_dashboard.db_beans.space.tables.MilitaryDistrict; + +import org.jooq.Record1; +import org.jooq.impl.UpdatableRecordImpl; + + +/** + * Военные округа + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class MilitaryDistrictRecord extends UpdatableRecordImpl { + + private static final long serialVersionUID = 1L; + + /** + * Setter for space.military_district.id_military_district. + */ + public void setIdMilitaryDistrict(Long value) { + set(0, value); + } + + /** + * Getter for space.military_district.id_military_district. + */ + public Long getIdMilitaryDistrict() { + return (Long) get(0); + } + + /** + * Setter for space.military_district.military_district_name. + * Наименование военного округа + */ + public void setMilitaryDistrictName(String value) { + set(1, value); + } + + /** + * Getter for space.military_district.military_district_name. + * Наименование военного округа + */ + public String getMilitaryDistrictName() { + return (String) get(1); + } + + // ------------------------------------------------------------------------- + // Primary key information + // ------------------------------------------------------------------------- + + @Override + public Record1 key() { + return (Record1) super.key(); + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached MilitaryDistrictRecord + */ + public MilitaryDistrictRecord() { + super(MilitaryDistrict.MILITARY_DISTRICT); + } + + /** + * Create a detached, initialised MilitaryDistrictRecord + */ + public MilitaryDistrictRecord(Long idMilitaryDistrict, String militaryDistrictName) { + super(MilitaryDistrict.MILITARY_DISTRICT); + + setIdMilitaryDistrict(idMilitaryDistrict); + setMilitaryDistrictName(militaryDistrictName); + resetChangedOnNotNull(); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/space/tables/records/RegionRecord.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/space/tables/records/RegionRecord.java new file mode 100644 index 0000000..c1130e4 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/space/tables/records/RegionRecord.java @@ -0,0 +1,79 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.space.tables.records; + + +import ervu_dashboard.ervu_dashboard.db_beans.space.tables.Region; + +import org.jooq.Record1; +import org.jooq.impl.UpdatableRecordImpl; + + +/** + * Регионы + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class RegionRecord extends UpdatableRecordImpl { + + private static final long serialVersionUID = 1L; + + /** + * Setter for space.region.id_region. + */ + public void setIdRegion(Long value) { + set(0, value); + } + + /** + * Getter for space.region.id_region. + */ + public Long getIdRegion() { + return (Long) get(0); + } + + /** + * Setter for space.region.region. Наименование региона + */ + public void setRegion(String value) { + set(1, value); + } + + /** + * Getter for space.region.region. Наименование региона + */ + public String getRegion() { + return (String) get(1); + } + + // ------------------------------------------------------------------------- + // Primary key information + // ------------------------------------------------------------------------- + + @Override + public Record1 key() { + return (Record1) super.key(); + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached RegionRecord + */ + public RegionRecord() { + super(Region.REGION); + } + + /** + * Create a detached, initialised RegionRecord + */ + public RegionRecord(Long idRegion, String region) { + super(Region.REGION); + + setIdRegion(idRegion); + setRegion(region); + resetChangedOnNotNull(); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/space/tables/records/TestrecruitmentRecord.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/space/tables/records/TestrecruitmentRecord.java new file mode 100644 index 0000000..3746d9a --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/space/tables/records/TestrecruitmentRecord.java @@ -0,0 +1,79 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.space.tables.records; + + +import ervu_dashboard.ervu_dashboard.db_beans.space.tables.Testrecruitment; + +import org.jooq.Record1; +import org.jooq.impl.UpdatableRecordImpl; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class TestrecruitmentRecord extends UpdatableRecordImpl { + + private static final long serialVersionUID = 1L; + + /** + * Setter for space.testrecruitment.id. + */ + public void setId(String value) { + set(0, value); + } + + /** + * Getter for space.testrecruitment.id. + */ + public String getId() { + return (String) get(0); + } + + /** + * Setter for space.testrecruitment.name. + */ + public void setName(String value) { + set(1, value); + } + + /** + * Getter for space.testrecruitment.name. + */ + public String getName() { + return (String) get(1); + } + + // ------------------------------------------------------------------------- + // Primary key information + // ------------------------------------------------------------------------- + + @Override + public Record1 key() { + return (Record1) super.key(); + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached TestrecruitmentRecord + */ + public TestrecruitmentRecord() { + super(Testrecruitment.TESTRECRUITMENT); + } + + /** + * Create a detached, initialised TestrecruitmentRecord + */ + public TestrecruitmentRecord(String id, String name) { + super(Testrecruitment.TESTRECRUITMENT); + + setId(id); + setName(name); + resetChangedOnNotNull(); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/total_registered/Keys.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/total_registered/Keys.java new file mode 100644 index 0000000..d7b38ab --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/total_registered/Keys.java @@ -0,0 +1,69 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.total_registered; + + +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.PubRecruitment; +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.records.PubRecruitmentRecord; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.Age; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.Busyness; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.ChildMinor; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.DriverLicense; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.EducationLevel; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.MaritalStatus; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.RegMilCat; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.RemovedRegistry; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.Subpoenas; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.records.AgeRecord; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.records.BusynessRecord; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.records.ChildMinorRecord; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.records.DriverLicenseRecord; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.records.EducationLevelRecord; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.records.MaritalStatusRecord; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.records.RegMilCatRecord; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.records.RemovedRegistryRecord; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.records.SubpoenasRecord; + +import org.jooq.ForeignKey; +import org.jooq.TableField; +import org.jooq.UniqueKey; +import org.jooq.impl.DSL; +import org.jooq.impl.Internal; + + +/** + * A class modelling foreign key relationships and constraints of tables in + * total_registered. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Keys { + + // ------------------------------------------------------------------------- + // UNIQUE and PRIMARY KEY definitions + // ------------------------------------------------------------------------- + + public static final UniqueKey PK_AGE = Internal.createUniqueKey(Age.AGE, DSL.name("pk_age"), new TableField[] { Age.AGE.ID_AGE }, true); + public static final UniqueKey PK_BUSYNESS = Internal.createUniqueKey(Busyness.BUSYNESS, DSL.name("pk_busyness"), new TableField[] { Busyness.BUSYNESS.ID_BUSYNESS }, true); + public static final UniqueKey PK_CHILD_MINOR = Internal.createUniqueKey(ChildMinor.CHILD_MINOR, DSL.name("pk_child_minor"), new TableField[] { ChildMinor.CHILD_MINOR.ID_CHILD_MINOR }, true); + public static final UniqueKey PK_DRIVER_LICENSE = Internal.createUniqueKey(DriverLicense.DRIVER_LICENSE, DSL.name("pk_driver_license"), new TableField[] { DriverLicense.DRIVER_LICENSE.ID_DRIVER_LICENSE }, true); + public static final UniqueKey PK_EDUCATION_LEVEL = Internal.createUniqueKey(EducationLevel.EDUCATION_LEVEL, DSL.name("pk_education_level"), new TableField[] { EducationLevel.EDUCATION_LEVEL.ID_EDUCATION_LEVEL }, true); + public static final UniqueKey PK_MARITAL_STATUS = Internal.createUniqueKey(MaritalStatus.MARITAL_STATUS, DSL.name("pk_marital_status"), new TableField[] { MaritalStatus.MARITAL_STATUS.ID_MARITAL_STATUS }, true); + public static final UniqueKey PK_REG_MIL_CAT = Internal.createUniqueKey(RegMilCat.REG_MIL_CAT, DSL.name("pk_reg_mil_cat"), new TableField[] { RegMilCat.REG_MIL_CAT.ID_REG_MIL_CAT }, true); + public static final UniqueKey REMOVED_REGISTRY_PKEY = Internal.createUniqueKey(RemovedRegistry.REMOVED_REGISTRY, DSL.name("removed_registry_pkey"), new TableField[] { RemovedRegistry.REMOVED_REGISTRY.ID_REMOVED_REGISTRY }, true); + public static final UniqueKey PK_SUBPOENA = Internal.createUniqueKey(Subpoenas.SUBPOENAS, DSL.name("pk_subpoena"), new TableField[] { Subpoenas.SUBPOENAS.ID_SUBPOENA }, true); + + // ------------------------------------------------------------------------- + // FOREIGN KEY definitions + // ------------------------------------------------------------------------- + + public static final ForeignKey AGE__AGE_FK1 = Internal.createForeignKey(Age.AGE, DSL.name("age_fk1"), new TableField[] { Age.AGE.RECRUITMENT_ID }, ervu_dashboard.ervu_dashboard.db_beans.public_.Keys.RECRUITMENT_PKEY, new TableField[] { PubRecruitment.PUB_RECRUITMENT.ID }, true); + public static final ForeignKey BUSYNESS__BUSYNESS_FK1 = Internal.createForeignKey(Busyness.BUSYNESS, DSL.name("busyness_fk1"), new TableField[] { Busyness.BUSYNESS.RECRUITMENT_ID }, ervu_dashboard.ervu_dashboard.db_beans.public_.Keys.RECRUITMENT_PKEY, new TableField[] { PubRecruitment.PUB_RECRUITMENT.ID }, true); + public static final ForeignKey CHILD_MINOR__CHILD_MINOR_FK1 = Internal.createForeignKey(ChildMinor.CHILD_MINOR, DSL.name("child_minor_fk1"), new TableField[] { ChildMinor.CHILD_MINOR.RECRUITMENT_ID }, ervu_dashboard.ervu_dashboard.db_beans.public_.Keys.RECRUITMENT_PKEY, new TableField[] { PubRecruitment.PUB_RECRUITMENT.ID }, true); + public static final ForeignKey DRIVER_LICENSE__DRIVER_LICENSE_FK1 = Internal.createForeignKey(DriverLicense.DRIVER_LICENSE, DSL.name("driver_license_fk1"), new TableField[] { DriverLicense.DRIVER_LICENSE.RECRUITMENT_ID }, ervu_dashboard.ervu_dashboard.db_beans.public_.Keys.RECRUITMENT_PKEY, new TableField[] { PubRecruitment.PUB_RECRUITMENT.ID }, true); + public static final ForeignKey EDUCATION_LEVEL__EDUCATION_LEVEL_FK1 = Internal.createForeignKey(EducationLevel.EDUCATION_LEVEL, DSL.name("education_level_fk1"), new TableField[] { EducationLevel.EDUCATION_LEVEL.RECRUITMENT_ID }, ervu_dashboard.ervu_dashboard.db_beans.public_.Keys.RECRUITMENT_PKEY, new TableField[] { PubRecruitment.PUB_RECRUITMENT.ID }, true); + public static final ForeignKey MARITAL_STATUS__MARITAL_STATUS_FK1 = Internal.createForeignKey(MaritalStatus.MARITAL_STATUS, DSL.name("marital_status_fk1"), new TableField[] { MaritalStatus.MARITAL_STATUS.RECRUITMENT_ID }, ervu_dashboard.ervu_dashboard.db_beans.public_.Keys.RECRUITMENT_PKEY, new TableField[] { PubRecruitment.PUB_RECRUITMENT.ID }, true); + public static final ForeignKey REG_MIL_CAT__REG_MIL_CAT_FK1 = Internal.createForeignKey(RegMilCat.REG_MIL_CAT, DSL.name("reg_mil_cat_fk1"), new TableField[] { RegMilCat.REG_MIL_CAT.RECRUITMENT_ID }, ervu_dashboard.ervu_dashboard.db_beans.public_.Keys.RECRUITMENT_PKEY, new TableField[] { PubRecruitment.PUB_RECRUITMENT.ID }, true); + public static final ForeignKey REMOVED_REGISTRY__REMOVED_REGISTRY_FK1 = Internal.createForeignKey(RemovedRegistry.REMOVED_REGISTRY, DSL.name("removed_registry_fk1"), new TableField[] { RemovedRegistry.REMOVED_REGISTRY.RECRUITMENT_ID }, ervu_dashboard.ervu_dashboard.db_beans.public_.Keys.RECRUITMENT_PKEY, new TableField[] { PubRecruitment.PUB_RECRUITMENT.ID }, true); + public static final ForeignKey SUBPOENAS__TR_SUBPOENAS_FK1 = Internal.createForeignKey(Subpoenas.SUBPOENAS, DSL.name("tr_subpoenas_fk1"), new TableField[] { Subpoenas.SUBPOENAS.RECRUITMENT_ID }, ervu_dashboard.ervu_dashboard.db_beans.public_.Keys.RECRUITMENT_PKEY, new TableField[] { PubRecruitment.PUB_RECRUITMENT.ID }, true); +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/total_registered/Tables.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/total_registered/Tables.java new file mode 100644 index 0000000..afc12e9 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/total_registered/Tables.java @@ -0,0 +1,73 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.total_registered; + + +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.Age; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.Busyness; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.ChildMinor; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.DriverLicense; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.EducationLevel; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.MaritalStatus; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.RegMilCat; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.RemovedRegistry; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.Subpoenas; + + +/** + * Convenience access to all tables in total_registered. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Tables { + + /** + * Возраст состоящих/не состоящих, мужчин/женщин/всех на учете уровень РФ + */ + public static final Age AGE = Age.AGE; + + /** + * Занятость состоящих/не состоящих, мужчин/женщин/всех на учете уровень РФ + */ + public static final Busyness BUSYNESS = Busyness.BUSYNESS; + + /** + * Дети то 18 лет состоящих/не состоящих, мужчин/женщин/всех на учете + * уровень РФ + */ + public static final ChildMinor CHILD_MINOR = ChildMinor.CHILD_MINOR; + + /** + * Наличие водительского удостоверения состоящих/не состоящих, + * мужчин/женщин/всех на учете уровень РФ + */ + public static final DriverLicense DRIVER_LICENSE = DriverLicense.DRIVER_LICENSE; + + /** + * Уровень образования состоящих/не состоящих, мужчин/женщин/всех на учете + * уровень РФ + */ + public static final EducationLevel EDUCATION_LEVEL = EducationLevel.EDUCATION_LEVEL; + + /** + * Семейное положение состоящих/не состоящих, мужчин/женщин/всех на учете + * уровень РФ + */ + public static final MaritalStatus MARITAL_STATUS = MaritalStatus.MARITAL_STATUS; + + /** + * Категории постановки на воинский учет состоящих/не состоящих на учете + * уровень РФ + */ + public static final RegMilCat REG_MIL_CAT = RegMilCat.REG_MIL_CAT; + + /** + * Снято с учета уровень РФ + */ + public static final RemovedRegistry REMOVED_REGISTRY = RemovedRegistry.REMOVED_REGISTRY; + + /** + * Повестки состоящих/не состоящих на учете уровень РФ + */ + public static final Subpoenas SUBPOENAS = Subpoenas.SUBPOENAS; +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/total_registered/TotalRegistered.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/total_registered/TotalRegistered.java new file mode 100644 index 0000000..9a06c96 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/total_registered/TotalRegistered.java @@ -0,0 +1,116 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.total_registered; + + +import ervu_dashboard.ervu_dashboard.db_beans.DefaultCatalog; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.Age; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.Busyness; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.ChildMinor; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.DriverLicense; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.EducationLevel; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.MaritalStatus; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.RegMilCat; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.RemovedRegistry; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.Subpoenas; + +import java.util.Arrays; +import java.util.List; + +import org.jooq.Catalog; +import org.jooq.Table; +import org.jooq.impl.SchemaImpl; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class TotalRegistered extends SchemaImpl { + + private static final long serialVersionUID = 1L; + + /** + * The reference instance of total_registered + */ + public static final TotalRegistered TOTAL_REGISTERED = new TotalRegistered(); + + /** + * Возраст состоящих/не состоящих, мужчин/женщин/всех на учете уровень РФ + */ + public final Age AGE = Age.AGE; + + /** + * Занятость состоящих/не состоящих, мужчин/женщин/всех на учете уровень РФ + */ + public final Busyness BUSYNESS = Busyness.BUSYNESS; + + /** + * Дети то 18 лет состоящих/не состоящих, мужчин/женщин/всех на учете + * уровень РФ + */ + public final ChildMinor CHILD_MINOR = ChildMinor.CHILD_MINOR; + + /** + * Наличие водительского удостоверения состоящих/не состоящих, + * мужчин/женщин/всех на учете уровень РФ + */ + public final DriverLicense DRIVER_LICENSE = DriverLicense.DRIVER_LICENSE; + + /** + * Уровень образования состоящих/не состоящих, мужчин/женщин/всех на учете + * уровень РФ + */ + public final EducationLevel EDUCATION_LEVEL = EducationLevel.EDUCATION_LEVEL; + + /** + * Семейное положение состоящих/не состоящих, мужчин/женщин/всех на учете + * уровень РФ + */ + public final MaritalStatus MARITAL_STATUS = MaritalStatus.MARITAL_STATUS; + + /** + * Категории постановки на воинский учет состоящих/не состоящих на учете + * уровень РФ + */ + public final RegMilCat REG_MIL_CAT = RegMilCat.REG_MIL_CAT; + + /** + * Снято с учета уровень РФ + */ + public final RemovedRegistry REMOVED_REGISTRY = RemovedRegistry.REMOVED_REGISTRY; + + /** + * Повестки состоящих/не состоящих на учете уровень РФ + */ + public final Subpoenas SUBPOENAS = Subpoenas.SUBPOENAS; + + /** + * No further instances allowed + */ + private TotalRegistered() { + super("total_registered", null); + } + + + @Override + public Catalog getCatalog() { + return DefaultCatalog.DEFAULT_CATALOG; + } + + @Override + public final List> getTables() { + return Arrays.asList( + Age.AGE, + Busyness.BUSYNESS, + ChildMinor.CHILD_MINOR, + DriverLicense.DRIVER_LICENSE, + EducationLevel.EDUCATION_LEVEL, + MaritalStatus.MARITAL_STATUS, + RegMilCat.REG_MIL_CAT, + RemovedRegistry.REMOVED_REGISTRY, + Subpoenas.SUBPOENAS + ); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/total_registered/tables/Age.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/total_registered/tables/Age.java new file mode 100644 index 0000000..bdf1456 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/total_registered/tables/Age.java @@ -0,0 +1,392 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables; + + +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.PubRecruitment.PubRecruitmentPath; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.Keys; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.TotalRegistered; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.records.AgeRecord; + +import java.math.BigDecimal; +import java.sql.Date; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; +import java.util.UUID; + +import org.jooq.Condition; +import org.jooq.Field; +import org.jooq.ForeignKey; +import org.jooq.Identity; +import org.jooq.InverseForeignKey; +import org.jooq.Name; +import org.jooq.Path; +import org.jooq.PlainSQL; +import org.jooq.QueryPart; +import org.jooq.Record; +import org.jooq.SQL; +import org.jooq.Schema; +import org.jooq.Select; +import org.jooq.Stringly; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.TableOptions; +import org.jooq.UniqueKey; +import org.jooq.impl.DSL; +import org.jooq.impl.SQLDataType; +import org.jooq.impl.TableImpl; + + +/** + * Возраст состоящих/не состоящих, мужчин/женщин/всех на учете уровень РФ + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Age extends TableImpl { + + private static final long serialVersionUID = 1L; + + /** + * The reference instance of total_registered.age + */ + public static final Age AGE = new Age(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return AgeRecord.class; + } + + /** + * The column total_registered.age.id_age. + */ + public final TableField ID_AGE = createField(DSL.name("id_age"), SQLDataType.BIGINT.nullable(false).identity(true), this, ""); + + /** + * The column total_registered.age.17_yaers. Возраст 17 + */ + public final TableField _17_YAERS = createField(DSL.name("17_yaers"), SQLDataType.NUMERIC, this, "Возраст 17"); + + /** + * The column total_registered.age.18-26_years. Возраст 18-26 + */ + public final TableField _18_26_YEARS = createField(DSL.name("18-26_years"), SQLDataType.NUMERIC, this, "Возраст 18-26"); + + /** + * The column total_registered.age.27-30_years. Возраст 27-30 + */ + public final TableField _27_30_YEARS = createField(DSL.name("27-30_years"), SQLDataType.NUMERIC, this, "Возраст 27-30"); + + /** + * The column total_registered.age.31-35_years. Возраст 31-35 + */ + public final TableField _31_35_YEARS = createField(DSL.name("31-35_years"), SQLDataType.NUMERIC, this, "Возраст 31-35"); + + /** + * The column total_registered.age.36-40_years. Возраст 36-40 + */ + public final TableField _36_40_YEARS = createField(DSL.name("36-40_years"), SQLDataType.NUMERIC, this, "Возраст 36-40"); + + /** + * The column total_registered.age.41-45_years. Возраст 41-45 + */ + public final TableField _41_45_YEARS = createField(DSL.name("41-45_years"), SQLDataType.NUMERIC, this, "Возраст 41-45"); + + /** + * The column total_registered.age.51+_years. Возраст 51+ + */ + public final TableField _51_2b_YEARS = createField(DSL.name("51+_years"), SQLDataType.NUMERIC, this, "Возраст 51+"); + + /** + * The column total_registered.age.all_M_W. Все/мужчины/женщины + */ + public final TableField ALL_M_W = createField(DSL.name("all_M_W"), SQLDataType.CLOB, this, "Все/мужчины/женщины"); + + /** + * The column total_registered.age.registered. Состоит на учете + * или нет + */ + public final TableField REGISTERED = createField(DSL.name("registered"), SQLDataType.BOOLEAN, this, "Состоит на учете или нет"); + + /** + * The column total_registered.age.recording_date. Дата записи + */ + public final TableField RECORDING_DATE = createField(DSL.name("recording_date"), SQLDataType.DATE, this, "Дата записи"); + + /** + * The column total_registered.age.46-50_years. Возраст 46-50 + */ + public final TableField _46_50_YEARS = createField(DSL.name("46-50_years"), SQLDataType.NUMERIC, this, "Возраст 46-50"); + + /** + * The column total_registered.age.17_yaers_percent. Возраст 17 + * в процентах + */ + public final TableField _17_YAERS_PERCENT = createField(DSL.name("17_yaers_percent"), SQLDataType.NUMERIC, this, "Возраст 17 в процентах"); + + /** + * The column total_registered.age.18-26_years_percent. Возраст + * 18-26 в процентах + */ + public final TableField _18_26_YEARS_PERCENT = createField(DSL.name("18-26_years_percent"), SQLDataType.NUMERIC, this, "Возраст 18-26 в процентах"); + + /** + * The column total_registered.age.27-30_years_percent. Возраст + * 27-30 в процентах + */ + public final TableField _27_30_YEARS_PERCENT = createField(DSL.name("27-30_years_percent"), SQLDataType.NUMERIC, this, "Возраст 27-30 в процентах"); + + /** + * The column total_registered.age.31-35_years_percent. Возраст + * 31-35 в процентах + */ + public final TableField _31_35_YEARS_PERCENT = createField(DSL.name("31-35_years_percent"), SQLDataType.NUMERIC, this, "Возраст 31-35 в процентах"); + + /** + * The column total_registered.age.36-40_years_percent. Возраст + * 36-40 в процентах + */ + public final TableField _36_40_YEARS_PERCENT = createField(DSL.name("36-40_years_percent"), SQLDataType.NUMERIC, this, "Возраст 36-40 в процентах"); + + /** + * The column total_registered.age.41-45_years_percent. Возраст + * 41-45 в процентах + */ + public final TableField _41_45_YEARS_PERCENT = createField(DSL.name("41-45_years_percent"), SQLDataType.NUMERIC, this, "Возраст 41-45 в процентах"); + + /** + * The column total_registered.age.46-50_years_percent. Возраст + * 46-50 в процентах + */ + public final TableField _46_50_YEARS_PERCENT = createField(DSL.name("46-50_years_percent"), SQLDataType.NUMERIC, this, "Возраст 46-50 в процентах"); + + /** + * The column total_registered.age.51+_years_percent. Возраст + * 51+ в процентах + */ + public final TableField _51_2b_YEARS_PERCENT = createField(DSL.name("51+_years_percent"), SQLDataType.NUMERIC, this, "Возраст 51+ в процентах"); + + /** + * The column total_registered.age.recruitment_id. + */ + public final TableField RECRUITMENT_ID = createField(DSL.name("recruitment_id"), SQLDataType.UUID, this, ""); + + private Age(Name alias, Table aliased) { + this(alias, aliased, (Field[]) null, null); + } + + private Age(Name alias, Table aliased, Field[] parameters, Condition where) { + super(alias, null, aliased, parameters, DSL.comment("Возраст состоящих/не состоящих, мужчин/женщин/всех на учете уровень РФ"), TableOptions.table(), where); + } + + /** + * Create an aliased total_registered.age table reference + */ + public Age(String alias) { + this(DSL.name(alias), AGE); + } + + /** + * Create an aliased total_registered.age table reference + */ + public Age(Name alias) { + this(alias, AGE); + } + + /** + * Create a total_registered.age table reference + */ + public Age() { + this(DSL.name("age"), null); + } + + public Age(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath, AGE); + } + + /** + * A subtype implementing {@link Path} for simplified path-based joins. + */ + public static class AgePath extends Age implements Path { + public AgePath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath); + } + private AgePath(Name alias, Table aliased) { + super(alias, aliased); + } + + @Override + public AgePath as(String alias) { + return new AgePath(DSL.name(alias), this); + } + + @Override + public AgePath as(Name alias) { + return new AgePath(alias, this); + } + + @Override + public AgePath as(Table alias) { + return new AgePath(alias.getQualifiedName(), this); + } + } + + @Override + public Schema getSchema() { + return aliased() ? null : TotalRegistered.TOTAL_REGISTERED; + } + + @Override + public Identity getIdentity() { + return (Identity) super.getIdentity(); + } + + @Override + public UniqueKey getPrimaryKey() { + return Keys.PK_AGE; + } + + @Override + public List> getReferences() { + return Arrays.asList(Keys.AGE__AGE_FK1); + } + + private transient PubRecruitmentPath _pubRecruitment; + + /** + * Get the implicit join path to the public.pub_recruitment + * table. + */ + public PubRecruitmentPath pubRecruitment() { + if (_pubRecruitment == null) + _pubRecruitment = new PubRecruitmentPath(this, Keys.AGE__AGE_FK1, null); + + return _pubRecruitment; + } + + @Override + public Age as(String alias) { + return new Age(DSL.name(alias), this); + } + + @Override + public Age as(Name alias) { + return new Age(alias, this); + } + + @Override + public Age as(Table alias) { + return new Age(alias.getQualifiedName(), this); + } + + /** + * Rename this table + */ + @Override + public Age rename(String name) { + return new Age(DSL.name(name), null); + } + + /** + * Rename this table + */ + @Override + public Age rename(Name name) { + return new Age(name, null); + } + + /** + * Rename this table + */ + @Override + public Age rename(Table name) { + return new Age(name.getQualifiedName(), null); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Age where(Condition condition) { + return new Age(getQualifiedName(), aliased() ? this : null, null, condition); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Age where(Collection conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Age where(Condition... conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Age where(Field condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Age where(SQL condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Age where(@Stringly.SQL String condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Age where(@Stringly.SQL String condition, Object... binds) { + return where(DSL.condition(condition, binds)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Age where(@Stringly.SQL String condition, QueryPart... parts) { + return where(DSL.condition(condition, parts)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Age whereExists(Select select) { + return where(DSL.exists(select)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Age whereNotExists(Select select) { + return where(DSL.notExists(select)); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/total_registered/tables/Busyness.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/total_registered/tables/Busyness.java new file mode 100644 index 0000000..2912698 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/total_registered/tables/Busyness.java @@ -0,0 +1,339 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables; + + +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.PubRecruitment.PubRecruitmentPath; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.Keys; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.TotalRegistered; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.records.BusynessRecord; + +import java.math.BigDecimal; +import java.sql.Date; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; +import java.util.UUID; + +import org.jooq.Condition; +import org.jooq.Field; +import org.jooq.ForeignKey; +import org.jooq.Identity; +import org.jooq.InverseForeignKey; +import org.jooq.Name; +import org.jooq.Path; +import org.jooq.PlainSQL; +import org.jooq.QueryPart; +import org.jooq.Record; +import org.jooq.SQL; +import org.jooq.Schema; +import org.jooq.Select; +import org.jooq.Stringly; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.TableOptions; +import org.jooq.UniqueKey; +import org.jooq.impl.DSL; +import org.jooq.impl.SQLDataType; +import org.jooq.impl.TableImpl; + + +/** + * Занятость состоящих/не состоящих, мужчин/женщин/всех на учете уровень РФ + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Busyness extends TableImpl { + + private static final long serialVersionUID = 1L; + + /** + * The reference instance of total_registered.busyness + */ + public static final Busyness BUSYNESS = new Busyness(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return BusynessRecord.class; + } + + /** + * The column total_registered.busyness.id_busyness. + */ + public final TableField ID_BUSYNESS = createField(DSL.name("id_busyness"), SQLDataType.BIGINT.nullable(false).identity(true), this, ""); + + /** + * The column total_registered.busyness.study. Учатся + */ + public final TableField STUDY = createField(DSL.name("study"), SQLDataType.NUMERIC, this, "Учатся"); + + /** + * The column total_registered.busyness.work. Работают + */ + public final TableField WORK = createField(DSL.name("work"), SQLDataType.NUMERIC, this, "Работают"); + + /** + * The column total_registered.busyness.not_work. Безработные + */ + public final TableField NOT_WORK = createField(DSL.name("not_work"), SQLDataType.NUMERIC, this, "Безработные"); + + /** + * The column total_registered.busyness.all_M_W. + * Все/Мужчины/Женщины + */ + public final TableField ALL_M_W = createField(DSL.name("all_M_W"), SQLDataType.CLOB, this, "Все/Мужчины/Женщины"); + + /** + * The column total_registered.busyness.registered. Состоит на + * учете/не состоит + */ + public final TableField REGISTERED = createField(DSL.name("registered"), SQLDataType.BOOLEAN, this, "Состоит на учете/не состоит"); + + /** + * The column total_registered.busyness.recording_date. Дата + * записи + */ + public final TableField RECORDING_DATE = createField(DSL.name("recording_date"), SQLDataType.DATE.defaultValue(DSL.field(DSL.raw("now()"), SQLDataType.DATE)), this, "Дата записи"); + + /** + * The column total_registered.busyness.study_percent. Учатся в + * процентах + */ + public final TableField STUDY_PERCENT = createField(DSL.name("study_percent"), SQLDataType.NUMERIC, this, "Учатся в процентах"); + + /** + * The column total_registered.busyness.work_percent. Работают + * в процентах + */ + public final TableField WORK_PERCENT = createField(DSL.name("work_percent"), SQLDataType.NUMERIC, this, "Работают в процентах"); + + /** + * The column total_registered.busyness.not_work_percent. + * Безработные в процентах + */ + public final TableField NOT_WORK_PERCENT = createField(DSL.name("not_work_percent"), SQLDataType.NUMERIC, this, "Безработные в процентах"); + + /** + * The column total_registered.busyness.recruitment_id. + */ + public final TableField RECRUITMENT_ID = createField(DSL.name("recruitment_id"), SQLDataType.UUID, this, ""); + + private Busyness(Name alias, Table aliased) { + this(alias, aliased, (Field[]) null, null); + } + + private Busyness(Name alias, Table aliased, Field[] parameters, Condition where) { + super(alias, null, aliased, parameters, DSL.comment("Занятость состоящих/не состоящих, мужчин/женщин/всех на учете уровень РФ"), TableOptions.table(), where); + } + + /** + * Create an aliased total_registered.busyness table reference + */ + public Busyness(String alias) { + this(DSL.name(alias), BUSYNESS); + } + + /** + * Create an aliased total_registered.busyness table reference + */ + public Busyness(Name alias) { + this(alias, BUSYNESS); + } + + /** + * Create a total_registered.busyness table reference + */ + public Busyness() { + this(DSL.name("busyness"), null); + } + + public Busyness(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath, BUSYNESS); + } + + /** + * A subtype implementing {@link Path} for simplified path-based joins. + */ + public static class BusynessPath extends Busyness implements Path { + public BusynessPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath); + } + private BusynessPath(Name alias, Table aliased) { + super(alias, aliased); + } + + @Override + public BusynessPath as(String alias) { + return new BusynessPath(DSL.name(alias), this); + } + + @Override + public BusynessPath as(Name alias) { + return new BusynessPath(alias, this); + } + + @Override + public BusynessPath as(Table alias) { + return new BusynessPath(alias.getQualifiedName(), this); + } + } + + @Override + public Schema getSchema() { + return aliased() ? null : TotalRegistered.TOTAL_REGISTERED; + } + + @Override + public Identity getIdentity() { + return (Identity) super.getIdentity(); + } + + @Override + public UniqueKey getPrimaryKey() { + return Keys.PK_BUSYNESS; + } + + @Override + public List> getReferences() { + return Arrays.asList(Keys.BUSYNESS__BUSYNESS_FK1); + } + + private transient PubRecruitmentPath _pubRecruitment; + + /** + * Get the implicit join path to the public.pub_recruitment + * table. + */ + public PubRecruitmentPath pubRecruitment() { + if (_pubRecruitment == null) + _pubRecruitment = new PubRecruitmentPath(this, Keys.BUSYNESS__BUSYNESS_FK1, null); + + return _pubRecruitment; + } + + @Override + public Busyness as(String alias) { + return new Busyness(DSL.name(alias), this); + } + + @Override + public Busyness as(Name alias) { + return new Busyness(alias, this); + } + + @Override + public Busyness as(Table alias) { + return new Busyness(alias.getQualifiedName(), this); + } + + /** + * Rename this table + */ + @Override + public Busyness rename(String name) { + return new Busyness(DSL.name(name), null); + } + + /** + * Rename this table + */ + @Override + public Busyness rename(Name name) { + return new Busyness(name, null); + } + + /** + * Rename this table + */ + @Override + public Busyness rename(Table name) { + return new Busyness(name.getQualifiedName(), null); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Busyness where(Condition condition) { + return new Busyness(getQualifiedName(), aliased() ? this : null, null, condition); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Busyness where(Collection conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Busyness where(Condition... conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Busyness where(Field condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Busyness where(SQL condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Busyness where(@Stringly.SQL String condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Busyness where(@Stringly.SQL String condition, Object... binds) { + return where(DSL.condition(condition, binds)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Busyness where(@Stringly.SQL String condition, QueryPart... parts) { + return where(DSL.condition(condition, parts)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Busyness whereExists(Select select) { + return where(DSL.exists(select)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Busyness whereNotExists(Select select) { + return where(DSL.notExists(select)); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/total_registered/tables/ChildMinor.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/total_registered/tables/ChildMinor.java new file mode 100644 index 0000000..a500b72 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/total_registered/tables/ChildMinor.java @@ -0,0 +1,359 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables; + + +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.PubRecruitment.PubRecruitmentPath; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.Keys; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.TotalRegistered; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.records.ChildMinorRecord; + +import java.math.BigDecimal; +import java.sql.Date; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; +import java.util.UUID; + +import org.jooq.Condition; +import org.jooq.Field; +import org.jooq.ForeignKey; +import org.jooq.Identity; +import org.jooq.InverseForeignKey; +import org.jooq.Name; +import org.jooq.Path; +import org.jooq.PlainSQL; +import org.jooq.QueryPart; +import org.jooq.Record; +import org.jooq.SQL; +import org.jooq.Schema; +import org.jooq.Select; +import org.jooq.Stringly; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.TableOptions; +import org.jooq.UniqueKey; +import org.jooq.impl.DSL; +import org.jooq.impl.SQLDataType; +import org.jooq.impl.TableImpl; + + +/** + * Дети то 18 лет состоящих/не состоящих, мужчин/женщин/всех на учете уровень РФ + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class ChildMinor extends TableImpl { + + private static final long serialVersionUID = 1L; + + /** + * The reference instance of total_registered.child_minor + */ + public static final ChildMinor CHILD_MINOR = new ChildMinor(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return ChildMinorRecord.class; + } + + /** + * The column total_registered.child_minor.id_child_minor. + */ + public final TableField ID_CHILD_MINOR = createField(DSL.name("id_child_minor"), SQLDataType.BIGINT.nullable(false).identity(true), this, ""); + + /** + * The column total_registered.child_minor.no_child. Нет детей + */ + public final TableField NO_CHILD = createField(DSL.name("no_child"), SQLDataType.NUMERIC, this, "Нет детей"); + + /** + * The column total_registered.child_minor.1_child. 1 ребенок + */ + public final TableField _1_CHILD = createField(DSL.name("1_child"), SQLDataType.NUMERIC, this, "1 ребенок"); + + /** + * The column total_registered.child_minor.2_child. 2 ребенка + */ + public final TableField _2_CHILD = createField(DSL.name("2_child"), SQLDataType.NUMERIC, this, "2 ребенка"); + + /** + * The column total_registered.child_minor.3_child. 3 ребенка + */ + public final TableField _3_CHILD = createField(DSL.name("3_child"), SQLDataType.NUMERIC, this, "3 ребенка"); + + /** + * The column total_registered.child_minor.4_more_child. 4 и + * более + */ + public final TableField _4_MORE_CHILD = createField(DSL.name("4_more_child"), SQLDataType.NUMERIC, this, "4 и более"); + + /** + * The column total_registered.child_minor.all_M_W. + * Все/Мужчины/Женщины + */ + public final TableField ALL_M_W = createField(DSL.name("all_M_W"), SQLDataType.CLOB, this, "Все/Мужчины/Женщины"); + + /** + * The column total_registered.child_minor.recording_date. Дата + * записи + */ + public final TableField RECORDING_DATE = createField(DSL.name("recording_date"), SQLDataType.DATE, this, "Дата записи"); + + /** + * The column total_registered.child_minor.no_child_percent. + * Нет детей в процентах + */ + public final TableField NO_CHILD_PERCENT = createField(DSL.name("no_child_percent"), SQLDataType.NUMERIC, this, "Нет детей в процентах"); + + /** + * The column total_registered.child_minor.1_child_percent. 1 + * ребенок в процентах + */ + public final TableField _1_CHILD_PERCENT = createField(DSL.name("1_child_percent"), SQLDataType.NUMERIC, this, "1 ребенок в процентах"); + + /** + * The column total_registered.child_minor.2_child_percent. 2 + * ребенка в процентах + */ + public final TableField _2_CHILD_PERCENT = createField(DSL.name("2_child_percent"), SQLDataType.NUMERIC, this, "2 ребенка в процентах"); + + /** + * The column total_registered.child_minor.3_child_percent. 3 + * ребенка в процентах + */ + public final TableField _3_CHILD_PERCENT = createField(DSL.name("3_child_percent"), SQLDataType.NUMERIC, this, "3 ребенка в процентах"); + + /** + * The column + * total_registered.child_minor.4_more_child_percent. 4 и более + * ребенка в процентах + */ + public final TableField _4_MORE_CHILD_PERCENT = createField(DSL.name("4_more_child_percent"), SQLDataType.NUMERIC, this, "4 и более ребенка в процентах"); + + /** + * The column total_registered.child_minor.recruitment_id. + */ + public final TableField RECRUITMENT_ID = createField(DSL.name("recruitment_id"), SQLDataType.UUID, this, ""); + + private ChildMinor(Name alias, Table aliased) { + this(alias, aliased, (Field[]) null, null); + } + + private ChildMinor(Name alias, Table aliased, Field[] parameters, Condition where) { + super(alias, null, aliased, parameters, DSL.comment("Дети то 18 лет состоящих/не состоящих, мужчин/женщин/всех на учете уровень РФ"), TableOptions.table(), where); + } + + /** + * Create an aliased total_registered.child_minor table + * reference + */ + public ChildMinor(String alias) { + this(DSL.name(alias), CHILD_MINOR); + } + + /** + * Create an aliased total_registered.child_minor table + * reference + */ + public ChildMinor(Name alias) { + this(alias, CHILD_MINOR); + } + + /** + * Create a total_registered.child_minor table reference + */ + public ChildMinor() { + this(DSL.name("child_minor"), null); + } + + public ChildMinor(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath, CHILD_MINOR); + } + + /** + * A subtype implementing {@link Path} for simplified path-based joins. + */ + public static class ChildMinorPath extends ChildMinor implements Path { + public ChildMinorPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath); + } + private ChildMinorPath(Name alias, Table aliased) { + super(alias, aliased); + } + + @Override + public ChildMinorPath as(String alias) { + return new ChildMinorPath(DSL.name(alias), this); + } + + @Override + public ChildMinorPath as(Name alias) { + return new ChildMinorPath(alias, this); + } + + @Override + public ChildMinorPath as(Table alias) { + return new ChildMinorPath(alias.getQualifiedName(), this); + } + } + + @Override + public Schema getSchema() { + return aliased() ? null : TotalRegistered.TOTAL_REGISTERED; + } + + @Override + public Identity getIdentity() { + return (Identity) super.getIdentity(); + } + + @Override + public UniqueKey getPrimaryKey() { + return Keys.PK_CHILD_MINOR; + } + + @Override + public List> getReferences() { + return Arrays.asList(Keys.CHILD_MINOR__CHILD_MINOR_FK1); + } + + private transient PubRecruitmentPath _pubRecruitment; + + /** + * Get the implicit join path to the public.pub_recruitment + * table. + */ + public PubRecruitmentPath pubRecruitment() { + if (_pubRecruitment == null) + _pubRecruitment = new PubRecruitmentPath(this, Keys.CHILD_MINOR__CHILD_MINOR_FK1, null); + + return _pubRecruitment; + } + + @Override + public ChildMinor as(String alias) { + return new ChildMinor(DSL.name(alias), this); + } + + @Override + public ChildMinor as(Name alias) { + return new ChildMinor(alias, this); + } + + @Override + public ChildMinor as(Table alias) { + return new ChildMinor(alias.getQualifiedName(), this); + } + + /** + * Rename this table + */ + @Override + public ChildMinor rename(String name) { + return new ChildMinor(DSL.name(name), null); + } + + /** + * Rename this table + */ + @Override + public ChildMinor rename(Name name) { + return new ChildMinor(name, null); + } + + /** + * Rename this table + */ + @Override + public ChildMinor rename(Table name) { + return new ChildMinor(name.getQualifiedName(), null); + } + + /** + * Create an inline derived table from this table + */ + @Override + public ChildMinor where(Condition condition) { + return new ChildMinor(getQualifiedName(), aliased() ? this : null, null, condition); + } + + /** + * Create an inline derived table from this table + */ + @Override + public ChildMinor where(Collection conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public ChildMinor where(Condition... conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public ChildMinor where(Field condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public ChildMinor where(SQL condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public ChildMinor where(@Stringly.SQL String condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public ChildMinor where(@Stringly.SQL String condition, Object... binds) { + return where(DSL.condition(condition, binds)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public ChildMinor where(@Stringly.SQL String condition, QueryPart... parts) { + return where(DSL.condition(condition, parts)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public ChildMinor whereExists(Select select) { + return where(DSL.exists(select)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public ChildMinor whereNotExists(Select select) { + return where(DSL.notExists(select)); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/total_registered/tables/DriverLicense.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/total_registered/tables/DriverLicense.java new file mode 100644 index 0000000..87e0eb6 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/total_registered/tables/DriverLicense.java @@ -0,0 +1,371 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables; + + +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.PubRecruitment.PubRecruitmentPath; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.Keys; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.TotalRegistered; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.records.DriverLicenseRecord; + +import java.math.BigDecimal; +import java.sql.Date; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; +import java.util.UUID; + +import org.jooq.Condition; +import org.jooq.Field; +import org.jooq.ForeignKey; +import org.jooq.Identity; +import org.jooq.InverseForeignKey; +import org.jooq.Name; +import org.jooq.Path; +import org.jooq.PlainSQL; +import org.jooq.QueryPart; +import org.jooq.Record; +import org.jooq.SQL; +import org.jooq.Schema; +import org.jooq.Select; +import org.jooq.Stringly; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.TableOptions; +import org.jooq.UniqueKey; +import org.jooq.impl.DSL; +import org.jooq.impl.SQLDataType; +import org.jooq.impl.TableImpl; + + +/** + * Наличие водительского удостоверения состоящих/не состоящих, + * мужчин/женщин/всех на учете уровень РФ + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class DriverLicense extends TableImpl { + + private static final long serialVersionUID = 1L; + + /** + * The reference instance of total_registered.driver_license + */ + public static final DriverLicense DRIVER_LICENSE = new DriverLicense(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return DriverLicenseRecord.class; + } + + /** + * The column + * total_registered.driver_license.id_driver_license. + */ + public final TableField ID_DRIVER_LICENSE = createField(DSL.name("id_driver_license"), SQLDataType.BIGINT.nullable(false).identity(true), this, ""); + + /** + * The column total_registered.driver_license.nope. нет + * водительского удостоверения + */ + public final TableField NOPE = createField(DSL.name("nope"), SQLDataType.NUMERIC, this, "нет водительского удостоверения"); + + /** + * The column total_registered.driver_license.A. категория A + */ + public final TableField A = createField(DSL.name("A"), SQLDataType.NUMERIC, this, "категория A"); + + /** + * The column total_registered.driver_license.B. категория B + */ + public final TableField B = createField(DSL.name("B"), SQLDataType.NUMERIC, this, "категория B"); + + /** + * The column total_registered.driver_license.C. категория C + */ + public final TableField C = createField(DSL.name("C"), SQLDataType.NUMERIC, this, "категория C"); + + /** + * The column total_registered.driver_license.D. категория D + */ + public final TableField D = createField(DSL.name("D"), SQLDataType.NUMERIC, this, "категория D"); + + /** + * The column total_registered.driver_license.E. категория E + */ + public final TableField E = createField(DSL.name("E"), SQLDataType.NUMERIC, this, "категория E"); + + /** + * The column total_registered.driver_license.all_M_W. + * Все/Мужчины/Женщины + */ + public final TableField ALL_M_W = createField(DSL.name("all_M_W"), SQLDataType.CLOB, this, "Все/Мужчины/Женщины"); + + /** + * The column total_registered.driver_license.recording_date. + * Дата записи + */ + public final TableField RECORDING_DATE = createField(DSL.name("recording_date"), SQLDataType.DATE, this, "Дата записи"); + + /** + * The column total_registered.driver_license.nope_repcent. нет + * водительского удостоверения в процентах + */ + public final TableField NOPE_REPCENT = createField(DSL.name("nope_repcent"), SQLDataType.NUMERIC, this, "нет водительского удостоверения в процентах"); + + /** + * The column total_registered.driver_license.A_repcent. + * категория A в процентах + */ + public final TableField A_REPCENT = createField(DSL.name("A_repcent"), SQLDataType.NUMERIC, this, "категория A в процентах"); + + /** + * The column total_registered.driver_license.B_repcent. + * категория B в процентах + */ + public final TableField B_REPCENT = createField(DSL.name("B_repcent"), SQLDataType.NUMERIC, this, "категория B в процентах"); + + /** + * The column total_registered.driver_license.C_repcent. + * категория C в процентах + */ + public final TableField C_REPCENT = createField(DSL.name("C_repcent"), SQLDataType.NUMERIC, this, "категория C в процентах"); + + /** + * The column total_registered.driver_license.D_repcent. + * категория D в процентах + */ + public final TableField D_REPCENT = createField(DSL.name("D_repcent"), SQLDataType.NUMERIC, this, "категория D в процентах"); + + /** + * The column total_registered.driver_license.E_repcent. + * категория E в процентах + */ + public final TableField E_REPCENT = createField(DSL.name("E_repcent"), SQLDataType.NUMERIC, this, "категория E в процентах"); + + /** + * The column total_registered.driver_license.recruitment_id. + */ + public final TableField RECRUITMENT_ID = createField(DSL.name("recruitment_id"), SQLDataType.UUID, this, ""); + + private DriverLicense(Name alias, Table aliased) { + this(alias, aliased, (Field[]) null, null); + } + + private DriverLicense(Name alias, Table aliased, Field[] parameters, Condition where) { + super(alias, null, aliased, parameters, DSL.comment("Наличие водительского удостоверения состоящих/не состоящих, мужчин/женщин/всех на учете уровень РФ"), TableOptions.table(), where); + } + + /** + * Create an aliased total_registered.driver_license table + * reference + */ + public DriverLicense(String alias) { + this(DSL.name(alias), DRIVER_LICENSE); + } + + /** + * Create an aliased total_registered.driver_license table + * reference + */ + public DriverLicense(Name alias) { + this(alias, DRIVER_LICENSE); + } + + /** + * Create a total_registered.driver_license table reference + */ + public DriverLicense() { + this(DSL.name("driver_license"), null); + } + + public DriverLicense(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath, DRIVER_LICENSE); + } + + /** + * A subtype implementing {@link Path} for simplified path-based joins. + */ + public static class DriverLicensePath extends DriverLicense implements Path { + public DriverLicensePath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath); + } + private DriverLicensePath(Name alias, Table aliased) { + super(alias, aliased); + } + + @Override + public DriverLicensePath as(String alias) { + return new DriverLicensePath(DSL.name(alias), this); + } + + @Override + public DriverLicensePath as(Name alias) { + return new DriverLicensePath(alias, this); + } + + @Override + public DriverLicensePath as(Table alias) { + return new DriverLicensePath(alias.getQualifiedName(), this); + } + } + + @Override + public Schema getSchema() { + return aliased() ? null : TotalRegistered.TOTAL_REGISTERED; + } + + @Override + public Identity getIdentity() { + return (Identity) super.getIdentity(); + } + + @Override + public UniqueKey getPrimaryKey() { + return Keys.PK_DRIVER_LICENSE; + } + + @Override + public List> getReferences() { + return Arrays.asList(Keys.DRIVER_LICENSE__DRIVER_LICENSE_FK1); + } + + private transient PubRecruitmentPath _pubRecruitment; + + /** + * Get the implicit join path to the public.pub_recruitment + * table. + */ + public PubRecruitmentPath pubRecruitment() { + if (_pubRecruitment == null) + _pubRecruitment = new PubRecruitmentPath(this, Keys.DRIVER_LICENSE__DRIVER_LICENSE_FK1, null); + + return _pubRecruitment; + } + + @Override + public DriverLicense as(String alias) { + return new DriverLicense(DSL.name(alias), this); + } + + @Override + public DriverLicense as(Name alias) { + return new DriverLicense(alias, this); + } + + @Override + public DriverLicense as(Table alias) { + return new DriverLicense(alias.getQualifiedName(), this); + } + + /** + * Rename this table + */ + @Override + public DriverLicense rename(String name) { + return new DriverLicense(DSL.name(name), null); + } + + /** + * Rename this table + */ + @Override + public DriverLicense rename(Name name) { + return new DriverLicense(name, null); + } + + /** + * Rename this table + */ + @Override + public DriverLicense rename(Table name) { + return new DriverLicense(name.getQualifiedName(), null); + } + + /** + * Create an inline derived table from this table + */ + @Override + public DriverLicense where(Condition condition) { + return new DriverLicense(getQualifiedName(), aliased() ? this : null, null, condition); + } + + /** + * Create an inline derived table from this table + */ + @Override + public DriverLicense where(Collection conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public DriverLicense where(Condition... conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public DriverLicense where(Field condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public DriverLicense where(SQL condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public DriverLicense where(@Stringly.SQL String condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public DriverLicense where(@Stringly.SQL String condition, Object... binds) { + return where(DSL.condition(condition, binds)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public DriverLicense where(@Stringly.SQL String condition, QueryPart... parts) { + return where(DSL.condition(condition, parts)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public DriverLicense whereExists(Select select) { + return where(DSL.exists(select)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public DriverLicense whereNotExists(Select select) { + return where(DSL.notExists(select)); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/total_registered/tables/EducationLevel.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/total_registered/tables/EducationLevel.java new file mode 100644 index 0000000..ccfade9 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/total_registered/tables/EducationLevel.java @@ -0,0 +1,353 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables; + + +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.PubRecruitment.PubRecruitmentPath; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.Keys; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.TotalRegistered; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.records.EducationLevelRecord; + +import java.math.BigDecimal; +import java.sql.Date; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; +import java.util.UUID; + +import org.jooq.Condition; +import org.jooq.Field; +import org.jooq.ForeignKey; +import org.jooq.Identity; +import org.jooq.InverseForeignKey; +import org.jooq.Name; +import org.jooq.Path; +import org.jooq.PlainSQL; +import org.jooq.QueryPart; +import org.jooq.Record; +import org.jooq.SQL; +import org.jooq.Schema; +import org.jooq.Select; +import org.jooq.Stringly; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.TableOptions; +import org.jooq.UniqueKey; +import org.jooq.impl.DSL; +import org.jooq.impl.SQLDataType; +import org.jooq.impl.TableImpl; + + +/** + * Уровень образования состоящих/не состоящих, мужчин/женщин/всех на учете + * уровень РФ + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class EducationLevel extends TableImpl { + + private static final long serialVersionUID = 1L; + + /** + * The reference instance of total_registered.education_level + */ + public static final EducationLevel EDUCATION_LEVEL = new EducationLevel(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return EducationLevelRecord.class; + } + + /** + * The column + * total_registered.education_level.id_education_level. + */ + public final TableField ID_EDUCATION_LEVEL = createField(DSL.name("id_education_level"), SQLDataType.BIGINT.nullable(false).identity(true), this, ""); + + /** + * The column total_registered.education_level.higher. Высшее + * образование + */ + public final TableField HIGHER = createField(DSL.name("higher"), SQLDataType.NUMERIC, this, "Высшее образование"); + + /** + * The column total_registered.education_level.average. Среднее + * профессиональное + */ + public final TableField AVERAGE = createField(DSL.name("average"), SQLDataType.NUMERIC, this, "Среднее профессиональное"); + + /** + * The column total_registered.education_level.all_M_W. + * Все/Мужчины/Женщины + */ + public final TableField ALL_M_W = createField(DSL.name("all_M_W"), SQLDataType.CLOB, this, "Все/Мужчины/Женщины"); + + /** + * The column total_registered.education_level.only_general. + * Только общее + */ + public final TableField ONLY_GENERAL = createField(DSL.name("only_general"), SQLDataType.NUMERIC, this, "Только общее"); + + /** + * The column total_registered.education_level.no_data. Нет + * данных + */ + public final TableField NO_DATA = createField(DSL.name("no_data"), SQLDataType.NUMERIC, this, "Нет данных"); + + /** + * The column total_registered.education_level.recording_date. + * Дата записи + */ + public final TableField RECORDING_DATE = createField(DSL.name("recording_date"), SQLDataType.DATE.defaultValue(DSL.field(DSL.raw("now()"), SQLDataType.DATE)), this, "Дата записи"); + + /** + * The column total_registered.education_level.higher_percent. + * Высшее образование в процентах + */ + public final TableField HIGHER_PERCENT = createField(DSL.name("higher_percent"), SQLDataType.NUMERIC, this, "Высшее образование в процентах"); + + /** + * The column total_registered.education_level.average_percent. + * Среднее профессиональное в процентах + */ + public final TableField AVERAGE_PERCENT = createField(DSL.name("average_percent"), SQLDataType.NUMERIC, this, "Среднее профессиональное в процентах"); + + /** + * The column + * total_registered.education_level.only_general_percent. + * Только общее в процентах + */ + public final TableField ONLY_GENERAL_PERCENT = createField(DSL.name("only_general_percent"), SQLDataType.NUMERIC, this, "Только общее в процентах"); + + /** + * The column total_registered.education_level.no_data_percent. + * Нет данных об образованиии в процентах + */ + public final TableField NO_DATA_PERCENT = createField(DSL.name("no_data_percent"), SQLDataType.NUMERIC, this, "Нет данных об образованиии в процентах"); + + /** + * The column total_registered.education_level.recruitment_id. + */ + public final TableField RECRUITMENT_ID = createField(DSL.name("recruitment_id"), SQLDataType.UUID, this, ""); + + private EducationLevel(Name alias, Table aliased) { + this(alias, aliased, (Field[]) null, null); + } + + private EducationLevel(Name alias, Table aliased, Field[] parameters, Condition where) { + super(alias, null, aliased, parameters, DSL.comment("Уровень образования состоящих/не состоящих, мужчин/женщин/всех на учете уровень РФ"), TableOptions.table(), where); + } + + /** + * Create an aliased total_registered.education_level table + * reference + */ + public EducationLevel(String alias) { + this(DSL.name(alias), EDUCATION_LEVEL); + } + + /** + * Create an aliased total_registered.education_level table + * reference + */ + public EducationLevel(Name alias) { + this(alias, EDUCATION_LEVEL); + } + + /** + * Create a total_registered.education_level table reference + */ + public EducationLevel() { + this(DSL.name("education_level"), null); + } + + public EducationLevel(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath, EDUCATION_LEVEL); + } + + /** + * A subtype implementing {@link Path} for simplified path-based joins. + */ + public static class EducationLevelPath extends EducationLevel implements Path { + public EducationLevelPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath); + } + private EducationLevelPath(Name alias, Table aliased) { + super(alias, aliased); + } + + @Override + public EducationLevelPath as(String alias) { + return new EducationLevelPath(DSL.name(alias), this); + } + + @Override + public EducationLevelPath as(Name alias) { + return new EducationLevelPath(alias, this); + } + + @Override + public EducationLevelPath as(Table alias) { + return new EducationLevelPath(alias.getQualifiedName(), this); + } + } + + @Override + public Schema getSchema() { + return aliased() ? null : TotalRegistered.TOTAL_REGISTERED; + } + + @Override + public Identity getIdentity() { + return (Identity) super.getIdentity(); + } + + @Override + public UniqueKey getPrimaryKey() { + return Keys.PK_EDUCATION_LEVEL; + } + + @Override + public List> getReferences() { + return Arrays.asList(Keys.EDUCATION_LEVEL__EDUCATION_LEVEL_FK1); + } + + private transient PubRecruitmentPath _pubRecruitment; + + /** + * Get the implicit join path to the public.pub_recruitment + * table. + */ + public PubRecruitmentPath pubRecruitment() { + if (_pubRecruitment == null) + _pubRecruitment = new PubRecruitmentPath(this, Keys.EDUCATION_LEVEL__EDUCATION_LEVEL_FK1, null); + + return _pubRecruitment; + } + + @Override + public EducationLevel as(String alias) { + return new EducationLevel(DSL.name(alias), this); + } + + @Override + public EducationLevel as(Name alias) { + return new EducationLevel(alias, this); + } + + @Override + public EducationLevel as(Table alias) { + return new EducationLevel(alias.getQualifiedName(), this); + } + + /** + * Rename this table + */ + @Override + public EducationLevel rename(String name) { + return new EducationLevel(DSL.name(name), null); + } + + /** + * Rename this table + */ + @Override + public EducationLevel rename(Name name) { + return new EducationLevel(name, null); + } + + /** + * Rename this table + */ + @Override + public EducationLevel rename(Table name) { + return new EducationLevel(name.getQualifiedName(), null); + } + + /** + * Create an inline derived table from this table + */ + @Override + public EducationLevel where(Condition condition) { + return new EducationLevel(getQualifiedName(), aliased() ? this : null, null, condition); + } + + /** + * Create an inline derived table from this table + */ + @Override + public EducationLevel where(Collection conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public EducationLevel where(Condition... conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public EducationLevel where(Field condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public EducationLevel where(SQL condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public EducationLevel where(@Stringly.SQL String condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public EducationLevel where(@Stringly.SQL String condition, Object... binds) { + return where(DSL.condition(condition, binds)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public EducationLevel where(@Stringly.SQL String condition, QueryPart... parts) { + return where(DSL.condition(condition, parts)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public EducationLevel whereExists(Select select) { + return where(DSL.exists(select)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public EducationLevel whereNotExists(Select select) { + return where(DSL.notExists(select)); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/total_registered/tables/MaritalStatus.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/total_registered/tables/MaritalStatus.java new file mode 100644 index 0000000..5ec5e9b --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/total_registered/tables/MaritalStatus.java @@ -0,0 +1,328 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables; + + +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.PubRecruitment.PubRecruitmentPath; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.Keys; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.TotalRegistered; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.records.MaritalStatusRecord; + +import java.math.BigDecimal; +import java.sql.Date; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; +import java.util.UUID; + +import org.jooq.Condition; +import org.jooq.Field; +import org.jooq.ForeignKey; +import org.jooq.Identity; +import org.jooq.InverseForeignKey; +import org.jooq.Name; +import org.jooq.Path; +import org.jooq.PlainSQL; +import org.jooq.QueryPart; +import org.jooq.Record; +import org.jooq.SQL; +import org.jooq.Schema; +import org.jooq.Select; +import org.jooq.Stringly; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.TableOptions; +import org.jooq.UniqueKey; +import org.jooq.impl.DSL; +import org.jooq.impl.SQLDataType; +import org.jooq.impl.TableImpl; + + +/** + * Семейное положение состоящих/не состоящих, мужчин/женщин/всех на учете + * уровень РФ + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class MaritalStatus extends TableImpl { + + private static final long serialVersionUID = 1L; + + /** + * The reference instance of total_registered.marital_status + */ + public static final MaritalStatus MARITAL_STATUS = new MaritalStatus(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return MaritalStatusRecord.class; + } + + /** + * The column + * total_registered.marital_status.id_marital_status. + */ + public final TableField ID_MARITAL_STATUS = createField(DSL.name("id_marital_status"), SQLDataType.BIGINT.nullable(false).identity(true), this, ""); + + /** + * The column total_registered.marital_status.married. В браке + */ + public final TableField MARRIED = createField(DSL.name("married"), SQLDataType.NUMERIC, this, "В браке"); + + /** + * The column total_registered.marital_status.not_married. + * Холост + */ + public final TableField NOT_MARRIED = createField(DSL.name("not_married"), SQLDataType.NUMERIC, this, "Холост"); + + /** + * The column total_registered.marital_status.all_M_W. + * Все/Мужчины/Женщины + */ + public final TableField ALL_M_W = createField(DSL.name("all_M_W"), SQLDataType.CLOB, this, "Все/Мужчины/Женщины"); + + /** + * The column total_registered.marital_status.recording_date. + * Дата записи + */ + public final TableField RECORDING_DATE = createField(DSL.name("recording_date"), SQLDataType.DATE.defaultValue(DSL.field(DSL.raw("now()"), SQLDataType.DATE)), this, "Дата записи"); + + /** + * The column total_registered.marital_status.married_percent. + * В браке в процентах + */ + public final TableField MARRIED_PERCENT = createField(DSL.name("married_percent"), SQLDataType.NUMERIC, this, "В браке в процентах"); + + /** + * The column + * total_registered.marital_status.not_married_percent. Холост + * в процентах + */ + public final TableField NOT_MARRIED_PERCENT = createField(DSL.name("not_married_percent"), SQLDataType.NUMERIC, this, "Холост в процентах"); + + /** + * The column total_registered.marital_status.recruitment_id. + */ + public final TableField RECRUITMENT_ID = createField(DSL.name("recruitment_id"), SQLDataType.UUID, this, ""); + + private MaritalStatus(Name alias, Table aliased) { + this(alias, aliased, (Field[]) null, null); + } + + private MaritalStatus(Name alias, Table aliased, Field[] parameters, Condition where) { + super(alias, null, aliased, parameters, DSL.comment("Семейное положение состоящих/не состоящих, мужчин/женщин/всех на учете уровень РФ"), TableOptions.table(), where); + } + + /** + * Create an aliased total_registered.marital_status table + * reference + */ + public MaritalStatus(String alias) { + this(DSL.name(alias), MARITAL_STATUS); + } + + /** + * Create an aliased total_registered.marital_status table + * reference + */ + public MaritalStatus(Name alias) { + this(alias, MARITAL_STATUS); + } + + /** + * Create a total_registered.marital_status table reference + */ + public MaritalStatus() { + this(DSL.name("marital_status"), null); + } + + public MaritalStatus(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath, MARITAL_STATUS); + } + + /** + * A subtype implementing {@link Path} for simplified path-based joins. + */ + public static class MaritalStatusPath extends MaritalStatus implements Path { + public MaritalStatusPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath); + } + private MaritalStatusPath(Name alias, Table aliased) { + super(alias, aliased); + } + + @Override + public MaritalStatusPath as(String alias) { + return new MaritalStatusPath(DSL.name(alias), this); + } + + @Override + public MaritalStatusPath as(Name alias) { + return new MaritalStatusPath(alias, this); + } + + @Override + public MaritalStatusPath as(Table alias) { + return new MaritalStatusPath(alias.getQualifiedName(), this); + } + } + + @Override + public Schema getSchema() { + return aliased() ? null : TotalRegistered.TOTAL_REGISTERED; + } + + @Override + public Identity getIdentity() { + return (Identity) super.getIdentity(); + } + + @Override + public UniqueKey getPrimaryKey() { + return Keys.PK_MARITAL_STATUS; + } + + @Override + public List> getReferences() { + return Arrays.asList(Keys.MARITAL_STATUS__MARITAL_STATUS_FK1); + } + + private transient PubRecruitmentPath _pubRecruitment; + + /** + * Get the implicit join path to the public.pub_recruitment + * table. + */ + public PubRecruitmentPath pubRecruitment() { + if (_pubRecruitment == null) + _pubRecruitment = new PubRecruitmentPath(this, Keys.MARITAL_STATUS__MARITAL_STATUS_FK1, null); + + return _pubRecruitment; + } + + @Override + public MaritalStatus as(String alias) { + return new MaritalStatus(DSL.name(alias), this); + } + + @Override + public MaritalStatus as(Name alias) { + return new MaritalStatus(alias, this); + } + + @Override + public MaritalStatus as(Table alias) { + return new MaritalStatus(alias.getQualifiedName(), this); + } + + /** + * Rename this table + */ + @Override + public MaritalStatus rename(String name) { + return new MaritalStatus(DSL.name(name), null); + } + + /** + * Rename this table + */ + @Override + public MaritalStatus rename(Name name) { + return new MaritalStatus(name, null); + } + + /** + * Rename this table + */ + @Override + public MaritalStatus rename(Table name) { + return new MaritalStatus(name.getQualifiedName(), null); + } + + /** + * Create an inline derived table from this table + */ + @Override + public MaritalStatus where(Condition condition) { + return new MaritalStatus(getQualifiedName(), aliased() ? this : null, null, condition); + } + + /** + * Create an inline derived table from this table + */ + @Override + public MaritalStatus where(Collection conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public MaritalStatus where(Condition... conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public MaritalStatus where(Field condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public MaritalStatus where(SQL condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public MaritalStatus where(@Stringly.SQL String condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public MaritalStatus where(@Stringly.SQL String condition, Object... binds) { + return where(DSL.condition(condition, binds)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public MaritalStatus where(@Stringly.SQL String condition, QueryPart... parts) { + return where(DSL.condition(condition, parts)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public MaritalStatus whereExists(Select select) { + return where(DSL.exists(select)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public MaritalStatus whereNotExists(Select select) { + return where(DSL.notExists(select)); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/total_registered/tables/RegMilCat.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/total_registered/tables/RegMilCat.java new file mode 100644 index 0000000..6aab08f --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/total_registered/tables/RegMilCat.java @@ -0,0 +1,391 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables; + + +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.PubRecruitment.PubRecruitmentPath; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.Keys; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.TotalRegistered; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.records.RegMilCatRecord; + +import java.math.BigDecimal; +import java.sql.Date; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; +import java.util.UUID; + +import org.jooq.Condition; +import org.jooq.Field; +import org.jooq.ForeignKey; +import org.jooq.Identity; +import org.jooq.InverseForeignKey; +import org.jooq.Name; +import org.jooq.Path; +import org.jooq.PlainSQL; +import org.jooq.QueryPart; +import org.jooq.Record; +import org.jooq.SQL; +import org.jooq.Schema; +import org.jooq.Select; +import org.jooq.Stringly; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.TableOptions; +import org.jooq.UniqueKey; +import org.jooq.impl.DSL; +import org.jooq.impl.SQLDataType; +import org.jooq.impl.TableImpl; + + +/** + * Категории постановки на воинский учет состоящих/не состоящих на учете уровень + * РФ + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class RegMilCat extends TableImpl { + + private static final long serialVersionUID = 1L; + + /** + * The reference instance of total_registered.reg_mil_cat + */ + public static final RegMilCat REG_MIL_CAT = new RegMilCat(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return RegMilCatRecord.class; + } + + /** + * The column total_registered.reg_mil_cat.id_reg_mil_cat. + */ + public final TableField ID_REG_MIL_CAT = createField(DSL.name("id_reg_mil_cat"), SQLDataType.BIGINT.nullable(false).identity(true), this, ""); + + /** + * The column total_registered.reg_mil_cat.first_reg_17. + * Первоначальная постановка на воинский учет граждан от 17 лет + */ + public final TableField FIRST_REG_17 = createField(DSL.name("first_reg_17"), SQLDataType.NUMERIC, this, "Первоначальная постановка на воинский учет граждан от 17 лет"); + + /** + * The column total_registered.reg_mil_cat.first_reg_18. + * Первоначальная постановка на воинский учет граждан от 18 лет + */ + public final TableField FIRST_REG_18 = createField(DSL.name("first_reg_18"), SQLDataType.NUMERIC, this, "Первоначальная постановка на воинский учет граждан от 18 лет"); + + /** + * The column + * total_registered.reg_mil_cat.returned_dep_liberty. + * Возвратившиеся из мест лишения свободы + */ + public final TableField RETURNED_DEP_LIBERTY = createField(DSL.name("returned_dep_liberty"), SQLDataType.NUMERIC, this, "Возвратившиеся из мест лишения свободы"); + + /** + * The column total_registered.reg_mil_cat.mil_spec_W. Женщины, + * получившие ВУС + */ + public final TableField MIL_SPEC_W = createField(DSL.name("mil_spec_W"), SQLDataType.NUMERIC, this, "Женщины, получившие ВУС"); + + /** + * The column total_registered.reg_mil_cat.punished. Отбывающие + * наказание в местах лишения свободы + */ + public final TableField PUNISHED = createField(DSL.name("punished"), SQLDataType.NUMERIC, this, "Отбывающие наказание в местах лишения свободы"); + + /** + * The column + * total_registered.reg_mil_cat.received_citizenship. + * Получившие гражданство + */ + public final TableField RECEIVED_CITIZENSHIP = createField(DSL.name("received_citizenship"), SQLDataType.NUMERIC, this, "Получившие гражданство"); + + /** + * The column total_registered.reg_mil_cat.mil_reg. Состоит на + * учете/ не состоит + */ + public final TableField MIL_REG = createField(DSL.name("mil_reg"), SQLDataType.BOOLEAN, this, "Состоит на учете/ не состоит"); + + /** + * The column total_registered.reg_mil_cat.recording_date. Дата + * записи + */ + public final TableField RECORDING_DATE = createField(DSL.name("recording_date"), SQLDataType.DATE, this, "Дата записи"); + + /** + * The column + * total_registered.reg_mil_cat.first_reg_17_percent. + * Первоначальная постановка на воинский учет граждан от 17 лет в процентах + */ + public final TableField FIRST_REG_17_PERCENT = createField(DSL.name("first_reg_17_percent"), SQLDataType.NUMERIC, this, "Первоначальная постановка на воинский учет граждан от 17 лет в процентах"); + + /** + * The column + * total_registered.reg_mil_cat.first_reg_18_percent. + * Первоначальная постановка на воинский учет граждан от 18 лет в процентах + */ + public final TableField FIRST_REG_18_PERCENT = createField(DSL.name("first_reg_18_percent"), SQLDataType.NUMERIC, this, "Первоначальная постановка на воинский учет граждан от 18 лет в процентах"); + + /** + * The column + * total_registered.reg_mil_cat.returned_dep_liberty_percent. + * Возвратившиеся из мест лишения свободы в процентах + */ + public final TableField RETURNED_DEP_LIBERTY_PERCENT = createField(DSL.name("returned_dep_liberty_percent"), SQLDataType.NUMERIC, this, "Возвратившиеся из мест лишения свободы в процентах"); + + /** + * The column total_registered.reg_mil_cat.mil_spec_W_percent. + * Женщины, получившие ВУС в процентах + */ + public final TableField MIL_SPEC_W_PERCENT = createField(DSL.name("mil_spec_W_percent"), SQLDataType.NUMERIC, this, "Женщины, получившие ВУС в процентах"); + + /** + * The column total_registered.reg_mil_cat.punished_percent. + * Отбывающие наказание в местах лишения свободы в процентах + */ + public final TableField PUNISHED_PERCENT = createField(DSL.name("punished_percent"), SQLDataType.NUMERIC, this, "Отбывающие наказание в местах лишения свободы в процентах"); + + /** + * The column + * total_registered.reg_mil_cat.received_citizenship_percent. + * Получившие гражданство в процентах + */ + public final TableField RECEIVED_CITIZENSHIP_PERCENT = createField(DSL.name("received_citizenship_percent"), SQLDataType.NUMERIC, this, "Получившие гражданство в процентах"); + + /** + * The column total_registered.reg_mil_cat.recruitment_id. + */ + public final TableField RECRUITMENT_ID = createField(DSL.name("recruitment_id"), SQLDataType.UUID, this, ""); + + /** + * The column total_registered.reg_mil_cat.testrecruitment_id. + */ + public final TableField TESTRECRUITMENT_ID = createField(DSL.name("testrecruitment_id"), SQLDataType.CHAR(36), this, ""); + + /** + * The column total_registered.reg_mil_cat.testmil_reg. + */ + public final TableField TESTMIL_REG = createField(DSL.name("testmil_reg"), SQLDataType.NUMERIC, this, ""); + + private RegMilCat(Name alias, Table aliased) { + this(alias, aliased, (Field[]) null, null); + } + + private RegMilCat(Name alias, Table aliased, Field[] parameters, Condition where) { + super(alias, null, aliased, parameters, DSL.comment("Категории постановки на воинский учет состоящих/не состоящих на учете уровень РФ"), TableOptions.table(), where); + } + + /** + * Create an aliased total_registered.reg_mil_cat table + * reference + */ + public RegMilCat(String alias) { + this(DSL.name(alias), REG_MIL_CAT); + } + + /** + * Create an aliased total_registered.reg_mil_cat table + * reference + */ + public RegMilCat(Name alias) { + this(alias, REG_MIL_CAT); + } + + /** + * Create a total_registered.reg_mil_cat table reference + */ + public RegMilCat() { + this(DSL.name("reg_mil_cat"), null); + } + + public RegMilCat(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath, REG_MIL_CAT); + } + + /** + * A subtype implementing {@link Path} for simplified path-based joins. + */ + public static class RegMilCatPath extends RegMilCat implements Path { + public RegMilCatPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath); + } + private RegMilCatPath(Name alias, Table aliased) { + super(alias, aliased); + } + + @Override + public RegMilCatPath as(String alias) { + return new RegMilCatPath(DSL.name(alias), this); + } + + @Override + public RegMilCatPath as(Name alias) { + return new RegMilCatPath(alias, this); + } + + @Override + public RegMilCatPath as(Table alias) { + return new RegMilCatPath(alias.getQualifiedName(), this); + } + } + + @Override + public Schema getSchema() { + return aliased() ? null : TotalRegistered.TOTAL_REGISTERED; + } + + @Override + public Identity getIdentity() { + return (Identity) super.getIdentity(); + } + + @Override + public UniqueKey getPrimaryKey() { + return Keys.PK_REG_MIL_CAT; + } + + @Override + public List> getReferences() { + return Arrays.asList(Keys.REG_MIL_CAT__REG_MIL_CAT_FK1); + } + + private transient PubRecruitmentPath _pubRecruitment; + + /** + * Get the implicit join path to the public.pub_recruitment + * table. + */ + public PubRecruitmentPath pubRecruitment() { + if (_pubRecruitment == null) + _pubRecruitment = new PubRecruitmentPath(this, Keys.REG_MIL_CAT__REG_MIL_CAT_FK1, null); + + return _pubRecruitment; + } + + @Override + public RegMilCat as(String alias) { + return new RegMilCat(DSL.name(alias), this); + } + + @Override + public RegMilCat as(Name alias) { + return new RegMilCat(alias, this); + } + + @Override + public RegMilCat as(Table alias) { + return new RegMilCat(alias.getQualifiedName(), this); + } + + /** + * Rename this table + */ + @Override + public RegMilCat rename(String name) { + return new RegMilCat(DSL.name(name), null); + } + + /** + * Rename this table + */ + @Override + public RegMilCat rename(Name name) { + return new RegMilCat(name, null); + } + + /** + * Rename this table + */ + @Override + public RegMilCat rename(Table name) { + return new RegMilCat(name.getQualifiedName(), null); + } + + /** + * Create an inline derived table from this table + */ + @Override + public RegMilCat where(Condition condition) { + return new RegMilCat(getQualifiedName(), aliased() ? this : null, null, condition); + } + + /** + * Create an inline derived table from this table + */ + @Override + public RegMilCat where(Collection conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public RegMilCat where(Condition... conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public RegMilCat where(Field condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public RegMilCat where(SQL condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public RegMilCat where(@Stringly.SQL String condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public RegMilCat where(@Stringly.SQL String condition, Object... binds) { + return where(DSL.condition(condition, binds)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public RegMilCat where(@Stringly.SQL String condition, QueryPart... parts) { + return where(DSL.condition(condition, parts)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public RegMilCat whereExists(Select select) { + return where(DSL.exists(select)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public RegMilCat whereNotExists(Select select) { + return where(DSL.notExists(select)); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/total_registered/tables/RemovedRegistry.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/total_registered/tables/RemovedRegistry.java new file mode 100644 index 0000000..d473f9e --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/total_registered/tables/RemovedRegistry.java @@ -0,0 +1,385 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables; + + +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.PubRecruitment.PubRecruitmentPath; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.Keys; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.TotalRegistered; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.records.RemovedRegistryRecord; + +import java.math.BigDecimal; +import java.sql.Date; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; +import java.util.UUID; + +import org.jooq.Condition; +import org.jooq.Field; +import org.jooq.ForeignKey; +import org.jooq.Identity; +import org.jooq.InverseForeignKey; +import org.jooq.Name; +import org.jooq.Path; +import org.jooq.PlainSQL; +import org.jooq.QueryPart; +import org.jooq.Record; +import org.jooq.SQL; +import org.jooq.Schema; +import org.jooq.Select; +import org.jooq.Stringly; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.TableOptions; +import org.jooq.UniqueKey; +import org.jooq.impl.DSL; +import org.jooq.impl.SQLDataType; +import org.jooq.impl.TableImpl; + + +/** + * Снято с учета уровень РФ + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class RemovedRegistry extends TableImpl { + + private static final long serialVersionUID = 1L; + + /** + * The reference instance of total_registered.removed_registry + */ + public static final RemovedRegistry REMOVED_REGISTRY = new RemovedRegistry(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return RemovedRegistryRecord.class; + } + + /** + * The column + * total_registered.removed_registry.removed_registry. Снято с + * учета + */ + public final TableField REMOVED_REGISTRY_ = createField(DSL.name("removed_registry"), SQLDataType.NUMERIC, this, "Снято с учета"); + + /** + * The column + * total_registered.removed_registry.deprivation_citizenship. + * Лишение гражданства + */ + public final TableField DEPRIVATION_CITIZENSHIP = createField(DSL.name("deprivation_citizenship"), SQLDataType.NUMERIC, this, "Лишение гражданства"); + + /** + * The column total_registered.removed_registry.age_limit. + * Наступление предельного возраста + */ + public final TableField AGE_LIMIT = createField(DSL.name("age_limit"), SQLDataType.NUMERIC, this, "Наступление предельного возраста"); + + /** + * The column total_registered.removed_registry.death. Смерть + */ + public final TableField DEATH = createField(DSL.name("death"), SQLDataType.NUMERIC, this, "Смерть"); + + /** + * The column total_registered.removed_registry.travel_abroad. + * Выезд за границу на срок более 6 месяцев + */ + public final TableField TRAVEL_ABROAD = createField(DSL.name("travel_abroad"), SQLDataType.NUMERIC, this, "Выезд за границу на срок более 6 месяцев"); + + /** + * The column total_registered.removed_registry.living_abroad. + * Проживающие за границей + */ + public final TableField LIVING_ABROAD = createField(DSL.name("living_abroad"), SQLDataType.NUMERIC, this, "Проживающие за границей"); + + /** + * The column total_registered.removed_registry.other. Прочее + */ + public final TableField OTHER = createField(DSL.name("other"), SQLDataType.NUMERIC, this, "Прочее"); + + /** + * The column total_registered.removed_registry.recording_date. + * Дата записи + */ + public final TableField RECORDING_DATE = createField(DSL.name("recording_date"), SQLDataType.DATE, this, "Дата записи"); + + /** + * The column + * total_registered.removed_registry.deprivation_citizen_percents. + * Лишение гражданства в процентах + */ + public final TableField DEPRIVATION_CITIZEN_PERCENTS = createField(DSL.name("deprivation_citizen_percents"), SQLDataType.NUMERIC, this, "Лишение гражданства в процентах"); + + /** + * The column + * total_registered.removed_registry.age_limit_percent. + * Наступление предельного возраста в процентах + */ + public final TableField AGE_LIMIT_PERCENT = createField(DSL.name("age_limit_percent"), SQLDataType.NUMERIC, this, "Наступление предельного возраста в процентах"); + + /** + * The column total_registered.removed_registry.death_percent. + * Смерть в процентах + */ + public final TableField DEATH_PERCENT = createField(DSL.name("death_percent"), SQLDataType.NUMERIC, this, "Смерть в процентах"); + + /** + * The column + * total_registered.removed_registry.travel_abroad_percent. + * Выезд за границу на срок более 6 месяцев в процентах + */ + public final TableField TRAVEL_ABROAD_PERCENT = createField(DSL.name("travel_abroad_percent"), SQLDataType.NUMERIC, this, "Выезд за границу на срок более 6 месяцев в процентах"); + + /** + * The column + * total_registered.removed_registry.living_abroad_percent. + * Проживающие за границей в процентах + */ + public final TableField LIVING_ABROAD_PERCENT = createField(DSL.name("living_abroad_percent"), SQLDataType.NUMERIC, this, "Проживающие за границей в процентах"); + + /** + * The column total_registered.removed_registry.other_percent. + * Прочее в процентах + */ + public final TableField OTHER_PERCENT = createField(DSL.name("other_percent"), SQLDataType.NUMERIC, this, "Прочее в процентах"); + + /** + * The column total_registered.removed_registry.recruitment_id. + */ + public final TableField RECRUITMENT_ID = createField(DSL.name("recruitment_id"), SQLDataType.UUID, this, ""); + + /** + * The column + * total_registered.removed_registry.id_removed_registry. + */ + public final TableField ID_REMOVED_REGISTRY = createField(DSL.name("id_removed_registry"), SQLDataType.BIGINT.nullable(false).identity(true), this, ""); + + /** + * The column + * total_registered.removed_registry.testrecruitment_id. + */ + public final TableField TESTRECRUITMENT_ID = createField(DSL.name("testrecruitment_id"), SQLDataType.CHAR(36), this, ""); + + private RemovedRegistry(Name alias, Table aliased) { + this(alias, aliased, (Field[]) null, null); + } + + private RemovedRegistry(Name alias, Table aliased, Field[] parameters, Condition where) { + super(alias, null, aliased, parameters, DSL.comment("Снято с учета уровень РФ"), TableOptions.table(), where); + } + + /** + * Create an aliased total_registered.removed_registry table + * reference + */ + public RemovedRegistry(String alias) { + this(DSL.name(alias), REMOVED_REGISTRY); + } + + /** + * Create an aliased total_registered.removed_registry table + * reference + */ + public RemovedRegistry(Name alias) { + this(alias, REMOVED_REGISTRY); + } + + /** + * Create a total_registered.removed_registry table reference + */ + public RemovedRegistry() { + this(DSL.name("removed_registry"), null); + } + + public RemovedRegistry(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath, REMOVED_REGISTRY); + } + + /** + * A subtype implementing {@link Path} for simplified path-based joins. + */ + public static class RemovedRegistryPath extends RemovedRegistry implements Path { + public RemovedRegistryPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath); + } + private RemovedRegistryPath(Name alias, Table aliased) { + super(alias, aliased); + } + + @Override + public RemovedRegistryPath as(String alias) { + return new RemovedRegistryPath(DSL.name(alias), this); + } + + @Override + public RemovedRegistryPath as(Name alias) { + return new RemovedRegistryPath(alias, this); + } + + @Override + public RemovedRegistryPath as(Table alias) { + return new RemovedRegistryPath(alias.getQualifiedName(), this); + } + } + + @Override + public Schema getSchema() { + return aliased() ? null : TotalRegistered.TOTAL_REGISTERED; + } + + @Override + public Identity getIdentity() { + return (Identity) super.getIdentity(); + } + + @Override + public UniqueKey getPrimaryKey() { + return Keys.REMOVED_REGISTRY_PKEY; + } + + @Override + public List> getReferences() { + return Arrays.asList(Keys.REMOVED_REGISTRY__REMOVED_REGISTRY_FK1); + } + + private transient PubRecruitmentPath _pubRecruitment; + + /** + * Get the implicit join path to the public.pub_recruitment + * table. + */ + public PubRecruitmentPath pubRecruitment() { + if (_pubRecruitment == null) + _pubRecruitment = new PubRecruitmentPath(this, Keys.REMOVED_REGISTRY__REMOVED_REGISTRY_FK1, null); + + return _pubRecruitment; + } + + @Override + public RemovedRegistry as(String alias) { + return new RemovedRegistry(DSL.name(alias), this); + } + + @Override + public RemovedRegistry as(Name alias) { + return new RemovedRegistry(alias, this); + } + + @Override + public RemovedRegistry as(Table alias) { + return new RemovedRegistry(alias.getQualifiedName(), this); + } + + /** + * Rename this table + */ + @Override + public RemovedRegistry rename(String name) { + return new RemovedRegistry(DSL.name(name), null); + } + + /** + * Rename this table + */ + @Override + public RemovedRegistry rename(Name name) { + return new RemovedRegistry(name, null); + } + + /** + * Rename this table + */ + @Override + public RemovedRegistry rename(Table name) { + return new RemovedRegistry(name.getQualifiedName(), null); + } + + /** + * Create an inline derived table from this table + */ + @Override + public RemovedRegistry where(Condition condition) { + return new RemovedRegistry(getQualifiedName(), aliased() ? this : null, null, condition); + } + + /** + * Create an inline derived table from this table + */ + @Override + public RemovedRegistry where(Collection conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public RemovedRegistry where(Condition... conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public RemovedRegistry where(Field condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public RemovedRegistry where(SQL condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public RemovedRegistry where(@Stringly.SQL String condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public RemovedRegistry where(@Stringly.SQL String condition, Object... binds) { + return where(DSL.condition(condition, binds)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public RemovedRegistry where(@Stringly.SQL String condition, QueryPart... parts) { + return where(DSL.condition(condition, parts)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public RemovedRegistry whereExists(Select select) { + return where(DSL.exists(select)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public RemovedRegistry whereNotExists(Select select) { + return where(DSL.notExists(select)); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/total_registered/tables/Subpoenas.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/total_registered/tables/Subpoenas.java new file mode 100644 index 0000000..e84a341 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/total_registered/tables/Subpoenas.java @@ -0,0 +1,419 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables; + + +import ervu_dashboard.ervu_dashboard.db_beans.public_.tables.PubRecruitment.PubRecruitmentPath; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.Keys; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.TotalRegistered; +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.records.SubpoenasRecord; + +import java.math.BigDecimal; +import java.sql.Date; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; +import java.util.UUID; + +import org.jooq.Condition; +import org.jooq.Field; +import org.jooq.ForeignKey; +import org.jooq.Identity; +import org.jooq.InverseForeignKey; +import org.jooq.Name; +import org.jooq.Path; +import org.jooq.PlainSQL; +import org.jooq.QueryPart; +import org.jooq.Record; +import org.jooq.SQL; +import org.jooq.Schema; +import org.jooq.Select; +import org.jooq.Stringly; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.TableOptions; +import org.jooq.UniqueKey; +import org.jooq.impl.DSL; +import org.jooq.impl.SQLDataType; +import org.jooq.impl.TableImpl; + + +/** + * Повестки состоящих/не состоящих на учете уровень РФ + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Subpoenas extends TableImpl { + + private static final long serialVersionUID = 1L; + + /** + * The reference instance of total_registered.subpoenas + */ + public static final Subpoenas SUBPOENAS = new Subpoenas(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return SubpoenasRecord.class; + } + + /** + * The column total_registered.subpoenas.id_subpoena. + */ + public final TableField ID_SUBPOENA = createField(DSL.name("id_subpoena"), SQLDataType.BIGINT.nullable(false).identity(true), this, ""); + + /** + * The column total_registered.subpoenas.subpoena. Направлено + * повесток + */ + public final TableField SUBPOENA = createField(DSL.name("subpoena"), SQLDataType.NUMERIC, this, "Направлено повесток"); + + /** + * The column total_registered.subpoenas.average_appeared. + * Средний срок явки + */ + public final TableField AVERAGE_APPEARED = createField(DSL.name("average_appeared"), SQLDataType.NUMERIC, this, "Средний срок явки"); + + /** + * The column total_registered.subpoenas.appeared. Явились + */ + public final TableField APPEARED = createField(DSL.name("appeared"), SQLDataType.NUMERIC, this, "Явились"); + + /** + * The column total_registered.subpoenas.not_appeared. Не + * явились + */ + public final TableField NOT_APPEARED = createField(DSL.name("not_appeared"), SQLDataType.NUMERIC, this, "Не явились"); + + /** + * The column total_registered.subpoenas.not_ap_good_reason. Не + * явились по уважительной причине + */ + public final TableField NOT_AP_GOOD_REASON = createField(DSL.name("not_ap_good_reason"), SQLDataType.NUMERIC, this, "Не явились по уважительной причине"); + + /** + * The column total_registered.subpoenas.ap_not_required. Явка + * не требуется + */ + public final TableField AP_NOT_REQUIRED = createField(DSL.name("ap_not_required"), SQLDataType.NUMERIC, this, "Явка не требуется"); + + /** + * The column total_registered.subpoenas.electron. Электронно + */ + public final TableField ELECTRON = createField(DSL.name("electron"), SQLDataType.NUMERIC, this, "Электронно"); + + /** + * The column total_registered.subpoenas.paper. Нарочно + */ + public final TableField PAPER = createField(DSL.name("paper"), SQLDataType.NUMERIC, this, "Нарочно"); + + /** + * The column total_registered.subpoenas.restrictions_applied. + * Применено ограничений + */ + public final TableField RESTRICTIONS_APPLIED = createField(DSL.name("restrictions_applied"), SQLDataType.NUMERIC, this, "Применено ограничений"); + + /** + * The column total_registered.subpoenas.introduced_measures. + * Введено реализатором мер + */ + public final TableField INTRODUCED_MEASURES = createField(DSL.name("introduced_measures"), SQLDataType.NUMERIC, this, "Введено реализатором мер"); + + /** + * The column total_registered.subpoenas.mil_reg. Состоит/не + * состоит на учете + */ + public final TableField MIL_REG = createField(DSL.name("mil_reg"), SQLDataType.BOOLEAN, this, "Состоит/не состоит на учете"); + + /** + * The column total_registered.subpoenas.recording_date. Дата + * записи + */ + public final TableField RECORDING_DATE = createField(DSL.name("recording_date"), SQLDataType.DATE.defaultValue(DSL.field(DSL.raw("now()"), SQLDataType.DATE)), this, "Дата записи"); + + /** + * The column total_registered.subpoenas.appeared_percent. + * Явились в процентах + */ + public final TableField APPEARED_PERCENT = createField(DSL.name("appeared_percent"), SQLDataType.NUMERIC, this, "Явились в процентах"); + + /** + * The column total_registered.subpoenas.not_appeared_percent. + * Не явились в процентах + */ + public final TableField NOT_APPEARED_PERCENT = createField(DSL.name("not_appeared_percent"), SQLDataType.NUMERIC, this, "Не явились в процентах"); + + /** + * The column + * total_registered.subpoenas.not_ap_good_reason_percent. Не + * явились по уважительной причине в процентах + */ + public final TableField NOT_AP_GOOD_REASON_PERCENT = createField(DSL.name("not_ap_good_reason_percent"), SQLDataType.NUMERIC, this, "Не явились по уважительной причине в процентах"); + + /** + * The column + * total_registered.subpoenas.ap_not_required_percent. Явка не + * требуется в процентах + */ + public final TableField AP_NOT_REQUIRED_PERCENT = createField(DSL.name("ap_not_required_percent"), SQLDataType.NUMERIC, this, "Явка не требуется в процентах"); + + /** + * The column total_registered.subpoenas.electron_percent. + * Электронно в процентах + */ + public final TableField ELECTRON_PERCENT = createField(DSL.name("electron_percent"), SQLDataType.NUMERIC, this, "Электронно в процентах"); + + /** + * The column total_registered.subpoenas.paper_percent. Нарочно + * в процентах + */ + public final TableField PAPER_PERCENT = createField(DSL.name("paper_percent"), SQLDataType.NUMERIC, this, "Нарочно в процентах"); + + /** + * The column + * total_registered.subpoenas.restrictions_applied_percent. + * Применено ограничений в процентах + */ + public final TableField RESTRICTIONS_APPLIED_PERCENT = createField(DSL.name("restrictions_applied_percent"), SQLDataType.NUMERIC, this, "Применено ограничений в процентах"); + + /** + * The column + * total_registered.subpoenas.introduced_measures_percent. + * Введено реализатором мер в процентах + */ + public final TableField INTRODUCED_MEASURES_PERCENT = createField(DSL.name("introduced_measures_percent"), SQLDataType.NUMERIC, this, "Введено реализатором мер в процентах"); + + /** + * The column total_registered.subpoenas.recruitment_id. + */ + public final TableField RECRUITMENT_ID = createField(DSL.name("recruitment_id"), SQLDataType.UUID, this, ""); + + /** + * The column total_registered.subpoenas.testrecruitment_id. + */ + public final TableField TESTRECRUITMENT_ID = createField(DSL.name("testrecruitment_id"), SQLDataType.CHAR(36), this, ""); + + /** + * The column total_registered.subpoenas.testmil_reg. + */ + public final TableField TESTMIL_REG = createField(DSL.name("testmil_reg"), SQLDataType.NUMERIC, this, ""); + + private Subpoenas(Name alias, Table aliased) { + this(alias, aliased, (Field[]) null, null); + } + + private Subpoenas(Name alias, Table aliased, Field[] parameters, Condition where) { + super(alias, null, aliased, parameters, DSL.comment("Повестки состоящих/не состоящих на учете уровень РФ"), TableOptions.table(), where); + } + + /** + * Create an aliased total_registered.subpoenas table reference + */ + public Subpoenas(String alias) { + this(DSL.name(alias), SUBPOENAS); + } + + /** + * Create an aliased total_registered.subpoenas table reference + */ + public Subpoenas(Name alias) { + this(alias, SUBPOENAS); + } + + /** + * Create a total_registered.subpoenas table reference + */ + public Subpoenas() { + this(DSL.name("subpoenas"), null); + } + + public Subpoenas(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath, SUBPOENAS); + } + + /** + * A subtype implementing {@link Path} for simplified path-based joins. + */ + public static class SubpoenasPath extends Subpoenas implements Path { + public SubpoenasPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath); + } + private SubpoenasPath(Name alias, Table aliased) { + super(alias, aliased); + } + + @Override + public SubpoenasPath as(String alias) { + return new SubpoenasPath(DSL.name(alias), this); + } + + @Override + public SubpoenasPath as(Name alias) { + return new SubpoenasPath(alias, this); + } + + @Override + public SubpoenasPath as(Table alias) { + return new SubpoenasPath(alias.getQualifiedName(), this); + } + } + + @Override + public Schema getSchema() { + return aliased() ? null : TotalRegistered.TOTAL_REGISTERED; + } + + @Override + public Identity getIdentity() { + return (Identity) super.getIdentity(); + } + + @Override + public UniqueKey getPrimaryKey() { + return Keys.PK_SUBPOENA; + } + + @Override + public List> getReferences() { + return Arrays.asList(Keys.SUBPOENAS__TR_SUBPOENAS_FK1); + } + + private transient PubRecruitmentPath _pubRecruitment; + + /** + * Get the implicit join path to the public.pub_recruitment + * table. + */ + public PubRecruitmentPath pubRecruitment() { + if (_pubRecruitment == null) + _pubRecruitment = new PubRecruitmentPath(this, Keys.SUBPOENAS__TR_SUBPOENAS_FK1, null); + + return _pubRecruitment; + } + + @Override + public Subpoenas as(String alias) { + return new Subpoenas(DSL.name(alias), this); + } + + @Override + public Subpoenas as(Name alias) { + return new Subpoenas(alias, this); + } + + @Override + public Subpoenas as(Table alias) { + return new Subpoenas(alias.getQualifiedName(), this); + } + + /** + * Rename this table + */ + @Override + public Subpoenas rename(String name) { + return new Subpoenas(DSL.name(name), null); + } + + /** + * Rename this table + */ + @Override + public Subpoenas rename(Name name) { + return new Subpoenas(name, null); + } + + /** + * Rename this table + */ + @Override + public Subpoenas rename(Table name) { + return new Subpoenas(name.getQualifiedName(), null); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Subpoenas where(Condition condition) { + return new Subpoenas(getQualifiedName(), aliased() ? this : null, null, condition); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Subpoenas where(Collection conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Subpoenas where(Condition... conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Subpoenas where(Field condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Subpoenas where(SQL condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Subpoenas where(@Stringly.SQL String condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Subpoenas where(@Stringly.SQL String condition, Object... binds) { + return where(DSL.condition(condition, binds)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Subpoenas where(@Stringly.SQL String condition, QueryPart... parts) { + return where(DSL.condition(condition, parts)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Subpoenas whereExists(Select select) { + return where(DSL.exists(select)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Subpoenas whereNotExists(Select select) { + return where(DSL.notExists(select)); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/total_registered/tables/records/AgeRecord.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/total_registered/tables/records/AgeRecord.java new file mode 100644 index 0000000..4f4738e --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/total_registered/tables/records/AgeRecord.java @@ -0,0 +1,386 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.records; + + +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.Age; + +import java.math.BigDecimal; +import java.sql.Date; +import java.util.UUID; + +import org.jooq.Record1; +import org.jooq.impl.UpdatableRecordImpl; + + +/** + * Возраст состоящих/не состоящих, мужчин/женщин/всех на учете уровень РФ + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class AgeRecord extends UpdatableRecordImpl { + + private static final long serialVersionUID = 1L; + + /** + * Setter for total_registered.age.id_age. + */ + public void setIdAge(Long value) { + set(0, value); + } + + /** + * Getter for total_registered.age.id_age. + */ + public Long getIdAge() { + return (Long) get(0); + } + + /** + * Setter for total_registered.age.17_yaers. Возраст 17 + */ + public void set_17Yaers(BigDecimal value) { + set(1, value); + } + + /** + * Getter for total_registered.age.17_yaers. Возраст 17 + */ + public BigDecimal get_17Yaers() { + return (BigDecimal) get(1); + } + + /** + * Setter for total_registered.age.18-26_years. Возраст 18-26 + */ + public void set_18_26Years(BigDecimal value) { + set(2, value); + } + + /** + * Getter for total_registered.age.18-26_years. Возраст 18-26 + */ + public BigDecimal get_18_26Years() { + return (BigDecimal) get(2); + } + + /** + * Setter for total_registered.age.27-30_years. Возраст 27-30 + */ + public void set_27_30Years(BigDecimal value) { + set(3, value); + } + + /** + * Getter for total_registered.age.27-30_years. Возраст 27-30 + */ + public BigDecimal get_27_30Years() { + return (BigDecimal) get(3); + } + + /** + * Setter for total_registered.age.31-35_years. Возраст 31-35 + */ + public void set_31_35Years(BigDecimal value) { + set(4, value); + } + + /** + * Getter for total_registered.age.31-35_years. Возраст 31-35 + */ + public BigDecimal get_31_35Years() { + return (BigDecimal) get(4); + } + + /** + * Setter for total_registered.age.36-40_years. Возраст 36-40 + */ + public void set_36_40Years(BigDecimal value) { + set(5, value); + } + + /** + * Getter for total_registered.age.36-40_years. Возраст 36-40 + */ + public BigDecimal get_36_40Years() { + return (BigDecimal) get(5); + } + + /** + * Setter for total_registered.age.41-45_years. Возраст 41-45 + */ + public void set_41_45Years(BigDecimal value) { + set(6, value); + } + + /** + * Getter for total_registered.age.41-45_years. Возраст 41-45 + */ + public BigDecimal get_41_45Years() { + return (BigDecimal) get(6); + } + + /** + * Setter for total_registered.age.51+_years. Возраст 51+ + */ + public void set_51_2bYears(BigDecimal value) { + set(7, value); + } + + /** + * Getter for total_registered.age.51+_years. Возраст 51+ + */ + public BigDecimal get_51_2bYears() { + return (BigDecimal) get(7); + } + + /** + * Setter for total_registered.age.all_M_W. Все/мужчины/женщины + */ + public void setAllMW(String value) { + set(8, value); + } + + /** + * Getter for total_registered.age.all_M_W. Все/мужчины/женщины + */ + public String getAllMW() { + return (String) get(8); + } + + /** + * Setter for total_registered.age.registered. Состоит на учете + * или нет + */ + public void setRegistered(Boolean value) { + set(9, value); + } + + /** + * Getter for total_registered.age.registered. Состоит на учете + * или нет + */ + public Boolean getRegistered() { + return (Boolean) get(9); + } + + /** + * Setter for total_registered.age.recording_date. Дата записи + */ + public void setRecordingDate(Date value) { + set(10, value); + } + + /** + * Getter for total_registered.age.recording_date. Дата записи + */ + public Date getRecordingDate() { + return (Date) get(10); + } + + /** + * Setter for total_registered.age.46-50_years. Возраст 46-50 + */ + public void set_46_50Years(BigDecimal value) { + set(11, value); + } + + /** + * Getter for total_registered.age.46-50_years. Возраст 46-50 + */ + public BigDecimal get_46_50Years() { + return (BigDecimal) get(11); + } + + /** + * Setter for total_registered.age.17_yaers_percent. Возраст 17 + * в процентах + */ + public void set_17YaersPercent(BigDecimal value) { + set(12, value); + } + + /** + * Getter for total_registered.age.17_yaers_percent. Возраст 17 + * в процентах + */ + public BigDecimal get_17YaersPercent() { + return (BigDecimal) get(12); + } + + /** + * Setter for total_registered.age.18-26_years_percent. Возраст + * 18-26 в процентах + */ + public void set_18_26YearsPercent(BigDecimal value) { + set(13, value); + } + + /** + * Getter for total_registered.age.18-26_years_percent. Возраст + * 18-26 в процентах + */ + public BigDecimal get_18_26YearsPercent() { + return (BigDecimal) get(13); + } + + /** + * Setter for total_registered.age.27-30_years_percent. Возраст + * 27-30 в процентах + */ + public void set_27_30YearsPercent(BigDecimal value) { + set(14, value); + } + + /** + * Getter for total_registered.age.27-30_years_percent. Возраст + * 27-30 в процентах + */ + public BigDecimal get_27_30YearsPercent() { + return (BigDecimal) get(14); + } + + /** + * Setter for total_registered.age.31-35_years_percent. Возраст + * 31-35 в процентах + */ + public void set_31_35YearsPercent(BigDecimal value) { + set(15, value); + } + + /** + * Getter for total_registered.age.31-35_years_percent. Возраст + * 31-35 в процентах + */ + public BigDecimal get_31_35YearsPercent() { + return (BigDecimal) get(15); + } + + /** + * Setter for total_registered.age.36-40_years_percent. Возраст + * 36-40 в процентах + */ + public void set_36_40YearsPercent(BigDecimal value) { + set(16, value); + } + + /** + * Getter for total_registered.age.36-40_years_percent. Возраст + * 36-40 в процентах + */ + public BigDecimal get_36_40YearsPercent() { + return (BigDecimal) get(16); + } + + /** + * Setter for total_registered.age.41-45_years_percent. Возраст + * 41-45 в процентах + */ + public void set_41_45YearsPercent(BigDecimal value) { + set(17, value); + } + + /** + * Getter for total_registered.age.41-45_years_percent. Возраст + * 41-45 в процентах + */ + public BigDecimal get_41_45YearsPercent() { + return (BigDecimal) get(17); + } + + /** + * Setter for total_registered.age.46-50_years_percent. Возраст + * 46-50 в процентах + */ + public void set_46_50YearsPercent(BigDecimal value) { + set(18, value); + } + + /** + * Getter for total_registered.age.46-50_years_percent. Возраст + * 46-50 в процентах + */ + public BigDecimal get_46_50YearsPercent() { + return (BigDecimal) get(18); + } + + /** + * Setter for total_registered.age.51+_years_percent. Возраст + * 51+ в процентах + */ + public void set_51_2bYearsPercent(BigDecimal value) { + set(19, value); + } + + /** + * Getter for total_registered.age.51+_years_percent. Возраст + * 51+ в процентах + */ + public BigDecimal get_51_2bYearsPercent() { + return (BigDecimal) get(19); + } + + /** + * Setter for total_registered.age.recruitment_id. + */ + public void setRecruitmentId(UUID value) { + set(20, value); + } + + /** + * Getter for total_registered.age.recruitment_id. + */ + public UUID getRecruitmentId() { + return (UUID) get(20); + } + + // ------------------------------------------------------------------------- + // Primary key information + // ------------------------------------------------------------------------- + + @Override + public Record1 key() { + return (Record1) super.key(); + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached AgeRecord + */ + public AgeRecord() { + super(Age.AGE); + } + + /** + * Create a detached, initialised AgeRecord + */ + public AgeRecord(Long idAge, BigDecimal _17Yaers, BigDecimal _18_26Years, BigDecimal _27_30Years, BigDecimal _31_35Years, BigDecimal _36_40Years, BigDecimal _41_45Years, BigDecimal _51_2bYears, String allMW, Boolean registered, Date recordingDate, BigDecimal _46_50Years, BigDecimal _17YaersPercent, BigDecimal _18_26YearsPercent, BigDecimal _27_30YearsPercent, BigDecimal _31_35YearsPercent, BigDecimal _36_40YearsPercent, BigDecimal _41_45YearsPercent, BigDecimal _46_50YearsPercent, BigDecimal _51_2bYearsPercent, UUID recruitmentId) { + super(Age.AGE); + + setIdAge(idAge); + set_17Yaers(_17Yaers); + set_18_26Years(_18_26Years); + set_27_30Years(_27_30Years); + set_31_35Years(_31_35Years); + set_36_40Years(_36_40Years); + set_41_45Years(_41_45Years); + set_51_2bYears(_51_2bYears); + setAllMW(allMW); + setRegistered(registered); + setRecordingDate(recordingDate); + set_46_50Years(_46_50Years); + set_17YaersPercent(_17YaersPercent); + set_18_26YearsPercent(_18_26YearsPercent); + set_27_30YearsPercent(_27_30YearsPercent); + set_31_35YearsPercent(_31_35YearsPercent); + set_36_40YearsPercent(_36_40YearsPercent); + set_41_45YearsPercent(_41_45YearsPercent); + set_46_50YearsPercent(_46_50YearsPercent); + set_51_2bYearsPercent(_51_2bYearsPercent); + setRecruitmentId(recruitmentId); + resetChangedOnNotNull(); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/total_registered/tables/records/BusynessRecord.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/total_registered/tables/records/BusynessRecord.java new file mode 100644 index 0000000..2515808 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/total_registered/tables/records/BusynessRecord.java @@ -0,0 +1,230 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.records; + + +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.Busyness; + +import java.math.BigDecimal; +import java.sql.Date; +import java.util.UUID; + +import org.jooq.Record1; +import org.jooq.impl.UpdatableRecordImpl; + + +/** + * Занятость состоящих/не состоящих, мужчин/женщин/всех на учете уровень РФ + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class BusynessRecord extends UpdatableRecordImpl { + + private static final long serialVersionUID = 1L; + + /** + * Setter for total_registered.busyness.id_busyness. + */ + public void setIdBusyness(Long value) { + set(0, value); + } + + /** + * Getter for total_registered.busyness.id_busyness. + */ + public Long getIdBusyness() { + return (Long) get(0); + } + + /** + * Setter for total_registered.busyness.study. Учатся + */ + public void setStudy(BigDecimal value) { + set(1, value); + } + + /** + * Getter for total_registered.busyness.study. Учатся + */ + public BigDecimal getStudy() { + return (BigDecimal) get(1); + } + + /** + * Setter for total_registered.busyness.work. Работают + */ + public void setWork(BigDecimal value) { + set(2, value); + } + + /** + * Getter for total_registered.busyness.work. Работают + */ + public BigDecimal getWork() { + return (BigDecimal) get(2); + } + + /** + * Setter for total_registered.busyness.not_work. Безработные + */ + public void setNotWork(BigDecimal value) { + set(3, value); + } + + /** + * Getter for total_registered.busyness.not_work. Безработные + */ + public BigDecimal getNotWork() { + return (BigDecimal) get(3); + } + + /** + * Setter for total_registered.busyness.all_M_W. + * Все/Мужчины/Женщины + */ + public void setAllMW(String value) { + set(4, value); + } + + /** + * Getter for total_registered.busyness.all_M_W. + * Все/Мужчины/Женщины + */ + public String getAllMW() { + return (String) get(4); + } + + /** + * Setter for total_registered.busyness.registered. Состоит на + * учете/не состоит + */ + public void setRegistered(Boolean value) { + set(5, value); + } + + /** + * Getter for total_registered.busyness.registered. Состоит на + * учете/не состоит + */ + public Boolean getRegistered() { + return (Boolean) get(5); + } + + /** + * Setter for total_registered.busyness.recording_date. Дата + * записи + */ + public void setRecordingDate(Date value) { + set(6, value); + } + + /** + * Getter for total_registered.busyness.recording_date. Дата + * записи + */ + public Date getRecordingDate() { + return (Date) get(6); + } + + /** + * Setter for total_registered.busyness.study_percent. Учатся в + * процентах + */ + public void setStudyPercent(BigDecimal value) { + set(7, value); + } + + /** + * Getter for total_registered.busyness.study_percent. Учатся в + * процентах + */ + public BigDecimal getStudyPercent() { + return (BigDecimal) get(7); + } + + /** + * Setter for total_registered.busyness.work_percent. Работают + * в процентах + */ + public void setWorkPercent(BigDecimal value) { + set(8, value); + } + + /** + * Getter for total_registered.busyness.work_percent. Работают + * в процентах + */ + public BigDecimal getWorkPercent() { + return (BigDecimal) get(8); + } + + /** + * Setter for total_registered.busyness.not_work_percent. + * Безработные в процентах + */ + public void setNotWorkPercent(BigDecimal value) { + set(9, value); + } + + /** + * Getter for total_registered.busyness.not_work_percent. + * Безработные в процентах + */ + public BigDecimal getNotWorkPercent() { + return (BigDecimal) get(9); + } + + /** + * Setter for total_registered.busyness.recruitment_id. + */ + public void setRecruitmentId(UUID value) { + set(10, value); + } + + /** + * Getter for total_registered.busyness.recruitment_id. + */ + public UUID getRecruitmentId() { + return (UUID) get(10); + } + + // ------------------------------------------------------------------------- + // Primary key information + // ------------------------------------------------------------------------- + + @Override + public Record1 key() { + return (Record1) super.key(); + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached BusynessRecord + */ + public BusynessRecord() { + super(Busyness.BUSYNESS); + } + + /** + * Create a detached, initialised BusynessRecord + */ + public BusynessRecord(Long idBusyness, BigDecimal study, BigDecimal work, BigDecimal notWork, String allMW, Boolean registered, Date recordingDate, BigDecimal studyPercent, BigDecimal workPercent, BigDecimal notWorkPercent, UUID recruitmentId) { + super(Busyness.BUSYNESS); + + setIdBusyness(idBusyness); + setStudy(study); + setWork(work); + setNotWork(notWork); + setAllMW(allMW); + setRegistered(registered); + setRecordingDate(recordingDate); + setStudyPercent(studyPercent); + setWorkPercent(workPercent); + setNotWorkPercent(notWorkPercent); + setRecruitmentId(recruitmentId); + resetChangedOnNotNull(); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/total_registered/tables/records/ChildMinorRecord.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/total_registered/tables/records/ChildMinorRecord.java new file mode 100644 index 0000000..9f57004 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/total_registered/tables/records/ChildMinorRecord.java @@ -0,0 +1,281 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.records; + + +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.ChildMinor; + +import java.math.BigDecimal; +import java.sql.Date; +import java.util.UUID; + +import org.jooq.Record1; +import org.jooq.impl.UpdatableRecordImpl; + + +/** + * Дети то 18 лет состоящих/не состоящих, мужчин/женщин/всех на учете уровень РФ + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class ChildMinorRecord extends UpdatableRecordImpl { + + private static final long serialVersionUID = 1L; + + /** + * Setter for total_registered.child_minor.id_child_minor. + */ + public void setIdChildMinor(Long value) { + set(0, value); + } + + /** + * Getter for total_registered.child_minor.id_child_minor. + */ + public Long getIdChildMinor() { + return (Long) get(0); + } + + /** + * Setter for total_registered.child_minor.no_child. Нет детей + */ + public void setNoChild(BigDecimal value) { + set(1, value); + } + + /** + * Getter for total_registered.child_minor.no_child. Нет детей + */ + public BigDecimal getNoChild() { + return (BigDecimal) get(1); + } + + /** + * Setter for total_registered.child_minor.1_child. 1 ребенок + */ + public void set_1Child(BigDecimal value) { + set(2, value); + } + + /** + * Getter for total_registered.child_minor.1_child. 1 ребенок + */ + public BigDecimal get_1Child() { + return (BigDecimal) get(2); + } + + /** + * Setter for total_registered.child_minor.2_child. 2 ребенка + */ + public void set_2Child(BigDecimal value) { + set(3, value); + } + + /** + * Getter for total_registered.child_minor.2_child. 2 ребенка + */ + public BigDecimal get_2Child() { + return (BigDecimal) get(3); + } + + /** + * Setter for total_registered.child_minor.3_child. 3 ребенка + */ + public void set_3Child(BigDecimal value) { + set(4, value); + } + + /** + * Getter for total_registered.child_minor.3_child. 3 ребенка + */ + public BigDecimal get_3Child() { + return (BigDecimal) get(4); + } + + /** + * Setter for total_registered.child_minor.4_more_child. 4 и + * более + */ + public void set_4MoreChild(BigDecimal value) { + set(5, value); + } + + /** + * Getter for total_registered.child_minor.4_more_child. 4 и + * более + */ + public BigDecimal get_4MoreChild() { + return (BigDecimal) get(5); + } + + /** + * Setter for total_registered.child_minor.all_M_W. + * Все/Мужчины/Женщины + */ + public void setAllMW(String value) { + set(6, value); + } + + /** + * Getter for total_registered.child_minor.all_M_W. + * Все/Мужчины/Женщины + */ + public String getAllMW() { + return (String) get(6); + } + + /** + * Setter for total_registered.child_minor.recording_date. Дата + * записи + */ + public void setRecordingDate(Date value) { + set(7, value); + } + + /** + * Getter for total_registered.child_minor.recording_date. Дата + * записи + */ + public Date getRecordingDate() { + return (Date) get(7); + } + + /** + * Setter for total_registered.child_minor.no_child_percent. + * Нет детей в процентах + */ + public void setNoChildPercent(BigDecimal value) { + set(8, value); + } + + /** + * Getter for total_registered.child_minor.no_child_percent. + * Нет детей в процентах + */ + public BigDecimal getNoChildPercent() { + return (BigDecimal) get(8); + } + + /** + * Setter for total_registered.child_minor.1_child_percent. 1 + * ребенок в процентах + */ + public void set_1ChildPercent(BigDecimal value) { + set(9, value); + } + + /** + * Getter for total_registered.child_minor.1_child_percent. 1 + * ребенок в процентах + */ + public BigDecimal get_1ChildPercent() { + return (BigDecimal) get(9); + } + + /** + * Setter for total_registered.child_minor.2_child_percent. 2 + * ребенка в процентах + */ + public void set_2ChildPercent(BigDecimal value) { + set(10, value); + } + + /** + * Getter for total_registered.child_minor.2_child_percent. 2 + * ребенка в процентах + */ + public BigDecimal get_2ChildPercent() { + return (BigDecimal) get(10); + } + + /** + * Setter for total_registered.child_minor.3_child_percent. 3 + * ребенка в процентах + */ + public void set_3ChildPercent(BigDecimal value) { + set(11, value); + } + + /** + * Getter for total_registered.child_minor.3_child_percent. 3 + * ребенка в процентах + */ + public BigDecimal get_3ChildPercent() { + return (BigDecimal) get(11); + } + + /** + * Setter for + * total_registered.child_minor.4_more_child_percent. 4 и более + * ребенка в процентах + */ + public void set_4MoreChildPercent(BigDecimal value) { + set(12, value); + } + + /** + * Getter for + * total_registered.child_minor.4_more_child_percent. 4 и более + * ребенка в процентах + */ + public BigDecimal get_4MoreChildPercent() { + return (BigDecimal) get(12); + } + + /** + * Setter for total_registered.child_minor.recruitment_id. + */ + public void setRecruitmentId(UUID value) { + set(13, value); + } + + /** + * Getter for total_registered.child_minor.recruitment_id. + */ + public UUID getRecruitmentId() { + return (UUID) get(13); + } + + // ------------------------------------------------------------------------- + // Primary key information + // ------------------------------------------------------------------------- + + @Override + public Record1 key() { + return (Record1) super.key(); + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached ChildMinorRecord + */ + public ChildMinorRecord() { + super(ChildMinor.CHILD_MINOR); + } + + /** + * Create a detached, initialised ChildMinorRecord + */ + public ChildMinorRecord(Long idChildMinor, BigDecimal noChild, BigDecimal _1Child, BigDecimal _2Child, BigDecimal _3Child, BigDecimal _4MoreChild, String allMW, Date recordingDate, BigDecimal noChildPercent, BigDecimal _1ChildPercent, BigDecimal _2ChildPercent, BigDecimal _3ChildPercent, BigDecimal _4MoreChildPercent, UUID recruitmentId) { + super(ChildMinor.CHILD_MINOR); + + setIdChildMinor(idChildMinor); + setNoChild(noChild); + set_1Child(_1Child); + set_2Child(_2Child); + set_3Child(_3Child); + set_4MoreChild(_4MoreChild); + setAllMW(allMW); + setRecordingDate(recordingDate); + setNoChildPercent(noChildPercent); + set_1ChildPercent(_1ChildPercent); + set_2ChildPercent(_2ChildPercent); + set_3ChildPercent(_3ChildPercent); + set_4MoreChildPercent(_4MoreChildPercent); + setRecruitmentId(recruitmentId); + resetChangedOnNotNull(); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/total_registered/tables/records/DriverLicenseRecord.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/total_registered/tables/records/DriverLicenseRecord.java new file mode 100644 index 0000000..64bafb3 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/total_registered/tables/records/DriverLicenseRecord.java @@ -0,0 +1,314 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.records; + + +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.DriverLicense; + +import java.math.BigDecimal; +import java.sql.Date; +import java.util.UUID; + +import org.jooq.Record1; +import org.jooq.impl.UpdatableRecordImpl; + + +/** + * Наличие водительского удостоверения состоящих/не состоящих, + * мужчин/женщин/всех на учете уровень РФ + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class DriverLicenseRecord extends UpdatableRecordImpl { + + private static final long serialVersionUID = 1L; + + /** + * Setter for + * total_registered.driver_license.id_driver_license. + */ + public void setIdDriverLicense(Long value) { + set(0, value); + } + + /** + * Getter for + * total_registered.driver_license.id_driver_license. + */ + public Long getIdDriverLicense() { + return (Long) get(0); + } + + /** + * Setter for total_registered.driver_license.nope. нет + * водительского удостоверения + */ + public void setNope(BigDecimal value) { + set(1, value); + } + + /** + * Getter for total_registered.driver_license.nope. нет + * водительского удостоверения + */ + public BigDecimal getNope() { + return (BigDecimal) get(1); + } + + /** + * Setter for total_registered.driver_license.A. категория A + */ + public void setA(BigDecimal value) { + set(2, value); + } + + /** + * Getter for total_registered.driver_license.A. категория A + */ + public BigDecimal getA() { + return (BigDecimal) get(2); + } + + /** + * Setter for total_registered.driver_license.B. категория B + */ + public void setB(BigDecimal value) { + set(3, value); + } + + /** + * Getter for total_registered.driver_license.B. категория B + */ + public BigDecimal getB() { + return (BigDecimal) get(3); + } + + /** + * Setter for total_registered.driver_license.C. категория C + */ + public void setC(BigDecimal value) { + set(4, value); + } + + /** + * Getter for total_registered.driver_license.C. категория C + */ + public BigDecimal getC() { + return (BigDecimal) get(4); + } + + /** + * Setter for total_registered.driver_license.D. категория D + */ + public void setD(BigDecimal value) { + set(5, value); + } + + /** + * Getter for total_registered.driver_license.D. категория D + */ + public BigDecimal getD() { + return (BigDecimal) get(5); + } + + /** + * Setter for total_registered.driver_license.E. категория E + */ + public void setE(BigDecimal value) { + set(6, value); + } + + /** + * Getter for total_registered.driver_license.E. категория E + */ + public BigDecimal getE() { + return (BigDecimal) get(6); + } + + /** + * Setter for total_registered.driver_license.all_M_W. + * Все/Мужчины/Женщины + */ + public void setAllMW(String value) { + set(7, value); + } + + /** + * Getter for total_registered.driver_license.all_M_W. + * Все/Мужчины/Женщины + */ + public String getAllMW() { + return (String) get(7); + } + + /** + * Setter for total_registered.driver_license.recording_date. + * Дата записи + */ + public void setRecordingDate(Date value) { + set(8, value); + } + + /** + * Getter for total_registered.driver_license.recording_date. + * Дата записи + */ + public Date getRecordingDate() { + return (Date) get(8); + } + + /** + * Setter for total_registered.driver_license.nope_repcent. нет + * водительского удостоверения в процентах + */ + public void setNopeRepcent(BigDecimal value) { + set(9, value); + } + + /** + * Getter for total_registered.driver_license.nope_repcent. нет + * водительского удостоверения в процентах + */ + public BigDecimal getNopeRepcent() { + return (BigDecimal) get(9); + } + + /** + * Setter for total_registered.driver_license.A_repcent. + * категория A в процентах + */ + public void setARepcent(BigDecimal value) { + set(10, value); + } + + /** + * Getter for total_registered.driver_license.A_repcent. + * категория A в процентах + */ + public BigDecimal getARepcent() { + return (BigDecimal) get(10); + } + + /** + * Setter for total_registered.driver_license.B_repcent. + * категория B в процентах + */ + public void setBRepcent(BigDecimal value) { + set(11, value); + } + + /** + * Getter for total_registered.driver_license.B_repcent. + * категория B в процентах + */ + public BigDecimal getBRepcent() { + return (BigDecimal) get(11); + } + + /** + * Setter for total_registered.driver_license.C_repcent. + * категория C в процентах + */ + public void setCRepcent(BigDecimal value) { + set(12, value); + } + + /** + * Getter for total_registered.driver_license.C_repcent. + * категория C в процентах + */ + public BigDecimal getCRepcent() { + return (BigDecimal) get(12); + } + + /** + * Setter for total_registered.driver_license.D_repcent. + * категория D в процентах + */ + public void setDRepcent(BigDecimal value) { + set(13, value); + } + + /** + * Getter for total_registered.driver_license.D_repcent. + * категория D в процентах + */ + public BigDecimal getDRepcent() { + return (BigDecimal) get(13); + } + + /** + * Setter for total_registered.driver_license.E_repcent. + * категория E в процентах + */ + public void setERepcent(BigDecimal value) { + set(14, value); + } + + /** + * Getter for total_registered.driver_license.E_repcent. + * категория E в процентах + */ + public BigDecimal getERepcent() { + return (BigDecimal) get(14); + } + + /** + * Setter for total_registered.driver_license.recruitment_id. + */ + public void setRecruitmentId(UUID value) { + set(15, value); + } + + /** + * Getter for total_registered.driver_license.recruitment_id. + */ + public UUID getRecruitmentId() { + return (UUID) get(15); + } + + // ------------------------------------------------------------------------- + // Primary key information + // ------------------------------------------------------------------------- + + @Override + public Record1 key() { + return (Record1) super.key(); + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached DriverLicenseRecord + */ + public DriverLicenseRecord() { + super(DriverLicense.DRIVER_LICENSE); + } + + /** + * Create a detached, initialised DriverLicenseRecord + */ + public DriverLicenseRecord(Long idDriverLicense, BigDecimal nope, BigDecimal a, BigDecimal b, BigDecimal c, BigDecimal d, BigDecimal e, String allMW, Date recordingDate, BigDecimal nopeRepcent, BigDecimal aRepcent, BigDecimal bRepcent, BigDecimal cRepcent, BigDecimal dRepcent, BigDecimal eRepcent, UUID recruitmentId) { + super(DriverLicense.DRIVER_LICENSE); + + setIdDriverLicense(idDriverLicense); + setNope(nope); + setA(a); + setB(b); + setC(c); + setD(d); + setE(e); + setAllMW(allMW); + setRecordingDate(recordingDate); + setNopeRepcent(nopeRepcent); + setARepcent(aRepcent); + setBRepcent(bRepcent); + setCRepcent(cRepcent); + setDRepcent(dRepcent); + setERepcent(eRepcent); + setRecruitmentId(recruitmentId); + resetChangedOnNotNull(); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/total_registered/tables/records/EducationLevelRecord.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/total_registered/tables/records/EducationLevelRecord.java new file mode 100644 index 0000000..d64ca51 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/total_registered/tables/records/EducationLevelRecord.java @@ -0,0 +1,258 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.records; + + +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.EducationLevel; + +import java.math.BigDecimal; +import java.sql.Date; +import java.util.UUID; + +import org.jooq.Record1; +import org.jooq.impl.UpdatableRecordImpl; + + +/** + * Уровень образования состоящих/не состоящих, мужчин/женщин/всех на учете + * уровень РФ + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class EducationLevelRecord extends UpdatableRecordImpl { + + private static final long serialVersionUID = 1L; + + /** + * Setter for + * total_registered.education_level.id_education_level. + */ + public void setIdEducationLevel(Long value) { + set(0, value); + } + + /** + * Getter for + * total_registered.education_level.id_education_level. + */ + public Long getIdEducationLevel() { + return (Long) get(0); + } + + /** + * Setter for total_registered.education_level.higher. Высшее + * образование + */ + public void setHigher(BigDecimal value) { + set(1, value); + } + + /** + * Getter for total_registered.education_level.higher. Высшее + * образование + */ + public BigDecimal getHigher() { + return (BigDecimal) get(1); + } + + /** + * Setter for total_registered.education_level.average. Среднее + * профессиональное + */ + public void setAverage(BigDecimal value) { + set(2, value); + } + + /** + * Getter for total_registered.education_level.average. Среднее + * профессиональное + */ + public BigDecimal getAverage() { + return (BigDecimal) get(2); + } + + /** + * Setter for total_registered.education_level.all_M_W. + * Все/Мужчины/Женщины + */ + public void setAllMW(String value) { + set(3, value); + } + + /** + * Getter for total_registered.education_level.all_M_W. + * Все/Мужчины/Женщины + */ + public String getAllMW() { + return (String) get(3); + } + + /** + * Setter for total_registered.education_level.only_general. + * Только общее + */ + public void setOnlyGeneral(BigDecimal value) { + set(4, value); + } + + /** + * Getter for total_registered.education_level.only_general. + * Только общее + */ + public BigDecimal getOnlyGeneral() { + return (BigDecimal) get(4); + } + + /** + * Setter for total_registered.education_level.no_data. Нет + * данных + */ + public void setNoData(BigDecimal value) { + set(5, value); + } + + /** + * Getter for total_registered.education_level.no_data. Нет + * данных + */ + public BigDecimal getNoData() { + return (BigDecimal) get(5); + } + + /** + * Setter for total_registered.education_level.recording_date. + * Дата записи + */ + public void setRecordingDate(Date value) { + set(6, value); + } + + /** + * Getter for total_registered.education_level.recording_date. + * Дата записи + */ + public Date getRecordingDate() { + return (Date) get(6); + } + + /** + * Setter for total_registered.education_level.higher_percent. + * Высшее образование в процентах + */ + public void setHigherPercent(BigDecimal value) { + set(7, value); + } + + /** + * Getter for total_registered.education_level.higher_percent. + * Высшее образование в процентах + */ + public BigDecimal getHigherPercent() { + return (BigDecimal) get(7); + } + + /** + * Setter for total_registered.education_level.average_percent. + * Среднее профессиональное в процентах + */ + public void setAveragePercent(BigDecimal value) { + set(8, value); + } + + /** + * Getter for total_registered.education_level.average_percent. + * Среднее профессиональное в процентах + */ + public BigDecimal getAveragePercent() { + return (BigDecimal) get(8); + } + + /** + * Setter for + * total_registered.education_level.only_general_percent. + * Только общее в процентах + */ + public void setOnlyGeneralPercent(BigDecimal value) { + set(9, value); + } + + /** + * Getter for + * total_registered.education_level.only_general_percent. + * Только общее в процентах + */ + public BigDecimal getOnlyGeneralPercent() { + return (BigDecimal) get(9); + } + + /** + * Setter for total_registered.education_level.no_data_percent. + * Нет данных об образованиии в процентах + */ + public void setNoDataPercent(BigDecimal value) { + set(10, value); + } + + /** + * Getter for total_registered.education_level.no_data_percent. + * Нет данных об образованиии в процентах + */ + public BigDecimal getNoDataPercent() { + return (BigDecimal) get(10); + } + + /** + * Setter for total_registered.education_level.recruitment_id. + */ + public void setRecruitmentId(UUID value) { + set(11, value); + } + + /** + * Getter for total_registered.education_level.recruitment_id. + */ + public UUID getRecruitmentId() { + return (UUID) get(11); + } + + // ------------------------------------------------------------------------- + // Primary key information + // ------------------------------------------------------------------------- + + @Override + public Record1 key() { + return (Record1) super.key(); + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached EducationLevelRecord + */ + public EducationLevelRecord() { + super(EducationLevel.EDUCATION_LEVEL); + } + + /** + * Create a detached, initialised EducationLevelRecord + */ + public EducationLevelRecord(Long idEducationLevel, BigDecimal higher, BigDecimal average, String allMW, BigDecimal onlyGeneral, BigDecimal noData, Date recordingDate, BigDecimal higherPercent, BigDecimal averagePercent, BigDecimal onlyGeneralPercent, BigDecimal noDataPercent, UUID recruitmentId) { + super(EducationLevel.EDUCATION_LEVEL); + + setIdEducationLevel(idEducationLevel); + setHigher(higher); + setAverage(average); + setAllMW(allMW); + setOnlyGeneral(onlyGeneral); + setNoData(noData); + setRecordingDate(recordingDate); + setHigherPercent(higherPercent); + setAveragePercent(averagePercent); + setOnlyGeneralPercent(onlyGeneralPercent); + setNoDataPercent(noDataPercent); + setRecruitmentId(recruitmentId); + resetChangedOnNotNull(); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/total_registered/tables/records/MaritalStatusRecord.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/total_registered/tables/records/MaritalStatusRecord.java new file mode 100644 index 0000000..718ca05 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/total_registered/tables/records/MaritalStatusRecord.java @@ -0,0 +1,188 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.records; + + +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.MaritalStatus; + +import java.math.BigDecimal; +import java.sql.Date; +import java.util.UUID; + +import org.jooq.Record1; +import org.jooq.impl.UpdatableRecordImpl; + + +/** + * Семейное положение состоящих/не состоящих, мужчин/женщин/всех на учете + * уровень РФ + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class MaritalStatusRecord extends UpdatableRecordImpl { + + private static final long serialVersionUID = 1L; + + /** + * Setter for + * total_registered.marital_status.id_marital_status. + */ + public void setIdMaritalStatus(Long value) { + set(0, value); + } + + /** + * Getter for + * total_registered.marital_status.id_marital_status. + */ + public Long getIdMaritalStatus() { + return (Long) get(0); + } + + /** + * Setter for total_registered.marital_status.married. В браке + */ + public void setMarried(BigDecimal value) { + set(1, value); + } + + /** + * Getter for total_registered.marital_status.married. В браке + */ + public BigDecimal getMarried() { + return (BigDecimal) get(1); + } + + /** + * Setter for total_registered.marital_status.not_married. + * Холост + */ + public void setNotMarried(BigDecimal value) { + set(2, value); + } + + /** + * Getter for total_registered.marital_status.not_married. + * Холост + */ + public BigDecimal getNotMarried() { + return (BigDecimal) get(2); + } + + /** + * Setter for total_registered.marital_status.all_M_W. + * Все/Мужчины/Женщины + */ + public void setAllMW(String value) { + set(3, value); + } + + /** + * Getter for total_registered.marital_status.all_M_W. + * Все/Мужчины/Женщины + */ + public String getAllMW() { + return (String) get(3); + } + + /** + * Setter for total_registered.marital_status.recording_date. + * Дата записи + */ + public void setRecordingDate(Date value) { + set(4, value); + } + + /** + * Getter for total_registered.marital_status.recording_date. + * Дата записи + */ + public Date getRecordingDate() { + return (Date) get(4); + } + + /** + * Setter for total_registered.marital_status.married_percent. + * В браке в процентах + */ + public void setMarriedPercent(BigDecimal value) { + set(5, value); + } + + /** + * Getter for total_registered.marital_status.married_percent. + * В браке в процентах + */ + public BigDecimal getMarriedPercent() { + return (BigDecimal) get(5); + } + + /** + * Setter for + * total_registered.marital_status.not_married_percent. Холост + * в процентах + */ + public void setNotMarriedPercent(BigDecimal value) { + set(6, value); + } + + /** + * Getter for + * total_registered.marital_status.not_married_percent. Холост + * в процентах + */ + public BigDecimal getNotMarriedPercent() { + return (BigDecimal) get(6); + } + + /** + * Setter for total_registered.marital_status.recruitment_id. + */ + public void setRecruitmentId(UUID value) { + set(7, value); + } + + /** + * Getter for total_registered.marital_status.recruitment_id. + */ + public UUID getRecruitmentId() { + return (UUID) get(7); + } + + // ------------------------------------------------------------------------- + // Primary key information + // ------------------------------------------------------------------------- + + @Override + public Record1 key() { + return (Record1) super.key(); + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached MaritalStatusRecord + */ + public MaritalStatusRecord() { + super(MaritalStatus.MARITAL_STATUS); + } + + /** + * Create a detached, initialised MaritalStatusRecord + */ + public MaritalStatusRecord(Long idMaritalStatus, BigDecimal married, BigDecimal notMarried, String allMW, Date recordingDate, BigDecimal marriedPercent, BigDecimal notMarriedPercent, UUID recruitmentId) { + super(MaritalStatus.MARITAL_STATUS); + + setIdMaritalStatus(idMaritalStatus); + setMarried(married); + setNotMarried(notMarried); + setAllMW(allMW); + setRecordingDate(recordingDate); + setMarriedPercent(marriedPercent); + setNotMarriedPercent(notMarriedPercent); + setRecruitmentId(recruitmentId); + resetChangedOnNotNull(); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/total_registered/tables/records/RegMilCatRecord.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/total_registered/tables/records/RegMilCatRecord.java new file mode 100644 index 0000000..e960702 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/total_registered/tables/records/RegMilCatRecord.java @@ -0,0 +1,364 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.records; + + +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.RegMilCat; + +import java.math.BigDecimal; +import java.sql.Date; +import java.util.UUID; + +import org.jooq.Record1; +import org.jooq.impl.UpdatableRecordImpl; + + +/** + * Категории постановки на воинский учет состоящих/не состоящих на учете уровень + * РФ + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class RegMilCatRecord extends UpdatableRecordImpl { + + private static final long serialVersionUID = 1L; + + /** + * Setter for total_registered.reg_mil_cat.id_reg_mil_cat. + */ + public void setIdRegMilCat(Long value) { + set(0, value); + } + + /** + * Getter for total_registered.reg_mil_cat.id_reg_mil_cat. + */ + public Long getIdRegMilCat() { + return (Long) get(0); + } + + /** + * Setter for total_registered.reg_mil_cat.first_reg_17. + * Первоначальная постановка на воинский учет граждан от 17 лет + */ + public void setFirstReg_17(BigDecimal value) { + set(1, value); + } + + /** + * Getter for total_registered.reg_mil_cat.first_reg_17. + * Первоначальная постановка на воинский учет граждан от 17 лет + */ + public BigDecimal getFirstReg_17() { + return (BigDecimal) get(1); + } + + /** + * Setter for total_registered.reg_mil_cat.first_reg_18. + * Первоначальная постановка на воинский учет граждан от 18 лет + */ + public void setFirstReg_18(BigDecimal value) { + set(2, value); + } + + /** + * Getter for total_registered.reg_mil_cat.first_reg_18. + * Первоначальная постановка на воинский учет граждан от 18 лет + */ + public BigDecimal getFirstReg_18() { + return (BigDecimal) get(2); + } + + /** + * Setter for + * total_registered.reg_mil_cat.returned_dep_liberty. + * Возвратившиеся из мест лишения свободы + */ + public void setReturnedDepLiberty(BigDecimal value) { + set(3, value); + } + + /** + * Getter for + * total_registered.reg_mil_cat.returned_dep_liberty. + * Возвратившиеся из мест лишения свободы + */ + public BigDecimal getReturnedDepLiberty() { + return (BigDecimal) get(3); + } + + /** + * Setter for total_registered.reg_mil_cat.mil_spec_W. Женщины, + * получившие ВУС + */ + public void setMilSpecW(BigDecimal value) { + set(4, value); + } + + /** + * Getter for total_registered.reg_mil_cat.mil_spec_W. Женщины, + * получившие ВУС + */ + public BigDecimal getMilSpecW() { + return (BigDecimal) get(4); + } + + /** + * Setter for total_registered.reg_mil_cat.punished. Отбывающие + * наказание в местах лишения свободы + */ + public void setPunished(BigDecimal value) { + set(5, value); + } + + /** + * Getter for total_registered.reg_mil_cat.punished. Отбывающие + * наказание в местах лишения свободы + */ + public BigDecimal getPunished() { + return (BigDecimal) get(5); + } + + /** + * Setter for + * total_registered.reg_mil_cat.received_citizenship. + * Получившие гражданство + */ + public void setReceivedCitizenship(BigDecimal value) { + set(6, value); + } + + /** + * Getter for + * total_registered.reg_mil_cat.received_citizenship. + * Получившие гражданство + */ + public BigDecimal getReceivedCitizenship() { + return (BigDecimal) get(6); + } + + /** + * Setter for total_registered.reg_mil_cat.mil_reg. Состоит на + * учете/ не состоит + */ + public void setMilReg(Boolean value) { + set(7, value); + } + + /** + * Getter for total_registered.reg_mil_cat.mil_reg. Состоит на + * учете/ не состоит + */ + public Boolean getMilReg() { + return (Boolean) get(7); + } + + /** + * Setter for total_registered.reg_mil_cat.recording_date. Дата + * записи + */ + public void setRecordingDate(Date value) { + set(8, value); + } + + /** + * Getter for total_registered.reg_mil_cat.recording_date. Дата + * записи + */ + public Date getRecordingDate() { + return (Date) get(8); + } + + /** + * Setter for + * total_registered.reg_mil_cat.first_reg_17_percent. + * Первоначальная постановка на воинский учет граждан от 17 лет в процентах + */ + public void setFirstReg_17Percent(BigDecimal value) { + set(9, value); + } + + /** + * Getter for + * total_registered.reg_mil_cat.first_reg_17_percent. + * Первоначальная постановка на воинский учет граждан от 17 лет в процентах + */ + public BigDecimal getFirstReg_17Percent() { + return (BigDecimal) get(9); + } + + /** + * Setter for + * total_registered.reg_mil_cat.first_reg_18_percent. + * Первоначальная постановка на воинский учет граждан от 18 лет в процентах + */ + public void setFirstReg_18Percent(BigDecimal value) { + set(10, value); + } + + /** + * Getter for + * total_registered.reg_mil_cat.first_reg_18_percent. + * Первоначальная постановка на воинский учет граждан от 18 лет в процентах + */ + public BigDecimal getFirstReg_18Percent() { + return (BigDecimal) get(10); + } + + /** + * Setter for + * total_registered.reg_mil_cat.returned_dep_liberty_percent. + * Возвратившиеся из мест лишения свободы в процентах + */ + public void setReturnedDepLibertyPercent(BigDecimal value) { + set(11, value); + } + + /** + * Getter for + * total_registered.reg_mil_cat.returned_dep_liberty_percent. + * Возвратившиеся из мест лишения свободы в процентах + */ + public BigDecimal getReturnedDepLibertyPercent() { + return (BigDecimal) get(11); + } + + /** + * Setter for total_registered.reg_mil_cat.mil_spec_W_percent. + * Женщины, получившие ВУС в процентах + */ + public void setMilSpecWPercent(BigDecimal value) { + set(12, value); + } + + /** + * Getter for total_registered.reg_mil_cat.mil_spec_W_percent. + * Женщины, получившие ВУС в процентах + */ + public BigDecimal getMilSpecWPercent() { + return (BigDecimal) get(12); + } + + /** + * Setter for total_registered.reg_mil_cat.punished_percent. + * Отбывающие наказание в местах лишения свободы в процентах + */ + public void setPunishedPercent(BigDecimal value) { + set(13, value); + } + + /** + * Getter for total_registered.reg_mil_cat.punished_percent. + * Отбывающие наказание в местах лишения свободы в процентах + */ + public BigDecimal getPunishedPercent() { + return (BigDecimal) get(13); + } + + /** + * Setter for + * total_registered.reg_mil_cat.received_citizenship_percent. + * Получившие гражданство в процентах + */ + public void setReceivedCitizenshipPercent(BigDecimal value) { + set(14, value); + } + + /** + * Getter for + * total_registered.reg_mil_cat.received_citizenship_percent. + * Получившие гражданство в процентах + */ + public BigDecimal getReceivedCitizenshipPercent() { + return (BigDecimal) get(14); + } + + /** + * Setter for total_registered.reg_mil_cat.recruitment_id. + */ + public void setRecruitmentId(UUID value) { + set(15, value); + } + + /** + * Getter for total_registered.reg_mil_cat.recruitment_id. + */ + public UUID getRecruitmentId() { + return (UUID) get(15); + } + + /** + * Setter for total_registered.reg_mil_cat.testrecruitment_id. + */ + public void setTestrecruitmentId(String value) { + set(16, value); + } + + /** + * Getter for total_registered.reg_mil_cat.testrecruitment_id. + */ + public String getTestrecruitmentId() { + return (String) get(16); + } + + /** + * Setter for total_registered.reg_mil_cat.testmil_reg. + */ + public void setTestmilReg(BigDecimal value) { + set(17, value); + } + + /** + * Getter for total_registered.reg_mil_cat.testmil_reg. + */ + public BigDecimal getTestmilReg() { + return (BigDecimal) get(17); + } + + // ------------------------------------------------------------------------- + // Primary key information + // ------------------------------------------------------------------------- + + @Override + public Record1 key() { + return (Record1) super.key(); + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached RegMilCatRecord + */ + public RegMilCatRecord() { + super(RegMilCat.REG_MIL_CAT); + } + + /** + * Create a detached, initialised RegMilCatRecord + */ + public RegMilCatRecord(Long idRegMilCat, BigDecimal firstReg_17, BigDecimal firstReg_18, BigDecimal returnedDepLiberty, BigDecimal milSpecW, BigDecimal punished, BigDecimal receivedCitizenship, Boolean milReg, Date recordingDate, BigDecimal firstReg_17Percent, BigDecimal firstReg_18Percent, BigDecimal returnedDepLibertyPercent, BigDecimal milSpecWPercent, BigDecimal punishedPercent, BigDecimal receivedCitizenshipPercent, UUID recruitmentId, String testrecruitmentId, BigDecimal testmilReg) { + super(RegMilCat.REG_MIL_CAT); + + setIdRegMilCat(idRegMilCat); + setFirstReg_17(firstReg_17); + setFirstReg_18(firstReg_18); + setReturnedDepLiberty(returnedDepLiberty); + setMilSpecW(milSpecW); + setPunished(punished); + setReceivedCitizenship(receivedCitizenship); + setMilReg(milReg); + setRecordingDate(recordingDate); + setFirstReg_17Percent(firstReg_17Percent); + setFirstReg_18Percent(firstReg_18Percent); + setReturnedDepLibertyPercent(returnedDepLibertyPercent); + setMilSpecWPercent(milSpecWPercent); + setPunishedPercent(punishedPercent); + setReceivedCitizenshipPercent(receivedCitizenshipPercent); + setRecruitmentId(recruitmentId); + setTestrecruitmentId(testrecruitmentId); + setTestmilReg(testmilReg); + resetChangedOnNotNull(); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/total_registered/tables/records/RemovedRegistryRecord.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/total_registered/tables/records/RemovedRegistryRecord.java new file mode 100644 index 0000000..71a8e92 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/total_registered/tables/records/RemovedRegistryRecord.java @@ -0,0 +1,348 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.records; + + +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.RemovedRegistry; + +import java.math.BigDecimal; +import java.sql.Date; +import java.util.UUID; + +import org.jooq.Record1; +import org.jooq.impl.UpdatableRecordImpl; + + +/** + * Снято с учета уровень РФ + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class RemovedRegistryRecord extends UpdatableRecordImpl { + + private static final long serialVersionUID = 1L; + + /** + * Setter for + * total_registered.removed_registry.removed_registry. Снято с + * учета + */ + public void setRemovedRegistry(BigDecimal value) { + set(0, value); + } + + /** + * Getter for + * total_registered.removed_registry.removed_registry. Снято с + * учета + */ + public BigDecimal getRemovedRegistry() { + return (BigDecimal) get(0); + } + + /** + * Setter for + * total_registered.removed_registry.deprivation_citizenship. + * Лишение гражданства + */ + public void setDeprivationCitizenship(BigDecimal value) { + set(1, value); + } + + /** + * Getter for + * total_registered.removed_registry.deprivation_citizenship. + * Лишение гражданства + */ + public BigDecimal getDeprivationCitizenship() { + return (BigDecimal) get(1); + } + + /** + * Setter for total_registered.removed_registry.age_limit. + * Наступление предельного возраста + */ + public void setAgeLimit(BigDecimal value) { + set(2, value); + } + + /** + * Getter for total_registered.removed_registry.age_limit. + * Наступление предельного возраста + */ + public BigDecimal getAgeLimit() { + return (BigDecimal) get(2); + } + + /** + * Setter for total_registered.removed_registry.death. Смерть + */ + public void setDeath(BigDecimal value) { + set(3, value); + } + + /** + * Getter for total_registered.removed_registry.death. Смерть + */ + public BigDecimal getDeath() { + return (BigDecimal) get(3); + } + + /** + * Setter for total_registered.removed_registry.travel_abroad. + * Выезд за границу на срок более 6 месяцев + */ + public void setTravelAbroad(BigDecimal value) { + set(4, value); + } + + /** + * Getter for total_registered.removed_registry.travel_abroad. + * Выезд за границу на срок более 6 месяцев + */ + public BigDecimal getTravelAbroad() { + return (BigDecimal) get(4); + } + + /** + * Setter for total_registered.removed_registry.living_abroad. + * Проживающие за границей + */ + public void setLivingAbroad(BigDecimal value) { + set(5, value); + } + + /** + * Getter for total_registered.removed_registry.living_abroad. + * Проживающие за границей + */ + public BigDecimal getLivingAbroad() { + return (BigDecimal) get(5); + } + + /** + * Setter for total_registered.removed_registry.other. Прочее + */ + public void setOther(BigDecimal value) { + set(6, value); + } + + /** + * Getter for total_registered.removed_registry.other. Прочее + */ + public BigDecimal getOther() { + return (BigDecimal) get(6); + } + + /** + * Setter for total_registered.removed_registry.recording_date. + * Дата записи + */ + public void setRecordingDate(Date value) { + set(7, value); + } + + /** + * Getter for total_registered.removed_registry.recording_date. + * Дата записи + */ + public Date getRecordingDate() { + return (Date) get(7); + } + + /** + * Setter for + * total_registered.removed_registry.deprivation_citizen_percents. + * Лишение гражданства в процентах + */ + public void setDeprivationCitizenPercents(BigDecimal value) { + set(8, value); + } + + /** + * Getter for + * total_registered.removed_registry.deprivation_citizen_percents. + * Лишение гражданства в процентах + */ + public BigDecimal getDeprivationCitizenPercents() { + return (BigDecimal) get(8); + } + + /** + * Setter for + * total_registered.removed_registry.age_limit_percent. + * Наступление предельного возраста в процентах + */ + public void setAgeLimitPercent(BigDecimal value) { + set(9, value); + } + + /** + * Getter for + * total_registered.removed_registry.age_limit_percent. + * Наступление предельного возраста в процентах + */ + public BigDecimal getAgeLimitPercent() { + return (BigDecimal) get(9); + } + + /** + * Setter for total_registered.removed_registry.death_percent. + * Смерть в процентах + */ + public void setDeathPercent(BigDecimal value) { + set(10, value); + } + + /** + * Getter for total_registered.removed_registry.death_percent. + * Смерть в процентах + */ + public BigDecimal getDeathPercent() { + return (BigDecimal) get(10); + } + + /** + * Setter for + * total_registered.removed_registry.travel_abroad_percent. + * Выезд за границу на срок более 6 месяцев в процентах + */ + public void setTravelAbroadPercent(BigDecimal value) { + set(11, value); + } + + /** + * Getter for + * total_registered.removed_registry.travel_abroad_percent. + * Выезд за границу на срок более 6 месяцев в процентах + */ + public BigDecimal getTravelAbroadPercent() { + return (BigDecimal) get(11); + } + + /** + * Setter for + * total_registered.removed_registry.living_abroad_percent. + * Проживающие за границей в процентах + */ + public void setLivingAbroadPercent(BigDecimal value) { + set(12, value); + } + + /** + * Getter for + * total_registered.removed_registry.living_abroad_percent. + * Проживающие за границей в процентах + */ + public BigDecimal getLivingAbroadPercent() { + return (BigDecimal) get(12); + } + + /** + * Setter for total_registered.removed_registry.other_percent. + * Прочее в процентах + */ + public void setOtherPercent(BigDecimal value) { + set(13, value); + } + + /** + * Getter for total_registered.removed_registry.other_percent. + * Прочее в процентах + */ + public BigDecimal getOtherPercent() { + return (BigDecimal) get(13); + } + + /** + * Setter for total_registered.removed_registry.recruitment_id. + */ + public void setRecruitmentId(UUID value) { + set(14, value); + } + + /** + * Getter for total_registered.removed_registry.recruitment_id. + */ + public UUID getRecruitmentId() { + return (UUID) get(14); + } + + /** + * Setter for + * total_registered.removed_registry.id_removed_registry. + */ + public void setIdRemovedRegistry(Long value) { + set(15, value); + } + + /** + * Getter for + * total_registered.removed_registry.id_removed_registry. + */ + public Long getIdRemovedRegistry() { + return (Long) get(15); + } + + /** + * Setter for + * total_registered.removed_registry.testrecruitment_id. + */ + public void setTestrecruitmentId(String value) { + set(16, value); + } + + /** + * Getter for + * total_registered.removed_registry.testrecruitment_id. + */ + public String getTestrecruitmentId() { + return (String) get(16); + } + + // ------------------------------------------------------------------------- + // Primary key information + // ------------------------------------------------------------------------- + + @Override + public Record1 key() { + return (Record1) super.key(); + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached RemovedRegistryRecord + */ + public RemovedRegistryRecord() { + super(RemovedRegistry.REMOVED_REGISTRY); + } + + /** + * Create a detached, initialised RemovedRegistryRecord + */ + public RemovedRegistryRecord(BigDecimal removedRegistry, BigDecimal deprivationCitizenship, BigDecimal ageLimit, BigDecimal death, BigDecimal travelAbroad, BigDecimal livingAbroad, BigDecimal other, Date recordingDate, BigDecimal deprivationCitizenPercents, BigDecimal ageLimitPercent, BigDecimal deathPercent, BigDecimal travelAbroadPercent, BigDecimal livingAbroadPercent, BigDecimal otherPercent, UUID recruitmentId, Long idRemovedRegistry, String testrecruitmentId) { + super(RemovedRegistry.REMOVED_REGISTRY); + + setRemovedRegistry(removedRegistry); + setDeprivationCitizenship(deprivationCitizenship); + setAgeLimit(ageLimit); + setDeath(death); + setTravelAbroad(travelAbroad); + setLivingAbroad(livingAbroad); + setOther(other); + setRecordingDate(recordingDate); + setDeprivationCitizenPercents(deprivationCitizenPercents); + setAgeLimitPercent(ageLimitPercent); + setDeathPercent(deathPercent); + setTravelAbroadPercent(travelAbroadPercent); + setLivingAbroadPercent(livingAbroadPercent); + setOtherPercent(otherPercent); + setRecruitmentId(recruitmentId); + setIdRemovedRegistry(idRemovedRegistry); + setTestrecruitmentId(testrecruitmentId); + resetChangedOnNotNull(); + } +} diff --git a/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/total_registered/tables/records/SubpoenasRecord.java b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/total_registered/tables/records/SubpoenasRecord.java new file mode 100644 index 0000000..d9dcb72 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/ervu_dashboard/db_beans/total_registered/tables/records/SubpoenasRecord.java @@ -0,0 +1,455 @@ +/* + * This file is generated by jOOQ. + */ +package ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.records; + + +import ervu_dashboard.ervu_dashboard.db_beans.total_registered.tables.Subpoenas; + +import java.math.BigDecimal; +import java.sql.Date; +import java.util.UUID; + +import org.jooq.Record1; +import org.jooq.impl.UpdatableRecordImpl; + + +/** + * Повестки состоящих/не состоящих на учете уровень РФ + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class SubpoenasRecord extends UpdatableRecordImpl { + + private static final long serialVersionUID = 1L; + + /** + * Setter for total_registered.subpoenas.id_subpoena. + */ + public void setIdSubpoena(Long value) { + set(0, value); + } + + /** + * Getter for total_registered.subpoenas.id_subpoena. + */ + public Long getIdSubpoena() { + return (Long) get(0); + } + + /** + * Setter for total_registered.subpoenas.subpoena. Направлено + * повесток + */ + public void setSubpoena(BigDecimal value) { + set(1, value); + } + + /** + * Getter for total_registered.subpoenas.subpoena. Направлено + * повесток + */ + public BigDecimal getSubpoena() { + return (BigDecimal) get(1); + } + + /** + * Setter for total_registered.subpoenas.average_appeared. + * Средний срок явки + */ + public void setAverageAppeared(BigDecimal value) { + set(2, value); + } + + /** + * Getter for total_registered.subpoenas.average_appeared. + * Средний срок явки + */ + public BigDecimal getAverageAppeared() { + return (BigDecimal) get(2); + } + + /** + * Setter for total_registered.subpoenas.appeared. Явились + */ + public void setAppeared(BigDecimal value) { + set(3, value); + } + + /** + * Getter for total_registered.subpoenas.appeared. Явились + */ + public BigDecimal getAppeared() { + return (BigDecimal) get(3); + } + + /** + * Setter for total_registered.subpoenas.not_appeared. Не + * явились + */ + public void setNotAppeared(BigDecimal value) { + set(4, value); + } + + /** + * Getter for total_registered.subpoenas.not_appeared. Не + * явились + */ + public BigDecimal getNotAppeared() { + return (BigDecimal) get(4); + } + + /** + * Setter for total_registered.subpoenas.not_ap_good_reason. Не + * явились по уважительной причине + */ + public void setNotApGoodReason(BigDecimal value) { + set(5, value); + } + + /** + * Getter for total_registered.subpoenas.not_ap_good_reason. Не + * явились по уважительной причине + */ + public BigDecimal getNotApGoodReason() { + return (BigDecimal) get(5); + } + + /** + * Setter for total_registered.subpoenas.ap_not_required. Явка + * не требуется + */ + public void setApNotRequired(BigDecimal value) { + set(6, value); + } + + /** + * Getter for total_registered.subpoenas.ap_not_required. Явка + * не требуется + */ + public BigDecimal getApNotRequired() { + return (BigDecimal) get(6); + } + + /** + * Setter for total_registered.subpoenas.electron. Электронно + */ + public void setElectron(BigDecimal value) { + set(7, value); + } + + /** + * Getter for total_registered.subpoenas.electron. Электронно + */ + public BigDecimal getElectron() { + return (BigDecimal) get(7); + } + + /** + * Setter for total_registered.subpoenas.paper. Нарочно + */ + public void setPaper(BigDecimal value) { + set(8, value); + } + + /** + * Getter for total_registered.subpoenas.paper. Нарочно + */ + public BigDecimal getPaper() { + return (BigDecimal) get(8); + } + + /** + * Setter for total_registered.subpoenas.restrictions_applied. + * Применено ограничений + */ + public void setRestrictionsApplied(BigDecimal value) { + set(9, value); + } + + /** + * Getter for total_registered.subpoenas.restrictions_applied. + * Применено ограничений + */ + public BigDecimal getRestrictionsApplied() { + return (BigDecimal) get(9); + } + + /** + * Setter for total_registered.subpoenas.introduced_measures. + * Введено реализатором мер + */ + public void setIntroducedMeasures(BigDecimal value) { + set(10, value); + } + + /** + * Getter for total_registered.subpoenas.introduced_measures. + * Введено реализатором мер + */ + public BigDecimal getIntroducedMeasures() { + return (BigDecimal) get(10); + } + + /** + * Setter for total_registered.subpoenas.mil_reg. Состоит/не + * состоит на учете + */ + public void setMilReg(Boolean value) { + set(11, value); + } + + /** + * Getter for total_registered.subpoenas.mil_reg. Состоит/не + * состоит на учете + */ + public Boolean getMilReg() { + return (Boolean) get(11); + } + + /** + * Setter for total_registered.subpoenas.recording_date. Дата + * записи + */ + public void setRecordingDate(Date value) { + set(12, value); + } + + /** + * Getter for total_registered.subpoenas.recording_date. Дата + * записи + */ + public Date getRecordingDate() { + return (Date) get(12); + } + + /** + * Setter for total_registered.subpoenas.appeared_percent. + * Явились в процентах + */ + public void setAppearedPercent(BigDecimal value) { + set(13, value); + } + + /** + * Getter for total_registered.subpoenas.appeared_percent. + * Явились в процентах + */ + public BigDecimal getAppearedPercent() { + return (BigDecimal) get(13); + } + + /** + * Setter for total_registered.subpoenas.not_appeared_percent. + * Не явились в процентах + */ + public void setNotAppearedPercent(BigDecimal value) { + set(14, value); + } + + /** + * Getter for total_registered.subpoenas.not_appeared_percent. + * Не явились в процентах + */ + public BigDecimal getNotAppearedPercent() { + return (BigDecimal) get(14); + } + + /** + * Setter for + * total_registered.subpoenas.not_ap_good_reason_percent. Не + * явились по уважительной причине в процентах + */ + public void setNotApGoodReasonPercent(BigDecimal value) { + set(15, value); + } + + /** + * Getter for + * total_registered.subpoenas.not_ap_good_reason_percent. Не + * явились по уважительной причине в процентах + */ + public BigDecimal getNotApGoodReasonPercent() { + return (BigDecimal) get(15); + } + + /** + * Setter for + * total_registered.subpoenas.ap_not_required_percent. Явка не + * требуется в процентах + */ + public void setApNotRequiredPercent(BigDecimal value) { + set(16, value); + } + + /** + * Getter for + * total_registered.subpoenas.ap_not_required_percent. Явка не + * требуется в процентах + */ + public BigDecimal getApNotRequiredPercent() { + return (BigDecimal) get(16); + } + + /** + * Setter for total_registered.subpoenas.electron_percent. + * Электронно в процентах + */ + public void setElectronPercent(BigDecimal value) { + set(17, value); + } + + /** + * Getter for total_registered.subpoenas.electron_percent. + * Электронно в процентах + */ + public BigDecimal getElectronPercent() { + return (BigDecimal) get(17); + } + + /** + * Setter for total_registered.subpoenas.paper_percent. Нарочно + * в процентах + */ + public void setPaperPercent(BigDecimal value) { + set(18, value); + } + + /** + * Getter for total_registered.subpoenas.paper_percent. Нарочно + * в процентах + */ + public BigDecimal getPaperPercent() { + return (BigDecimal) get(18); + } + + /** + * Setter for + * total_registered.subpoenas.restrictions_applied_percent. + * Применено ограничений в процентах + */ + public void setRestrictionsAppliedPercent(BigDecimal value) { + set(19, value); + } + + /** + * Getter for + * total_registered.subpoenas.restrictions_applied_percent. + * Применено ограничений в процентах + */ + public BigDecimal getRestrictionsAppliedPercent() { + return (BigDecimal) get(19); + } + + /** + * Setter for + * total_registered.subpoenas.introduced_measures_percent. + * Введено реализатором мер в процентах + */ + public void setIntroducedMeasuresPercent(BigDecimal value) { + set(20, value); + } + + /** + * Getter for + * total_registered.subpoenas.introduced_measures_percent. + * Введено реализатором мер в процентах + */ + public BigDecimal getIntroducedMeasuresPercent() { + return (BigDecimal) get(20); + } + + /** + * Setter for total_registered.subpoenas.recruitment_id. + */ + public void setRecruitmentId(UUID value) { + set(21, value); + } + + /** + * Getter for total_registered.subpoenas.recruitment_id. + */ + public UUID getRecruitmentId() { + return (UUID) get(21); + } + + /** + * Setter for total_registered.subpoenas.testrecruitment_id. + */ + public void setTestrecruitmentId(String value) { + set(22, value); + } + + /** + * Getter for total_registered.subpoenas.testrecruitment_id. + */ + public String getTestrecruitmentId() { + return (String) get(22); + } + + /** + * Setter for total_registered.subpoenas.testmil_reg. + */ + public void setTestmilReg(BigDecimal value) { + set(23, value); + } + + /** + * Getter for total_registered.subpoenas.testmil_reg. + */ + public BigDecimal getTestmilReg() { + return (BigDecimal) get(23); + } + + // ------------------------------------------------------------------------- + // Primary key information + // ------------------------------------------------------------------------- + + @Override + public Record1 key() { + return (Record1) super.key(); + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached SubpoenasRecord + */ + public SubpoenasRecord() { + super(Subpoenas.SUBPOENAS); + } + + /** + * Create a detached, initialised SubpoenasRecord + */ + public SubpoenasRecord(Long idSubpoena, BigDecimal subpoena, BigDecimal averageAppeared, BigDecimal appeared, BigDecimal notAppeared, BigDecimal notApGoodReason, BigDecimal apNotRequired, BigDecimal electron, BigDecimal paper, BigDecimal restrictionsApplied, BigDecimal introducedMeasures, Boolean milReg, Date recordingDate, BigDecimal appearedPercent, BigDecimal notAppearedPercent, BigDecimal notApGoodReasonPercent, BigDecimal apNotRequiredPercent, BigDecimal electronPercent, BigDecimal paperPercent, BigDecimal restrictionsAppliedPercent, BigDecimal introducedMeasuresPercent, UUID recruitmentId, String testrecruitmentId, BigDecimal testmilReg) { + super(Subpoenas.SUBPOENAS); + + setIdSubpoena(idSubpoena); + setSubpoena(subpoena); + setAverageAppeared(averageAppeared); + setAppeared(appeared); + setNotAppeared(notAppeared); + setNotApGoodReason(notApGoodReason); + setApNotRequired(apNotRequired); + setElectron(electron); + setPaper(paper); + setRestrictionsApplied(restrictionsApplied); + setIntroducedMeasures(introducedMeasures); + setMilReg(milReg); + setRecordingDate(recordingDate); + setAppearedPercent(appearedPercent); + setNotAppearedPercent(notAppearedPercent); + setNotApGoodReasonPercent(notApGoodReasonPercent); + setApNotRequiredPercent(apNotRequiredPercent); + setElectronPercent(electronPercent); + setPaperPercent(paperPercent); + setRestrictionsAppliedPercent(restrictionsAppliedPercent); + setIntroducedMeasuresPercent(introducedMeasuresPercent); + setRecruitmentId(recruitmentId); + setTestrecruitmentId(testrecruitmentId); + setTestmilReg(testmilReg); + resetChangedOnNotNull(); + } +} diff --git a/backend/src/main/java/ervu_dashboard/model/Font.java b/backend/src/main/java/ervu_dashboard/model/Font.java new file mode 100644 index 0000000..30f0904 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/model/Font.java @@ -0,0 +1,51 @@ +package ervu_dashboard.model; + +import ru.cg.webbpm.modules.webkit.annotations.Model; + +/** + * @author Vitaly Chekushkin + */ + +@Model +public class Font { + + public String family; + public String weight; + public Integer size; + + public static Font of(String family, String weight, Integer size) { + return new Font(family, weight, size); + } + + public Font(String family, String weight, Integer size) { + this.family = family; + this.weight = weight; + this.size = size; + } + + public Font() {} + + public String getFamily() { + return family; + } + + public void setFamily(String family) { + this.family = family; + } + + public String getWeight() { + return weight; + } + + public void setWeight(String weight) { + this.weight = weight; + } + + public Integer getSize() { + return size; + } + + public void setSize(Integer size) { + this.size = size; + } +} diff --git a/backend/src/main/java/ervu_dashboard/model/chart/BarMockDataset.java b/backend/src/main/java/ervu_dashboard/model/chart/BarMockDataset.java new file mode 100644 index 0000000..bad7f55 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/model/chart/BarMockDataset.java @@ -0,0 +1,20 @@ +package ervu_dashboard.model.chart; + +import com.fasterxml.jackson.annotation.JsonInclude; + +import ru.cg.webbpm.modules.standard_annotations.editor.ColorEditor; + +/** + * @author Vitaly Chekushkin + */ + +@JsonInclude(JsonInclude.Include.NON_NULL) +public class BarMockDataset { + public String label; + public Integer[] data; + + public String barPercentage; // 0.0 - 1.0 + public Integer borderRadius; + @ColorEditor + public String[] backgroundColor; +} diff --git a/backend/src/main/java/ervu_dashboard/model/chart/BarMockDatasets.java b/backend/src/main/java/ervu_dashboard/model/chart/BarMockDatasets.java new file mode 100644 index 0000000..2ef46b1 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/model/chart/BarMockDatasets.java @@ -0,0 +1,14 @@ +package ervu_dashboard.model.chart; + +import component.chart.dto.IChartDataDto; + +import ru.cg.webbpm.modules.standard_annotations.editor.Visible; + +/** + * @author Vitaly Chekushkin + */ +public class BarMockDatasets implements IChartDataDto { + public BarMockDataset[] datasets; + @Visible(predicate = "false") + public String[] labels; +} diff --git a/backend/src/main/java/ervu_dashboard/model/chart/ChartDatasetType.java b/backend/src/main/java/ervu_dashboard/model/chart/ChartDatasetType.java new file mode 100644 index 0000000..d0c39a9 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/model/chart/ChartDatasetType.java @@ -0,0 +1,11 @@ +package ervu_dashboard.model.chart; + +/** + * @author Vitaly Chekushkin + */ + +public enum ChartDatasetType { + STATIC, + AGGREGATION, + COLUMN_AGGREGATION +} diff --git a/backend/src/main/java/ervu_dashboard/model/chart/ColumnAggregationData.java b/backend/src/main/java/ervu_dashboard/model/chart/ColumnAggregationData.java new file mode 100644 index 0000000..1815245 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/model/chart/ColumnAggregationData.java @@ -0,0 +1,30 @@ +package ervu_dashboard.model.chart; + +import property.grid.Formatter; +import rpc.LoadGraphSource; + +import ru.cg.webbpm.modules.database.bean.AggregationFunction; +import ru.cg.webbpm.modules.database.bean.annotation.GraphSource; +import ru.cg.webbpm.modules.database.bean.entity_graph.EntityColumn; +import ru.cg.webbpm.modules.standard_annotations.editor.ColorEditor; +import ru.cg.webbpm.modules.standard_annotations.validation.NotNull; + +/** + * @author Vitaly Chekushkin + */ +public class ColumnAggregationData { + @NotNull + public String label; + @NotNull + @GraphSource( + value = LoadGraphSource.class, + scanMode = GraphSource.ScanMode.CLOSEST_PROPERTY_CONTEXT + ) + public EntityColumn aggregationColumn; + @NotNull + public AggregationFunction aggregationFunction; + @NotNull + @ColorEditor + public String borderColor; + public Formatter aggregationColumnFormatter; +} diff --git a/backend/src/main/java/ervu_dashboard/model/chart/ColumnAggregationDataSet.java b/backend/src/main/java/ervu_dashboard/model/chart/ColumnAggregationDataSet.java new file mode 100644 index 0000000..121de61 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/model/chart/ColumnAggregationDataSet.java @@ -0,0 +1,36 @@ +package ervu_dashboard.model.chart; + +import component.chart.enums.MultiChartType; + +import ru.cg.webbpm.modules.standard_annotations.editor.ColorEditor; +import ru.cg.webbpm.modules.standard_annotations.editor.Visible; +import ru.cg.webbpm.modules.standard_annotations.validation.NotNull; + +/** + * @author Vitaly Chekushkin + */ +public class ColumnAggregationDataSet { + @NotNull + public MultiChartType chartType; + @NotNull + public String dataSetLabel; + @NotNull + public ColumnAggregationData[] aggregationData; + + @ColorEditor + public String borderColor; + + @Visible(predicate = "chartType == MultiChartType.BAR || chartType == MultiChartType.HORIZONTAL_BAR") + public Integer borderRadius; + + @Visible(predicate = "chartType == MultiChartType.BAR || chartType == MultiChartType.HORIZONTAL_BAR") + public String barPercentage; + + public String xAxesId; + + public String yAxesId; + + public Float tension; + + public Integer drawOrder; +} diff --git a/backend/src/main/java/ervu_dashboard/model/chart/DoughnutMockDataset.java b/backend/src/main/java/ervu_dashboard/model/chart/DoughnutMockDataset.java new file mode 100644 index 0000000..1f8613f --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/model/chart/DoughnutMockDataset.java @@ -0,0 +1,18 @@ +package ervu_dashboard.model.chart; + +import ru.cg.webbpm.modules.standard_annotations.editor.ColorEditor; + +/** + * @author Vitaly Chekushkin + */ +public class DoughnutMockDataset { + public Integer[] data; + @ColorEditor + public String[] backgroundColor; + + public Integer borderWidth; + public String radius; + public String cutout; + + public Integer hoverOffset; +} diff --git a/backend/src/main/java/ervu_dashboard/model/chart/DoughnutMockDatasets.java b/backend/src/main/java/ervu_dashboard/model/chart/DoughnutMockDatasets.java new file mode 100644 index 0000000..1da4190 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/model/chart/DoughnutMockDatasets.java @@ -0,0 +1,12 @@ +package ervu_dashboard.model.chart; + +import component.chart.dto.IChartDataDto; +import ervu_dashboard.model.chart.round.label.ChartLabelModel; + +/** + * @author Vitaly Chekushkin + */ +public class DoughnutMockDatasets implements IChartDataDto { + public DoughnutMockDataset[] datasets; + public ChartLabelModel[] centerLabels; +} diff --git a/backend/src/main/java/ervu_dashboard/model/chart/ErvuChartDataSetDto.java b/backend/src/main/java/ervu_dashboard/model/chart/ErvuChartDataSetDto.java new file mode 100644 index 0000000..7bc936b --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/model/chart/ErvuChartDataSetDto.java @@ -0,0 +1,46 @@ +package ervu_dashboard.model.chart; + +import java.util.List; + +import component.chart.dto.ChartDataSetDto; +import component.chart.dto.ChartPointDto; + +/** + * @author Vitaly Chekushkin + */ +public class ErvuChartDataSetDto extends ChartDataSetDto { + + public Integer borderRadius; + public String barPercentage; + + public String[] backgroundColors; + + public ErvuChartDataSetDto(String label, String type, + List data) { + super(label, type, data); + } + + public Integer getBorderRadius() { + return borderRadius; + } + + public void setBorderRadius(Integer borderRadius) { + this.borderRadius = borderRadius; + } + + public String getBarPercentage() { + return barPercentage; + } + + public void setBarPercentage(String barPercentage) { + this.barPercentage = barPercentage; + } + + public String[] getBackgroundColors() { + return backgroundColors; + } + + public void setBackgroundColors(String[] backgroundColors) { + this.backgroundColors = backgroundColors; + } +} diff --git a/backend/src/main/java/ervu_dashboard/model/chart/round/RoundAggregationData.java b/backend/src/main/java/ervu_dashboard/model/chart/round/RoundAggregationData.java new file mode 100644 index 0000000..15d9690 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/model/chart/round/RoundAggregationData.java @@ -0,0 +1,26 @@ +package ervu_dashboard.model.chart.round; + +import property.grid.Formatter; +import rpc.LoadGraphSource; + +import ru.cg.webbpm.modules.database.bean.AggregationFunction; +import ru.cg.webbpm.modules.database.bean.annotation.GraphSource; +import ru.cg.webbpm.modules.database.bean.entity_graph.EntityColumn; +import ru.cg.webbpm.modules.standard_annotations.validation.NotNull; + +/** + * @author Vitaly Chekushkin + */ +public class RoundAggregationData { + @NotNull + public String dataLabel; + @NotNull + @GraphSource( + value = LoadGraphSource.class, + scanMode = GraphSource.ScanMode.CLOSEST_PROPERTY_CONTEXT + ) + public EntityColumn aggregationColumn; + public Formatter aggregationColumnFormatter; + @NotNull + public AggregationFunction aggregationFunction; +} diff --git a/backend/src/main/java/ervu_dashboard/model/chart/round/RoundAggregationDataSet.java b/backend/src/main/java/ervu_dashboard/model/chart/round/RoundAggregationDataSet.java new file mode 100644 index 0000000..44b1f4b --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/model/chart/round/RoundAggregationDataSet.java @@ -0,0 +1,30 @@ +package ervu_dashboard.model.chart.round; + +import property.grid.Formatter; +import rpc.LoadGraphSource; + +import ru.cg.webbpm.modules.database.bean.annotation.GraphSource; +import ru.cg.webbpm.modules.database.bean.entity_graph.EntityColumn; +import ru.cg.webbpm.modules.standard_annotations.validation.NotNull; + +/** + * @author Vitaly Chekushkin + */ + +public class RoundAggregationDataSet { + @NotNull + public RoundAggregationData aggregationData; + @NotNull + @GraphSource( + value = LoadGraphSource.class, + scanMode = GraphSource.ScanMode.CLOSEST_PROPERTY_CONTEXT + ) + public EntityColumn[] groupByColumns = new EntityColumn[0]; + @GraphSource( + value = LoadGraphSource.class, + scanMode = GraphSource.ScanMode.CLOSEST_PROPERTY_CONTEXT + ) + public EntityColumn labelColumn; + public Formatter labelColumFormatter; + public RoundChartColumnSort[] columnSorts = new RoundChartColumnSort[0]; +} diff --git a/backend/src/main/java/ervu_dashboard/model/chart/round/RoundChartColumnSort.java b/backend/src/main/java/ervu_dashboard/model/chart/round/RoundChartColumnSort.java new file mode 100644 index 0000000..99de7e0 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/model/chart/round/RoundChartColumnSort.java @@ -0,0 +1,33 @@ +package ervu_dashboard.model.chart.round; + +import rpc.LoadGraphSource; + +import ru.cg.webbpm.modules.database.api.dao.option.SortOrder; +import ru.cg.webbpm.modules.database.bean.annotation.GraphSource; +import ru.cg.webbpm.modules.database.bean.entity_graph.EntityColumn; +import ru.cg.webbpm.modules.standard_annotations.validation.NotNull; + +/** + * @author Vitaly Chekushkin + */ +public class RoundChartColumnSort { + @GraphSource( + value = LoadGraphSource.class, + scanMode = GraphSource.ScanMode.CLOSEST_PROPERTY_CONTEXT + ) + @NotNull + public EntityColumn field; + @NotNull + public SortOrder sortOrder; + + public RoundChartColumnSort() { + } + + public EntityColumn field() { + return this.field; + } + + public SortOrder sortOrder() { + return this.sortOrder; + } +} diff --git a/backend/src/main/java/ervu_dashboard/model/chart/round/RoundChartDataDto.java b/backend/src/main/java/ervu_dashboard/model/chart/round/RoundChartDataDto.java new file mode 100644 index 0000000..fe94194 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/model/chart/round/RoundChartDataDto.java @@ -0,0 +1,33 @@ +package ervu_dashboard.model.chart.round; + +import java.util.List; + +import component.chart.dto.SingleChartDataDto; +import component.chart.dto.SingleChartDataSetDto; +import ervu_dashboard.model.chart.round.label.ChartLabelModel; + +/** + * @author Vitaly Chekushkin + */ +public class RoundChartDataDto extends SingleChartDataDto { + + public List centerLabels; + + public RoundChartDataDto( + List datasets, + List labels, + List centerLabels + ) { + super(datasets, labels); + this.centerLabels = centerLabels; + } + + public List getCenterLabels() { + return centerLabels; + } + + public void setCenterLabels( + List centerLabels) { + this.centerLabels = centerLabels; + } +} diff --git a/backend/src/main/java/ervu_dashboard/model/chart/round/RoundChartDataSetConfiguration.java b/backend/src/main/java/ervu_dashboard/model/chart/round/RoundChartDataSetConfiguration.java new file mode 100644 index 0000000..1b3b335 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/model/chart/round/RoundChartDataSetConfiguration.java @@ -0,0 +1,42 @@ +package ervu_dashboard.model.chart.round; + +import ervu_dashboard.model.chart.ChartDatasetType; +import rpc.LoadGraphSource; + +import ru.cg.webbpm.modules.database.api.dao.LoadDao; +import ru.cg.webbpm.modules.standard_annotations.editor.ColorEditor; +import ru.cg.webbpm.modules.standard_annotations.editor.Visible; +import ru.cg.webbpm.modules.standard_annotations.validation.NotNull; + +/** + * @author Vitaly Chekushkin + */ +public class RoundChartDataSetConfiguration implements LoadGraphSource { + @NotNull + public LoadDao loadDao; + + @NotNull + public ChartDatasetType datasetType; + + @NotNull(predicate = "datasetType == ChartDatasetType.AGGREGATION") + @Visible(predicate = "datasetType == ChartDatasetType.AGGREGATION") + public RoundAggregationDataSet aggregationDataSet; + + @NotNull(predicate = "datasetType == ChartDatasetType.STATIC") + @Visible(predicate = "datasetType == ChartDatasetType.STATIC") + public RoundStaticDataSet staticDataSet; + + @NotNull(predicate = "datasetType == ChartDatasetType.COLUMN_AGGREGATION") + @Visible(predicate = "datasetType == ChartDatasetType.COLUMN_AGGREGATION") + public RoundColumnAggregationDataSet columnAggregationDataSet; + + @ColorEditor + @Visible(predicate = "datasetType != ChartDatasetType.COLUMN_AGGREGATION") + public String[] backgroundColors = new String[0]; + + public Integer borderWidth; + public String radius; + public String cutout; + + public Integer hoverOffset; +} diff --git a/backend/src/main/java/ervu_dashboard/model/chart/round/RoundChartDataSetDto.java b/backend/src/main/java/ervu_dashboard/model/chart/round/RoundChartDataSetDto.java new file mode 100644 index 0000000..a79227a --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/model/chart/round/RoundChartDataSetDto.java @@ -0,0 +1,65 @@ +package ervu_dashboard.model.chart.round; + +import java.util.List; + +import com.fasterxml.jackson.annotation.JsonInclude; +import component.chart.dto.SingleChartDataSetDto; + +/** + * @author Vitaly Chekushkin + */ + +public class RoundChartDataSetDto extends SingleChartDataSetDto { + public String radius; + public String cutout; + + @JsonInclude + public Integer borderWidth; + @JsonInclude + public Integer hoverOffset; + + public RoundChartDataSetDto() { + super(null, null, null); + } + + public RoundChartDataSetDto(String label, List data, String[] backgroundColor, + Integer borderWidth, String radius, String cutout, Integer hoverOffset) { + super(label, data, backgroundColor); + this.borderWidth = borderWidth; + this.radius = radius; + this.cutout = cutout; + this.hoverOffset = hoverOffset; + } + + public String getRadius() { + return radius; + } + + public void setRadius(String radius) { + this.radius = radius; + } + + public String getCutout() { + return cutout; + } + + public void setCutout(String cutout) { + this.cutout = cutout; + } + + public Integer getBorderWidth() { + return borderWidth; + } + + public void setBorderWidth(Integer borderWidth) { + this.borderWidth = borderWidth; + } + + public Integer getHoverOffset() { + return hoverOffset; + } + + public void setHoverOffset(Integer hoverOffset) { + this.hoverOffset = hoverOffset; + } +} diff --git a/backend/src/main/java/ervu_dashboard/model/chart/round/RoundChartDataSetDtoWrapper.java b/backend/src/main/java/ervu_dashboard/model/chart/round/RoundChartDataSetDtoWrapper.java new file mode 100644 index 0000000..5562f86 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/model/chart/round/RoundChartDataSetDtoWrapper.java @@ -0,0 +1,33 @@ +package ervu_dashboard.model.chart.round; + +import java.util.List; + +/** + * @author Vitaly Chekushkin + */ +public class RoundChartDataSetDtoWrapper { + private RoundChartDataSetDto roundChartDataSetDto; + private List labels; + + public RoundChartDataSetDtoWrapper(RoundChartDataSetDto roundChartDataSetDto, + List labels) { + this.roundChartDataSetDto = roundChartDataSetDto; + this.labels = labels; + } + + public RoundChartDataSetDto getRoundChartDataSetDto() { + return roundChartDataSetDto; + } + + public void setRoundChartDataSetDto(RoundChartDataSetDto roundChartDataSetDto) { + this.roundChartDataSetDto = roundChartDataSetDto; + } + + public List getLabels() { + return labels; + } + + public void setLabels(List labels) { + this.labels = labels; + } +} diff --git a/backend/src/main/java/ervu_dashboard/model/chart/round/RoundColumnAggregationData.java b/backend/src/main/java/ervu_dashboard/model/chart/round/RoundColumnAggregationData.java new file mode 100644 index 0000000..3ae24d4 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/model/chart/round/RoundColumnAggregationData.java @@ -0,0 +1,30 @@ +package ervu_dashboard.model.chart.round; + +import property.grid.Formatter; +import rpc.LoadGraphSource; + +import ru.cg.webbpm.modules.database.bean.AggregationFunction; +import ru.cg.webbpm.modules.database.bean.annotation.GraphSource; +import ru.cg.webbpm.modules.database.bean.entity_graph.EntityColumn; +import ru.cg.webbpm.modules.standard_annotations.editor.ColorEditor; +import ru.cg.webbpm.modules.standard_annotations.validation.NotNull; + +/** + * @author Vitaly Chekushkin + */ +public class RoundColumnAggregationData { + @NotNull + public String label; + @NotNull + @GraphSource( + value = LoadGraphSource.class, + scanMode = GraphSource.ScanMode.CLOSEST_PROPERTY_CONTEXT + ) + public EntityColumn aggregationColumn; + @NotNull + public AggregationFunction aggregationFunction; + @NotNull + @ColorEditor + public String backgroundColor; + public Formatter aggregationColumnFormatter; +} diff --git a/backend/src/main/java/ervu_dashboard/model/chart/round/RoundColumnAggregationDataSet.java b/backend/src/main/java/ervu_dashboard/model/chart/round/RoundColumnAggregationDataSet.java new file mode 100644 index 0000000..88c118c --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/model/chart/round/RoundColumnAggregationDataSet.java @@ -0,0 +1,13 @@ +package ervu_dashboard.model.chart.round; + +import ru.cg.webbpm.modules.standard_annotations.validation.NotNull; + +/** + * @author Vitaly Chekushkin + */ +public class RoundColumnAggregationDataSet { + @NotNull + public String dataLabel; + @NotNull + public RoundColumnAggregationData[] aggregationData; +} diff --git a/backend/src/main/java/ervu_dashboard/model/chart/round/RoundStaticData.java b/backend/src/main/java/ervu_dashboard/model/chart/round/RoundStaticData.java new file mode 100644 index 0000000..46dfb5f --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/model/chart/round/RoundStaticData.java @@ -0,0 +1,37 @@ +package ervu_dashboard.model.chart.round; + +import java.util.Arrays; +import java.util.List; + +import property.grid.Formatter; +import rpc.LoadGraphSource; + +import ru.cg.webbpm.modules.database.bean.annotation.GraphSource; +import ru.cg.webbpm.modules.database.bean.entity_graph.EntityColumn; +import ru.cg.webbpm.modules.standard_annotations.validation.NotNull; + +/** + * @author Vitaly Chekushkin + */ +public class RoundStaticData { + @NotNull + public String dataLabel; + @NotNull + @GraphSource( + value = LoadGraphSource.class, + scanMode = GraphSource.ScanMode.CLOSEST_PROPERTY_CONTEXT + ) + public EntityColumn dataColumn; + public Formatter dataColumnFormatter; + @NotNull + @GraphSource( + value = LoadGraphSource.class, + scanMode = GraphSource.ScanMode.CLOSEST_PROPERTY_CONTEXT + ) + public EntityColumn labelColumn; + public Formatter labelColumnFormatter; + + public List columns() { + return Arrays.asList(this.dataColumn, this.labelColumn); + } +} diff --git a/backend/src/main/java/ervu_dashboard/model/chart/round/RoundStaticDataSet.java b/backend/src/main/java/ervu_dashboard/model/chart/round/RoundStaticDataSet.java new file mode 100644 index 0000000..406305d --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/model/chart/round/RoundStaticDataSet.java @@ -0,0 +1,12 @@ +package ervu_dashboard.model.chart.round; + +import ru.cg.webbpm.modules.standard_annotations.validation.NotNull; + +/** + * @author Vitaly Chekushkin + */ +public class RoundStaticDataSet { + @NotNull + public RoundStaticData staticData; + public RoundChartColumnSort[] columnSorts = new RoundChartColumnSort[0]; +} diff --git a/backend/src/main/java/ervu_dashboard/model/chart/round/label/ChartLabelModel.java b/backend/src/main/java/ervu_dashboard/model/chart/round/label/ChartLabelModel.java new file mode 100644 index 0000000..fd743c0 --- /dev/null +++ b/backend/src/main/java/ervu_dashboard/model/chart/round/label/ChartLabelModel.java @@ -0,0 +1,50 @@ +package ervu_dashboard.model.chart.round.label; + +import ervu_dashboard.model.Font; + +import ru.cg.webbpm.modules.standard_annotations.editor.ColorEditor; +import ru.cg.webbpm.modules.webkit.annotations.Model; + +/** + * @author Vitaly Chekushkin + */ + +@Model +public class ChartLabelModel { + public String text; + @ColorEditor + public String color; + public Font font; + + public ChartLabelModel(String text, String color, Font font) { + this.text = text; + this.color = color; + this.font = font; + } + + public ChartLabelModel() {} + + public String getText() { + return text; + } + + public void setText(String text) { + this.text = text; + } + + public String getColor() { + return color; + } + + public void setColor(String color) { + this.color = color; + } + + public Font getFont() { + return font; + } + + public void setFont(Font font) { + this.font = font; + } +} diff --git a/backend/src/main/java/ru/micord/security/SecurityConfig.java b/backend/src/main/java/ru/micord/security/SecurityConfig.java new file mode 100644 index 0000000..3036dc7 --- /dev/null +++ b/backend/src/main/java/ru/micord/security/SecurityConfig.java @@ -0,0 +1,25 @@ +package ru.micord.security; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.config.Customizer; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.web.SecurityFilterChain; + +@Configuration +@EnableWebSecurity +//@EnableAuthorizationServer +public class SecurityConfig { + + @Bean + public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { + + http.csrf().disable() + .authorizeHttpRequests() + .antMatchers("/**") + .permitAll(); + + return http.build(); + } +} diff --git a/backend/src/main/java/service/loading/ProjectDefaultValueLoaderServiceImpl.java b/backend/src/main/java/service/loading/ProjectDefaultValueLoaderServiceImpl.java new file mode 100644 index 0000000..f239764 --- /dev/null +++ b/backend/src/main/java/service/loading/ProjectDefaultValueLoaderServiceImpl.java @@ -0,0 +1,89 @@ +package service.loading; + +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +import component.field.dataconvert.DataConverter; +import component.field.dataconvert.DataConverterProvider; +import component.field.loading.FieldDefaultValue; +import component.field.loading.LoadType; +import model.FieldData; + +import ru.cg.webbpm.modules.database.api.bean.TableRow; +import ru.cg.webbpm.modules.database.api.dao.LoadDao; +import ru.cg.webbpm.modules.database.bean.entity_graph.EntityColumn; + +/** + * @author kochetokov + */ +public class ProjectDefaultValueLoaderServiceImpl extends AbstractDefaultValueLoaderService + implements DefaultValueLoaderService { + + public LoadDao loadDao; + + @Override + public List loadFieldDefaultValues(List guids) { + return Stream.concat( + loadValuesByFieldService(guids).stream(), + loadValuesByColumn(guids).stream() + ).collect(Collectors.toList()); + } + + protected List loadValuesByColumn(List guids) { + Map> byColumnMapping = getScriptsMapping(guids, + fieldDefaultValue -> fieldDefaultValue.loadType == LoadType.BY_COLUMN + ); + Map idToColumnMapping = byColumnMapping.entrySet().stream() + .collect(Collectors.toMap( + Map.Entry::getKey, + entry -> { + try { + return entry.getValue().getDefaultValueColumn(); + } + catch (Exception e) { + throw new RuntimeException( + String.format("Cannot load values for object with id = %s", + entry.getKey() + ), e); + } + } + ) + ); + return loadData(idToColumnMapping); + } + + protected List loadData(Map idToColumnMapping) { + + if (loadDao == null) { + return Collections.emptyList(); + } + Set columns = new HashSet<>(idToColumnMapping.values()); + Map columnToDataMapping; + + List tableRows = loadDao.load(columns); + + if (tableRows.isEmpty()) { + return Collections.emptyList(); + } + + if (tableRows.size() > 1) { + throw new IllegalArgumentException("Default graph must return one row"); + } + columnToDataMapping = tableRows.get(0).getColumnToDataMap(); + + return idToColumnMapping.entrySet().stream() + .map(entry -> { + DataConverter dataConverter = DataConverterProvider.getDataConverter( + entry.getValue().getType()); + Object convertedValue = dataConverter.convertValueForLoad( + columnToDataMapping.get(entry.getValue())); + return new FieldData(entry.getKey(), convertedValue); + }) + .collect(Collectors.toList()); + } +} diff --git a/backend/src/main/resources/.gitkeep b/backend/src/main/resources/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/config.md b/config.md new file mode 100644 index 0000000..7455710 --- /dev/null +++ b/config.md @@ -0,0 +1,749 @@ +# Описание параметров конфигурации сервера приложений + +Файл /standalone/configuration/standalone.xml + +## Общие + +- `webbpm.security.login.case_sensitive`. Default value = true. Параметр отвечающий за чувствительность к регистру при обработке логина пользователя. + - true - Login и login, обрабатываются как разные логины. + - false - Login и login, обрабатывается как один и тот же логин. +- `webbpm.db.pool_size`. Нужен только для `webbpm.mode` = development. +- `webbpm.mode`. Режим работы приложения. Значения - development, production. + - development - в этом режиме используется соединение к БД проекта, заданное в Studio. + - production - в этом режиме используется соединение к БД проекта, заданное с помощью jndi имени. + +## jBPM + +- `com.arjuna.ats.arjuna.allowMultipleLastResources` +- `webbpm.jbpm.audit-log.disabled` - флаг, отвечающий за включение/отключение аудита jBPM +- `webbpm.jbpm.cleaner_cron` - cron расписание автоматической очистки БД JBPM, по умолчанию "-" т.е. выключен. Очищаются незавершенные процессы. +- `webbpm.jbpm.cleaner_timeout` - время, спустя которое процесс считается устаревшим. По умолчанию - 10 часов. +- `webbpm.jbpm.finished_process_cleaner_cron` - cron расписание автоматической очистки аудита процессов в БД JBPM, по умолчанию "-" + т.е. выключен +- `webbpm.jbpm.finished_process_cleaner_timeout` - время, спустя которое процесс считается устаревшим. По умолчанию - 10 часов. + +Пример: + +```xml + + + +``` + +### jBPM Runtime Strategy + +Возможные варианты runtime strategy: + +- SINGLETON +- PER_REQUEST (значение по умолчанию) +- PER_PROCESS_INSTANCE +- PER_CASE + +Пример: + +```xml + +``` + +## Способ аутентификации + +- authentication.method - способ аутентификации. Поддерживаемые способы аутентификации: form, kerberos, cert_over_db, cert_over_ldap + +### По логину и паролю + +Пример конфигурации: + +```xml + +``` + +### По сертификату + +- cert_over_db - проверка наличия пользователя в базе данных безопасности +- cert_over_ldap - проверка наличия пользователя в базе данных безопасности и в LDAP + +Примеры: + +```xml + + +``` + +Параметр способа аутентификации authentication.method должен быть также установлен на клиентской части приложения в app-config.json + +Также для аутентификации по сертификату нужны свойства для хранилища сертификатов: + +- certificate.keystore.location - путь до java key store. Key store - это хранилище доверенных сертификатов, с помощью которых можно проверить корневой сертификат. Сертификат устанавливается с помощью команды: + + ```text + keytool -importcert -alias myAlias -file Example.cer -keystore exampleKeyStore + ``` + +- certificate.keystore.password - пароль для keystore, установленный при импорте сертификата + +Примеры: + +```xml + + +``` + +### Kerberos + +Получите от администратора Kerberos .keytab файл, из которого командой `klist -k http.keytab` можно получить список principal-ов +Проверить успешность авторизации principal-а можно командой `kinit -t -i http.keytab %principal%`. +В +случае успешной авторизации команда `klist` в качестве default principal которым проводилась авторизация. +После этого в standalone.xml поправить параметр `app.service-principal` на principal, которым успешно авторизовались. principal имеет формат: `HTTP/%hostname%@%REALM%` + +Пример конфигурации: + +```xml + + + +``` + +- app.service-principal. Пример - HTTP/oleg-rxserver.alt.dom@ALT.DOM +- app.keytab-location - расположение keytab файла. Пример - ${jboss.home.dir}/ +- http.keytab. + +Также необходимо в настройках браузера на клиенте задать параметр `network.negotiate-auth.trusted-uris` задать значение `.%domain%`. +Пример: + +```xml +.ALT.DOM +``` + +### Ldap + +Аутентификация происходит посредством логина и пароля синхронизированного пользователя Ldap. +Логин и пароль введенные в форму входа, будут проверены сервисом Ldap. + +Пример конфигурации: + +```xml + + + + + +``` + +#### Настройка сервера приложений для работы с Kerberos + +1. создать учетные записи в домене: + + - тестовые для проверки работоспособности функционала (пользователи домена, почтовые ящики): + + `User1 pass1 user1@example.com` + + `User2 pass2 user2@example.com` + + - сервисную для доступа сервиса(приложения) к MS AD - (пользователь домена - снять устаревание пароля, ограничение по времени действия, почтовый ящик): + + `serviceUser servicePass serviceuser@example.com` + + --- + +2. завести учетную запись машины `appserver.machine.name` (fqdn-имя сервиса) в AD (вручную, как запись в computer) и в DNS (A-запись) + + `appserver.machine.name 10.250.216.91` + +3. сгенерировать keytab (утилита ktpass) для аутентификации сервисов(приложения) для единой точки входа - `serviceUser` - с именем test.file.name.keytab - привязав к ней пользователя serviceUser + + например, так: + + ``` + ktpass -princ http/appserverMachineName.example.com@example.com -mapuser example.com\serviceUser -pass "пароль_уз_serviceUser" -crypto All -ptype KRB5_NT_PRINCIPAL -out "путь_к_директории_выгрузки_файла\test.file.name.keytab" + ``` + +##### Kerberos FAQ + +- В случае, если авторизация не проходит и в логах сервера приложений присутствует следующий вывод: + + ``` + 2019-05-14 05:33:36,588 INFO [security.controller.KerberosAuthenticationController] (default task-3) Authentication request header Authorization not exists + 2019-05-14 05:33:36,588 INFO [security.controller.KerberosAuthenticationController] (default task-3) Authentication object is not presented + ``` + + необходимо проверить настройку браузера firefox `network.negotiate-auth.trusted-uris`, она должна соответствовать домену из principal-а. + Для этого в поисковую строку браузера вводим "about:config", в открывшемся окне нажимаем "accept with risk and continue", в поисковой строке открывшейся страницы ввести `network.negotiate-auth.trusted-uris`. + Пример: для principal-а `HTTP/oleg-rxserver.alt.dom@ALT.DOM` настройка в браузере должна быть `.alt.dom`, приложение в браузере должно открываться по `http:\\oleg-rxserver.alt.dom:8080\...` + +- если в логах сервера приложений есть ошибка: + + ```xml + 2019-05-13 14:13:07,095 WARN [org.springframework.security.kerberos.web.authentication.SpnegoAuthenticationProcessingFilter] (default task-1) Negotiate Header was invalid: Negotiate TlRMTVNTUAABAAAAl4II4gAAAAAAAAAAAAAAAAAAAAAKAGNFAAAADw==: org.springframework.security.authentication.BadCredentialsException: Kerberos validation not successful + ... + + Caused by: java.security.PrivilegedActionException: GSSException: Defective token detected (Mechanism level: GSSHeader did not find the right tag) + at java.security.AccessController.doPrivileged(Native Method) [rt.jar:1.8.0_211] + at javax.security.auth.Subject.doAs(Subject.java:422) [rt.jar:1.8.0_211] + at org.springframework.security.kerberos.authentication.sun.SunJaasKerberosTicketValidator.validateTicket(SunJaasKerberosTicketValidator.java:68) [spring-security-kerberos-core-1.0.1.RELEASE.jar:1.0.1.RELEASE] + ... 66 more + Caused by: GSSException: Defective token detected (Mechanism level: GSSHeader did not find the right tag) + at sun.security.jgss.GSSHeader.(GSSHeader.java:97) [rt.jar:1.8.0_211] + at sun.security.jgss.GSSContextImpl.acceptSecContext(GSSContextImpl.java:306) [rt.jar:1.8.0_211] + at sun.security.jgss.GSSContextImpl.acceptSecContext(GSSContextImpl.java:285) [rt.jar:1.8.0_211] + at org.springframework.security.kerberos.authentication.sun.SunJaasKerberosTicketValidatorKerberosValidateAction.run(SunJaasKerberosTicketValidator.java:170) [spring-security-kerberos-core-1.0.1.RELEASE.jar:1.0.1.RELEASE] + at org.springframework.security.kerberos.authentication.sun.SunJaasKerberosTicketValidatorKerberosValidateAction.run(SunJaasKerberosTicketValidator.java:153) [spring-security-kerberos-core-1.0.1.RELEASE.jar:1.0.1.RELEASE] + ... 69 more + ``` + + необходимо проверить правильность указанного в standalone.xml principal-а. + +### Комбинации нескольких способов аутентификации + +Приложение может обрабатывать запросы на несколько способов аутентификации. Для этого необходимо переичислить нужные профили через запятую. +Примеры: + +```xml + + + + +``` + +### Время жизни токенов аутентификации + +```xml + + + +``` + +`webbpm.security.access_token.duration.minutes` - опциональный параметр (значение по умолчанию 60), время жизни в минутах, сколько будет действителен токен, после истечения этого времени токен будет обновлён `webbpm.security.refresh_token.duration.days` - опциональный параметр (значение по умолчанию 30), время жизни в днях, после истечения этого времени с последнего обновления, пользователю будет необходимо повторно войти `webbpm.security.session.active.count` - опциональный параметр (значение по умолчанию 1), количество сохраняемых в базу токенов обновления (количество активных сессий) + +Примечания. + +- Нельзя использовать одновременно профили cert_over_db c cert_over_ldap и kerberos с form. + +## Синхронизация пользователей с LDAP + +```xml + + + + + + + +``` + +Настройки подключения к LDAP: + +- `ldap.auto.sync.enabled` - включает/отключает автоматическую синхронизацию с LDAP +- `ldap.synchronizer.cron` - cron расписание автоматической синхронизации с LDAP +- `ldap.url`. Пример - ldap://localhost:389 +- `ldap.base`. Пример - dc=alt,dc=dom +- `ldap.username`. Пример - uid=test,ou=People,dc=alt,dc=dom +- `ldap.password` +- `webbpm.ldap.implementation`. Допускается два значения: open-ldap и active-directory. + +## WEBGUARD + +Для синхронизации пользователей в WEBGUARD и для корректной работы админки необходимо указать настройки соединения к REST API WEBGUARD + +```xml + + + +``` + +## Статистика + +### jbpm hibernate statistics + +Статистика hibernate jbpm доступна по jmx по пути `org.hibernate:type=Stats,name=jbpm`. +Полный список параметров можно посмотреть через jconsole. + +По умолчанию включена, отключить можно настройкой `webbpm.jbpm.hibernate_statistics.enabled`: + +```xml + +``` + +## Schedulers по очистке базы *jbpm*. + +- Очистка таблиц аудита от завершенных процессов по истечении таймаута + + - `webbpm.jbpm.finished_process_cleaner_cron` - задает расписание (*spring cron*), если настройка не задана - джоб не запускается + - `webbpm.jbpm.finished_process_cleaner_timeout` - таймаут в часах (*целое числовое значение*) + + Пример: + + ```xml + + + ``` + + ## Ограничения для запросов БД. + +- `webbpm.db.query_limit_enabled` - флаг, отвечающий за вывод сообщений о превышении лимитов на количество возвращаемых записей. По умолчанию - false. + +- `webbpm.db.select_records_max_limit` - максимальный лимит возвращаемых строк для запросов в БД, при превышении/равенстве данного лимита будет выброшена ошибка (*целое числовое значение*). По умолчанию - 100000 + +- `webbpm.db.select_records_min_limit` - минимальный лимит возвращаемых строк для запросов в БД, при превышении/равенстве данного лимита в логи будет выведен warning (*целое числовое значение*). По умолчанию - 1000 + +- `webbpm.db.execution_time_threshold`. The threshold for time of executing a statement. Система выводит сообщение в логи при превышении. Действует для запросов, созданных в jOOQ. По умолчанию - 1000 миллисекунд + +- `webbpm.db.result_read_time_threshold`. The threshold for time of fetching a set of records from a ResultSet. + . Система выводит сообщение в логи при превышении. Действует для запросов, созданных в jOOQ. По умолчанию - 50 миллисекунд + +- `webbpm.db.results_count_threshold`. Система выводит сообщение в логи при превышении. Действует для запросов, созданных в jOOQ. По умолчанию - 1000 записей + +- `webbpm.db.full_time_threshold`. Ограничение на полное время выполнения запроса. Система выводит сообщение в логи при превышении. Действует для запросов, созданных в jOOQ. По умолчанию sum(webbpm.db.result_read_time_threshold, webbpm.db.execution_time_threshold) миллисекунд + +- `webbpm.db.query_timeout`. Ограничение на время выполнения запроса. При превышении запрос будет отклонен. Действует для запросов, созданных в jOOQ в dev режиме. По умолчанию 120 секунд. + +Пример: + +```xml + + + + + + + + +``` + +## Добавление версии приложения в URL при запросах к backend-у + +При сборке приложения с профилем enable-version-in-url в URL будет добавляться версия приложения, указанная в pom.xml. +Шаблон URL: + +``` +//:/backend/ +``` + +## Включение регистрации пользователя + +1. Укажите конфигурацию почтового сервера для отправки писем с подтверждением регистрации. +Для этого в файле проекта *jndi-resources.xml* добавьте ресурс SmtpConfiguration. +Шаблон: +``` +{"host":"host","port":1234,"login":"user","password":"password","from":"email_from","senderName":"sender_name","isSecured":true} +``` +Почтовый сервер - зарегистрированный актуальный почтовый адрес. В поле password нужно указывать не пароль для входа в почту, а создать пароль для приложений в учетке почты и указать его. +2. Для включения регистрации добавьте в *standalone.xml* свойство +``` + +``` +3. Также в *standalone.xml* укажите ресурс для отправки писем для подтверждения регистрации (из п.1) +``` + +``` +4. При необходимости, отредактируйте шаблон письма для подтверждения регистрации +(resources/src/main/resources/mail/confirmation.html) + +5. При необходимости, отредактируйте шаблон письма для восстановления пароля +(resources/src/main/resources/mail/reset_password.html) + + +#### Настройка браузера для входа в систему с помощью Kerberos + +1. Запустите браузер firefox. +2. В адресной строке введите about:config, нажать кнопку "я принимаю на себя риск" +3. С помощью поиска найдите параметр network.negotiate-auth.trusted-uris и в качестве значения ввести домен(например для домена example.com надо ввести .example.com) +4. Откройте в браузере приложение. Пример [http://app.example.com/](http://app.example.com/) . Приложение должно открыться без запроса логина/пароля + +## Восстановление структуры БД + +На основе БД проекта с помощью jOOQ генерируются Java классы для каждого объекта БД. Это происходит по нажатию кнопки Обновить на панели БД в студии. При необходимости можно сформировать DDL на основе данных классов. Пример класса для генерации DDL + +``` +package ru.cg.webbpm.test_project.db_beans; + +import org.jooq.*; +import org.jooq.impl.*; + +public class Main { + public static void main (String args []) { + DefaultConfiguration defaultConfiguration = new DefaultConfiguration(); + defaultConfiguration.setSQLDialect(SQLDialect.POSTGRES); + Queries ddl = DSL.using(defaultConfiguration).ddl(DefaultCatalog.DEFAULT_CATALOG); + + for (Query query : ddl.queries()) { + System.out.println(query); + } + } +} +``` + +** ВНИМАНИЕ: ** + +- этим способом нельзя восстановить функции/процедуры БД + +см. также [Generating DDL from objects](https://www.jooq.org/doc/latest/manual/sql-building/ddl-statements/generating-ddl/) + +## Распределенный кэш (Hazelcast) + +В платформе подключен кэш. Он используется для подсчёта количества пользователей и кэширования подсистемы безопасности + +- `webbpm.cache.hazelcast.port` - входящий порт hazelcast. по дефолту 5701. +- Обязательное задать одно из двух следующих параметров + - `webbpm.cache.hazelcast.hosts` - список хостов серверов приложений. + webbpm.cache.hazelcast.hosts = hostname1,hostname2,hostname3 + - `webbpm.cache.hazelcast.kubernetes.service_name` - имя сервиса в среде kubernetes, + используемый для обнаружения других подов. Подходит как стратегия обнаружения, если используется + kubernetes +- `webbpm.cache.hazelcast.outbound_port_definitions` - исходящие порты hazelcast. по дефолту не задано, система сама выбирает свободные порты. Задать диапазон 5801 - 5820 +- `webbpm.cache.hazelcast.backup_count`. Нужны чтобы когда сервер выключается был доступен бекап. Если предполагается выключать несколько серверов за раз, то нужно увеличить. + Данный бекап делает копии синхронно с основной записью и операция записи ждет пока будет записана везде. Можно делать бекап асинхронно, настраивается через async_backup_count + подробнее про бекапы [Hazelcast IMDG Reference Manual](https://docs.hazelcast.org/docs/3.11/manual/html-single/index.html#backing-up-maps) . по дефолту 1 +- `webbpm.cache.hazelcast.async_backup_count` +- `webbpm.cache.hazelcast.public_address` +- `webbpm.cache.hazelcast.interfaces` + +Пример конфигурации: + +```xml + + ` +``` + +## Подключение компоненты адреса в режиме ГАР (Государственный адресный реестр) + +Необходимо задать параметры: + +- `gar.enable` - флаг, который включает/отключает сервис для работы с ГАР. Должен быть задан для работы компоненты в режиме ГАР. По умолчанию true, для отключения задать false. +- `gar.elastic.url.host` - хост на котором развернут elasticsearch. +- `gar.elastic.password` - пароль для аутентификации elasticsearch. + +Дополнительные параметры: + +- `gar.elastic.url.port` - порт на котором развернут elasticsearch. +- `gar.elastic.username` - логин для аутентификации elasticsearch. + +Пример конфигурации: + +```xml + + + +``` + +## Метрики + +Отчет + +Отчет собирается раз в 30 секунд по дефолту, меняется параметром `webbpm.metrics.report_period_ms`. +Все метрики идут за отчетный период, после сбора отчета они сбрасываются. + +Получить json со всеми метриками можно по урлу `backend/metrics/v1/all` - метрики будут с последнего собранного отчета, запрос не триггерит сбор отчета - это независимые операции. Отчет содержит только метрики по которым был совершен хотя бы один вызов в отчетный период. То есть, если какая-то операция не была совершена в отчетный период, то соответствующая ей метрика не попадет в отчет - ее не будет в json. + +### Значения метрик + +Все метрики идут за отчетный период, после сбора отчета они сбрасываются. +Нас в основном интересуют `callsCountSum`, `latencyMin`, `latencyAvg`, `latencyMax` + +- `callsCountSum` - количество завершенных вызовов +- `latencyMin` - минимальное время выполнения +- `latencyAvg` - среднее время выполнения +- `latencyMax` - максимальное время выполнения +- `activeCallsCountMax` - количество начатых, но еще не завершенных вызовов. +- `activeCallsLatencyMax` - длительность самого долгого еще не завершенного вызова + +### Текущие метрики приложения + +- Получение коннекта из пула + + - `webbpm.jbpm.db.connection.acquire` + - `webbpm.security.db.connection.acquire` + - `webbpm.db.connection.acquire` + +- Время с момента получения коннекта до возврата его в пул + + - `webbpm.jbpm.db.connection.in_use` + - `webbpm.security.db.connection.in_use` + - `webbpm.db.connection.in_use` + +- Время выполнения запроса на бд проекта + + - `webbpm.db.query.success.execution_time` + +- Время выполнения запроса на бд проекта + время получения коннекта из пула + + - `webbpm.db.query.success.full_time` + +- active-users-count.indicatorMax + +- active-users-count-ttl.indicatorMax + + # Количество пользователей + +- `webbpm.active_users_counter.enabled` - включает подсчет пользователей, нужно чтобы не запускать hazelcast на дев машинах. по дефолту false. На боевых серверах необходимо установить в true. + +- `webbpm.active_users_counter.max_time_between_operations_in_seconds` - время, которое пользователь считается активным после действия. по дефолту 15 минут. + +- `webbpm.active_users_counter.hazelcast.app_pool_size`. Запись в hazelcast производится асинхронно в отдельном пуле, не блокируя обработку http запроса. Это размер этого пула. по дефолту 4. Можно пока оставить 4 и последить за метриками pool.hazelcast-executor.queue.indicatorMax и pool.hazelcast-executor.activeThreads.indicatorMax. Если очередь будет сильно копиться, то увеличить. + +## Настройка логов + +Все настройки делаются в файле `standalone.xml`, если не указано иначе. + +### Общие настройки + +Платформа Web-bpm использует корневую категорию логирования `ru.cg.webbpm`, рекомендуется выставлять ее в уровень `info`. todo check prod config + +```xml + + + +``` + +При этом компоненты используемые в проекте могут использовать другие категории. + +### Параметры конфигурации + +**Рекомендованное использование:** всегда в `info`. + +Все параметры конфигурации загружаемые платформой web-bpm и пользовательским приложением через api webbpm логируются категорией `ru.cg.webbpm.modules.core.app_info.api.property.BaseProperty`. Она всегда должна быть выставлена в `info`. + +Пример вывода: + +``` +2017-12-04 16:02:19,074 INFO [ru.cg.webbpm.modules.core.app_info.api.property.BaseProperty] (EclipseGeminiBlueprintExtenderThread-1) System property [webbpm.active_users_counter.enabled] not set. Using default value [false] +2017-12-04 16:02:19,074 INFO [ru.cg.webbpm.modules.core.app_info.api.property.BaseProperty] (EclipseGeminiBlueprintExtenderThread-1) System property [webbpm.active_users_counter.hazelcast.hosts] set to [127.0.0.1] +``` + +### БД проекта + +#### Логирование запросов в бд security и бд проекта + +**Рекомендованное использование:** только при разработке. + +Использовать только при разработке. Категория `org.jooq.tools.LoggerListener` в `debug` уровень. + +```xml + + + +``` + +Пример вывода: + +``` +2017-12-04 18:21:10,391 DEBUG [org.jooq.tools.LoggerListener] (default task-19) Executing query : select "department"."department_name", "department"."department_id", "department"."parent_department_id", "department"."parent_department_id", "department"."department_id", (select (count(*) <> ?) from "public"."department" as "$$child" where "$$child"."parent_department_id" = "department"."department_id") as "$$hasChildren" from "public"."department" as "department" limit ? +2017-12-04 18:21:10,395 DEBUG [org.jooq.tools.LoggerListener] (default task-19) -> with bind values : select "department"."department_name", "department"."department_id", "department"."parent_department_id", "department"."parent_department_id", "department"."department_id", (select (count(*) <> 0) from "public"."department" as "$$child" where "$$child"."parent_department_id" = "department"."department_id") as "$$hasChildren" from "public"."department" as "department" limit 2147483647 +2017-12-04 18:21:10,568 DEBUG [org.jooq.tools.LoggerListener] (default task-19) Fetched result : +-----------------+-------------+--------------------+--------------------+-------------+-------------+ +2017-12-04 18:21:10,568 DEBUG [org.jooq.tools.LoggerListener] (default task-19) : |department_name |department_id|parent_department_id|parent_department_id|department_id|$$hasChildren| +2017-12-04 18:21:10,568 DEBUG [org.jooq.tools.LoggerListener] (default task-19) : +-----------------+-------------+--------------------+--------------------+-------------+-------------+ +2017-12-04 18:21:10,568 DEBUG [org.jooq.tools.LoggerListener] (default task-19) : |Головной офис 1 | 8| {null}| {null}| 8|true | +2017-12-04 18:21:10,568 DEBUG [org.jooq.tools.LoggerListener] (default task-19) : |Головной офис 2 | 9| {null}| {null}| 9|true | +2017-12-04 18:21:10,568 DEBUG [org.jooq.tools.LoggerListener] (default task-19) : |Головной офис 3 | 10| {null}| {null}| 10|true | +2017-12-04 18:21:10,568 DEBUG [org.jooq.tools.LoggerListener] (default task-19) : |Подразделение 1.1| 11| 8| 8| 11|true | +2017-12-04 18:21:10,568 DEBUG [org.jooq.tools.LoggerListener] (default task-19) : |Подразделение 1.2| 12| 8| 8| 12|true | +2017-12-04 18:21:10,568 DEBUG [org.jooq.tools.LoggerListener] (default task-19) : +-----------------+-------------+--------------------+--------------------+-------------+-------------+ +2017-12-04 18:21:10,568 DEBUG [org.jooq.tools.LoggerListener] (default task-19) : |...55 record(s) truncated... +``` + +#### Логирование больших запросов + +**Рекомендованное использование:** всегда в `info`, с подобранными для проекта значениями. В проде значения должны быть проверены что они не вызывают излишнее логирование. + +1. Для отслеживания больших запросов в пользовательскую базу нужно задать параметры что считать большими запросами, логироваться будут запросы больше заданных показателей. + Чтобы логировать все запросы можно задать значение `-1`. Добавляются как property в раздел `system-properties`: + + ```xml + + + ``` + + В `info` режиме работают: + + - `webbpm.db.full_time_threshold` - полное время выполнения запроса в миллисекундах. Включает построение запроса библиотекой, выполнение и загрузку результатов. Пример сообщения
`2023-01-11 13:09:38,361 WARN [ru.cg.webbpm.modules.database.impl.analytics.PerformanceListener] (default task-33) Query full time threshold exceeded. full_time=[6565ms] execution_time=[6565ms] read_time=[0ms] results_count=[4] query=[]` + - `webbpm.db.results_count_threshold` - количество записей, которое вернул запрос. Пример сообщения
`2023-01-11 13:10:34,088 WARN [ru.cg.webbpm.modules.database.impl.analytics.PerformanceListener] (default task-41) Query results count threshold exceeded. results_count=[11177] query=[]` + + В `debug` режиме дополнительно к работающим в info: + + - `webbpm.db.execution_time_threshold` - время выполнения запроса + построения запроса библиотекой. + - `webbpm.db.result_read_time_threshold` - время чтения результатов запроса + +2. После задания настроек нужно настроить логирование - категория `ru.cg.webbpm.modules.database.impl.analytics.PerformanceListener`, уровень `info` или `debug`. + + ```xml + + + + ``` + +### JBPM + +#### Основные настройки + +JBPM использует 3 корневых категории логирования – `org.jbpm`, `org.drools`, `org.kie`. Все они должны быть выставлены в `warn`. + +```xml + + + + + + + + + +``` + +#### Логирование запросов в БД + +**Рекомендованное использование:** только при разработке. + +Для логирования sql запросов нужно включить категорию `org.hibernate.SQL` в `debug`: + +```xml + + + +``` + +Чтобы вывести параметры запросов и результат выполнения – категорию `org.hibernate.type.descriptor.sql` в `trace`: + +```xml + + + +``` + +Пример вывода: + +``` +18:21:06,938 DEBUG [org.hibernate.SQL] (default task-47) select names0_.Task_Names_Id as Task_Nam7_16_0_, names0_.id as id1_16_0_, names0_.id as id1_16_1_, names0_.language as language2_16_1_, names0_.shortText as shortTex3_16_1_, names0_.text as text4_16_1_ from I18NText names0_ where names0_.Task_Names_Id=? +18:21:06,939 TRACE [org.hibernate.type.descriptor.sql.BasicBinder] (default task-47) binding parameter [1] as [BIGINT] - [180] +18:21:06,940 TRACE [org.hibernate.type.descriptor.sql.BasicExtractor] (default task-47) extracted value ([id1_16_1_] : [BIGINT]) - [539] +18:21:06,940 TRACE [org.hibernate.type.descriptor.sql.BasicExtractor] (default task-47) extracted value ([language2_16_1_] : [VARCHAR]) - [en-UK] +18:21:06,940 TRACE [org.hibernate.type.descriptor.sql.BasicExtractor] (default task-47) extracted value ([shortTex3_16_1_] : [VARCHAR]) - [Список записей] +18:21:06,941 TRACE [org.hibernate.type.descriptor.sql.BasicExtractor] (default task-47) extracted value ([text4_16_1_] : [CLOB]) - [Список записей] +18:21:06,941 TRACE [org.hibernate.type.descriptor.sql.BasicExtractor] (default task-47) extracted value ([Task_Nam7_16_0_] : [BIGINT]) - [180] +18:21:06,942 TRACE [org.hibernate.type.descriptor.sql.BasicExtractor] (default task-47) extracted value ([id1_16_0_] : [BIGINT]) - [539] +``` + +#### Дополнительные логи hibernate + +**Рекомендованное использование:** только при разработке в случае необходимости. + +1. Время выполнения запроса и количество результатов. + + Включаются категорией `org.hibernate.stat` в `debug`. При этом в hibernate должен быть включен сбор статистики. + Похоже что логируется только hql select запросов. + + ```xml + + + + ``` + + Пример вывода: + + ``` + 18:21:06,858 DEBUG [org.hibernate.stat.internal.ConcurrentStatisticsImpl] (default task-41) HHH000117: HQL: select t from AuditTaskImpl t where t.taskId = :taskId, time: 6ms, rows: 1 + ``` + +2. Показатели hibernate сессий + + Включаются категорией `org.hibernate.engine.internal.StatisticalLoggingSessionEventListener` в `info`. + При этом в hibernate должен быть включен сбор статистики. Тут может быть интересно количество запросов, флашей и общее время на все запросы сессией. + + Пример вывода: + + ``` + 2017-12-04 17:25:58,493 INFO [org.hibernate.engine.internal.StatisticalLoggingSessionEventListener] (default task-21) Session Metrics { + 63408365 nanoseconds spent acquiring 17 JDBC connections; + 521509 nanoseconds spent releasing 17 JDBC connections; + 65732621 nanoseconds spent preparing 17 JDBC statements; + 31471897 nanoseconds spent executing 17 JDBC statements; + 0 nanoseconds spent executing 0 JDBC batches; + 0 nanoseconds spent performing 0 L2C puts; + 0 nanoseconds spent performing 0 L2C hits; + 0 nanoseconds spent performing 0 L2C misses; + 297556 nanoseconds spent executing 1 flushes (flushing a total of 16 entities and 0 collections); + 430168 nanoseconds spent executing 1 partial-flushes (flushing a total of 16 entities and 16 collections) + } + ``` + +#### Логирование hbm2ddl + +**Рекомендованное использование:** всегда в `trace`. + +Должно быть включено всегда. Позволяет убедиться что hibernate не накатывал никакие миграции на базу. Этот функционал отключен у нас в коде. + +```xml + + + +``` + +# Описание параметров конфигурации клиентской части + +Свойства задаются в файле frontend/src/resources/app-config.json или frontend.war/src/resources/app-config.json + +## Общие + +- `dev_mode` - настройка задающая dev_mode для просмотра логов (true/false). При отсутствие оставляет значение при сборке +- `guard.confirm_exit` - выводить или нет диалог подтверждения, если обнаружены несохраненные данные в форме. Значение по умолчанию - false. +- `password.pattern` - Регулярное выражение для валидации пароля. +- `password_pattern_error` - Сообщение об ошибке валидации. +- `show.client.errors` - отвечает за отображение ошибок javascript-a пользователю (должна использоваться только в тестовых контурах) по умолчанию выключена +- 'available_task.single_fetch' - Отвечает за количество запросов available_task при завершении процесса. true - одиночный запрос, false/не указано - 10 запросов(старая реализация). + +## Вывод сообщений + +- `message_service_error_timeout` время в мс, в течение которого будет отображено сообщение об ошибке. Значение по умолчанию - таймаут не задан (окно не закрывается). +- `message_service_warning_timeout` время в мс, в течение которого будет отображено предупреждающее сообщение. Значение по умолчанию - таймаут не задан (окно не закрывается). +- `message_service_success_timeout` время в мс, в течение которого будет отображено сообщение об успехе. Значение по умолчанию - таймаут не задан (окно не закрывается). +- `message_service_info_timeout` время в мс, в течение которого будет отображено информационное сообщение. Значение по умолчанию - таймаут не задан (окно не закрывается). + +## Электронная подпись + +### Esmart + +- `electronic_sign.esmart_extension_url` - url для создания расширенной подписи. Подробная информация по ссылке [http://demo.esmart.ru](http://demo.esmart.ru) +- `electronic_sign.tsp_address` - адрес сервера службы штампов времени + +Пример: + +```text +"electronic_sign.esmart_extension_url": "http://dsig.ibsdemo.ru/ibs_dsig/ibs_dSig.asmx" +``` + +## Способ аутентификации + +- `auth_method` - способ аутентификации. Может принимать одно значение из списка: form, kerberos, cert_over_db, cert_over_ldap + +## Таймер очистки закешированных значений фильтров + +- `filter_cleanup_interval_hours` - время жизни закешированного значения фильтра в часах. По умолчанию - 720 часов, +- `filter_cleanup_check_period_minutes` - период проверки наличия просроченных закешированных значений в минутах. По умолчанию - 30 минут + +## Добавление версии приложения в URL при запросах к frontend-у + +В модуле frontend в src/resources/app-config.json добавлены 2 переменные + +- `"enable.version.in.url": "%enable.version.in.url%"` - подставлять ли версию в URL приложения. По умолчанию false. Если сборка произведена +- `"app.version": "%project.version%"` - версия приложения. + с профилем `enable-version-in-url`, то значение будет true. + +## Добавление Jivo чат в проект + +Свойства задаются в файле frontend/src/resources/app-config.json или frontend.war/src/resources/app-config.json + +- `jivo_chat_widget_api_url` - API url для работы Jivo чата. Необходимо заменить {WIDGET_ID} на реальный Widget API ID +- `jivo_chat_widget_enabled` - параметр отвечающий за активацию Jivo чата. По дефолту false, для активации задать true. + +Пример: + +```json + "jivo_chat_widget_api_url": "https://code.jivo.ru/widget/{WIDGET_ID}", + "jivo_chat_widget_enabled": false +``` + +# Прочее + +## Смена удалённого репозитория + +1. Смените адрес NPM registry в файле frontend.npmrc. Пример - registry=https://repo.example.com/repository/npm-all/ +2. Поменяйте ссылки в блоке , файла pom.xml diff --git a/config/.gitignore b/config/.gitignore new file mode 100644 index 0000000..ba9a786 --- /dev/null +++ b/config/.gitignore @@ -0,0 +1,2 @@ +/*.ear +/*.jar diff --git a/config/Dockerfile b/config/Dockerfile new file mode 100644 index 0000000..6b77815 --- /dev/null +++ b/config/Dockerfile @@ -0,0 +1,44 @@ +FROM quay.io/wildfly/wildfly:26.1.3.Final-jdk17 +USER root +ARG POSTGRES_DRIVER_VERSION=42.7.3 +RUN yum-config-manager --disable base --disable extras --disable updates \ + && yum-config-manager --enable C7.8.2003-base --enable C7.8.2003-extras --enable C7.8.2003-updates \ + && yum -y --disableplugin=fastestmirror install sudo \ + && chown -R jboss: /opt/jboss/ + +USER jboss +WORKDIR $JBOSS_HOME +ENV JAVA_ARGS=-Xmx3g +RUN echo 'JAVA_OPTS="$JAVA_OPTS -agentlib:jdwp=transport=dt_socket,address=*:8787,server=y,suspend=n"' >> bin/standalone.conf && \ + echo 'JAVA_OPTS="$JAVA_OPTS -XX:MaxMetaspaceSize=1g"' >> bin/standalone.conf && \ + echo 'JAVA_OPTS="$JAVA_OPTS -XX:+UseStringDeduplication -XX:+ParallelRefProcEnabled -XX:+ExplicitGCInvokesConcurrent"' >> bin/standalone.conf && \ + echo 'JAVA_OPTS="$JAVA_OPTS -XX:+UnlockDiagnosticVMOptions -XX:G1SummarizeRSetStatsPeriod=1"' >> bin/standalone.conf && \ + echo 'JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF-8"' >> bin/standalone.conf && \ + echo 'JAVA_OPTS="$JAVA_OPTS -XX:-OmitStackTraceInFastThrow"' >> bin/standalone.conf && \ + echo 'JAVA_OPTS="$JAVA_OPTS -Dorg.jboss.logmanager.nocolor=true"' >> bin/standalone.conf && \ + echo 'JAVA_OPTS="$JAVA_OPTS $JAVA_ARGS"' >> bin/standalone.conf + +### Locale support ru_RU ### +USER root +RUN localedef -i ru_RU -f UTF-8 ru_RU.UTF-8 +RUN echo "LANG=\"ru_RU.UTF-8\"" > /etc/locale.conf +USER jboss +ENV LANG ru_RU.UTF-8 +ENV LANGUAGE ru_RU.UTF-8 +ENV LC_ALL ru_RU.UTF-8 +### Locale Support END ### + +COPY --chown=jboss entrypoint.sh . +COPY --chown=jboss patches patches +RUN (cd patches && wget https://repo.micord.ru/repository/libs-releases-local/org/jboss/ironjacamar/ironjacamar-core-impl/1.5.3.Final/ironjacamar-core-impl-1.5.3.Final.jar) +RUN (cd patches/system && wget https://repo1.maven.org/maven2/org/postgresql/postgresql/$POSTGRES_DRIVER_VERSION/postgresql-$POSTGRES_DRIVER_VERSION.jar -O postgresql-driver.jar) + +RUN chmod -R +x patches && \ + chmod +x entrypoint.sh && \ + ./entrypoint.sh && \ + rm -rf patches + +ENV SERVER_START=true +COPY --chown=jboss *.ear $JBOSS_HOME/standalone/deployments/ + +HEALTHCHECK --timeout=3s --start-period=3600s CMD curl --fail 127.0.0.1:8080/dashboard/version || exit 1 diff --git a/config/Dockerfile.build b/config/Dockerfile.build new file mode 100644 index 0000000..00cefb8 --- /dev/null +++ b/config/Dockerfile.build @@ -0,0 +1,10 @@ +FROM maven:3-jdk-11-slim +RUN apt update \ + && apt upgrade -y \ + && curl -fsSL https://deb.nodesource.com/setup_14.x | bash - \ + && apt install -y git nodejs \ + && rm -rf /var/lib/apt/lists/* + +WORKDIR /app +COPY ../ . +RUN mvn clean -T4C && mvn package -T4C diff --git a/config/Dockerfile.secdb b/config/Dockerfile.secdb new file mode 100644 index 0000000..f9eeaac --- /dev/null +++ b/config/Dockerfile.secdb @@ -0,0 +1,5 @@ +FROM postgres:11-alpine + +COPY secdb.sql . + +CMD psql "postgresql://${DB_SEC_USERNAME:-security}:${DB_SEC_PASSWORD:-secpassword}@${DB_SEC_HOST:-db}/${DB_SEC_NAME:-security}" < secdb.sql diff --git a/config/JDK_version b/config/JDK_version new file mode 100644 index 0000000..98d9bcb --- /dev/null +++ b/config/JDK_version @@ -0,0 +1 @@ +17 diff --git a/config/browsers.json b/config/browsers.json new file mode 100644 index 0000000..68edc1e --- /dev/null +++ b/config/browsers.json @@ -0,0 +1,31 @@ +{ + "firefox": { + "default": "112.0", + "versions": { + "112.0": { + "image": "selenoid/firefox:112.0", + "port": "4444", + "path": "/wd/hub", + "tmpfs": { + "/tmp": "size=512m" + }, + "env" : ["LANG=ru_RU.UTF-8", "LANGUAGE=ru:en", "LC_ALL=ru_RU.UTF-8"], + "shmSize": 1073741824 + } + } + }, + "chrome": { + "default": "121.0", + "versions": { + "121.0": { + "image": "selenoid/chrome:121.0", + "port": "4444", + "tmpfs": { + "/tmp": "size=512m" + }, + "env" : ["LANG=ru_RU.UTF-8", "LANGUAGE=ru:en", "LC_ALL=ru_RU.UTF-8"], + "shmSize": 1073741824 + } + } + } +} \ No newline at end of file diff --git a/config/create-databases.sh b/config/create-databases.sh new file mode 100644 index 0000000..7550486 --- /dev/null +++ b/config/create-databases.sh @@ -0,0 +1,12 @@ +#!/bin/bash +set -e + +IFS=',' +for databases in $WILDFLY_DATABASES + do + IFS=':' read name user password <<< $databases + psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL + CREATE USER $user WITH PASSWORD '$password'; + CREATE DATABASE $name WITH OWNER $user; +EOSQL +done diff --git a/config/docker-compose.secdb.yaml b/config/docker-compose.secdb.yaml new file mode 100644 index 0000000..2f6671b --- /dev/null +++ b/config/docker-compose.secdb.yaml @@ -0,0 +1,12 @@ +version: "3" +services: + secdb: + build: + context: . + dockerfile: Dockerfile.secdb + depends_on: + - db + env_file: + - testing.env + labels: + - "tmp=true" diff --git a/config/docker-compose.selenoid.yaml b/config/docker-compose.selenoid.yaml new file mode 100644 index 0000000..f284e11 --- /dev/null +++ b/config/docker-compose.selenoid.yaml @@ -0,0 +1,28 @@ +version: "3" + services: + selenoid: + network_mode: bridge + image: aerokube/selenoid:latest-release + container_name: "selenoid" + environment: + - OVERRIDE_VIDEO_OUTPUT_DIR=$PWD/video + volumes: + - ".:/etc/selenoid/:ro" + - "/var/run/docker.sock:/var/run/docker.sock" + - "./logs:/opt/selenoid/logs/" + - "./video/:/opt/selenoid/video/" + command: -session-attempt-timeout 1m -retry-count 3 -limit ${LIMIT:-4} -save-all-logs -log-output-dir /opt/selenoid/logs -video-output-dir /opt/selenoid/video + ports: + - "4444:4444" + +selenoid-ui: +image: aerokube/selenoid-ui +container_name: "selenoid-ui" +network_mode: bridge +depends_on: + - selenoid +links: + - "selenoid:selenoid" +ports: + - "8080:8080" +command: --selenoid-uri http://selenoid:4444` \ No newline at end of file diff --git a/config/docker-compose.tests.yaml b/config/docker-compose.tests.yaml new file mode 100644 index 0000000..bd0a2ed --- /dev/null +++ b/config/docker-compose.tests.yaml @@ -0,0 +1,41 @@ +version: "3" +services: + db: + ports: + - 5432:5432 + environment: + - WILDFLY_DATABASES=app:app_user:apppassword,security:security_user:secpassword,jbpm:jbpm:jbpmpassword + + webbpm-app: + env_file: + - testing.env + + selenoid: + network_mode: bridge + image: aerokube/selenoid:latest-release + container_name: "selenoid" + environment: + - OVERRIDE_VIDEO_OUTPUT_DIR=$PWD/video + volumes: + - "$PWD:/etc/selenoid/:ro" + - "/var/run/docker.sock:/var/run/docker.sock" + - "$PWD/logs:/opt/selenoid/logs/" + - "$PWD/video/:/opt/selenoid/video/" + command: -session-attempt-timeout 1m -retry-count 3 -limit ${LIMIT:-4} -save-all-logs -log-output-dir /opt/selenoid/logs -video-output-dir /opt/selenoid/video + ports: + - "4444:4444" + depends_on: + - webbpm-app + + selenoid-ui: + image: aerokube/selenoid-ui + container_name: "selenoid-ui" + network_mode: bridge + depends_on: + - selenoid + links: + - "selenoid:selenoid" + ports: + - "8080:8080" + command: --selenoid-uri http://selenoid:4444 + diff --git a/config/docker-compose.tomcat.yaml b/config/docker-compose.tomcat.yaml new file mode 100644 index 0000000..538a488 --- /dev/null +++ b/config/docker-compose.tomcat.yaml @@ -0,0 +1,31 @@ +version: "3" +services: + db: + image: postgres:15-bullseye + volumes: + - ./config/create-databases.sh:/docker-entrypoint-initdb.d/create-databases.sh + command: + - "--max_prepared_transactions=100" + ports: + - 5432 + environment: + - WILDFLY_DATABASES=security:security_user:secpassword,jbpm:jbpm:jbpmpassword + - POSTGRES_PASSWORD=supersecretpassword + labels: + - "tmp=true" + + webbpm-app: + build: + context: ./.. + dockerfile: Dockerfile + depends_on: + - db + ports: + - 9990 + - 8080 + - 8787 + - 12345 + env_file: + - testing.env + labels: + - "tmp=true" diff --git a/config/docker-compose.yaml b/config/docker-compose.yaml new file mode 100644 index 0000000..68ae62e --- /dev/null +++ b/config/docker-compose.yaml @@ -0,0 +1,31 @@ +version: "3" +services: + db: + image: postgres:15-bullseye + volumes: + - ./create-databases.sh:/docker-entrypoint-initdb.d/create-databases.sh + command: + - "--max_prepared_transactions=100" + ports: + - 5432 + environment: + - WILDFLY_DATABASES=security:security_user:secpassword,jbpm:jbpm:jbpmpassword + - POSTGRES_PASSWORD=supersecretpassword + labels: + - "tmp=true" + + webbpm-app: + build: + context: . + dockerfile: Dockerfile + depends_on: + - db + ports: + - 9990 + - 8080 + - 8787 + - 12345 + env_file: + - testing.env + labels: + - "tmp=true" diff --git a/config/entrypoint.sh b/config/entrypoint.sh new file mode 100644 index 0000000..7178804 --- /dev/null +++ b/config/entrypoint.sh @@ -0,0 +1,48 @@ +#! /bin/bash +set -e + +function wait_for_server() { + until `$JBOSS_HOME/bin/jboss-cli.sh -c ":read-attribute(name=server-state)" 2> /dev/null | grep -q running`; do + echo "Retry ..." + done +} + +echo "dump environment variables to env.properties file" +printenv > env.properties + +echo "starting JBoss" +nohup $JBOSS_HOME/bin/standalone.sh --admin-only 1>&2 2>/dev/null & + +# running system patches +wait_for_server +$JBOSS_HOME/bin/jboss-cli.sh --connect --file="./patches/system/init.cli" --properties=env.properties +$JBOSS_HOME/bin/jboss-cli.sh --connect --file="./patches/system/add-postgresql-driver.cli" --properties=env.properties +bash "./patches/system/add-demo-user.sh" + +# running project patches +find ./patches/ -type f -name '*.cli' -not -path './patches/system/*' -print0 | +while IFS= read -r -d '' f; do + wait_for_server + echo "running $f" + $JBOSS_HOME/bin/jboss-cli.sh --connect --file="$f" --properties=env.properties +done; + +find ./patches/ -type f -name '*.sh' -not -path './patches/system/*' -print0 | +while IFS= read -r -d '' f; do + wait_for_server + echo "running $f" + bash "$f" +done + +echo "stopping JBoss" +wait_for_server +$JBOSS_HOME/bin/jboss-cli.sh --connect --command=:shutdown + +if ! [[ -z $SERVER_START ]]; then + echo "starting JBoss in standalone" + sleep 10 # without this occurs error "address already in use" + /opt/jboss/wildfly/bin/standalone.sh -c standalone.xml -b 0.0.0.0 -bmanagement 0.0.0.0 +else + echo "cleaning up JBoss logs" + rm -rf $JBOSS_HOME/standalone/log +fi diff --git a/config/patches/add-logger-database.cli b/config/patches/add-logger-database.cli new file mode 100644 index 0000000..83ee893 --- /dev/null +++ b/config/patches/add-logger-database.cli @@ -0,0 +1,3 @@ +/subsystem=logging/logger=org.jooq.tools:add() +/subsystem=logging/logger=org.jooq.tools:write-attribute(name=level, value=DEBUG) +/subsystem=logging/logger=org.jooq.tools:add-handler(name=CONSOLE) \ No newline at end of file diff --git a/config/patches/default.cli b/config/patches/default.cli new file mode 100644 index 0000000..53fec6c --- /dev/null +++ b/config/patches/default.cli @@ -0,0 +1,30 @@ +xa-data-source add \ + --name=AppDS \ + --enabled=true \ + --driver-name=postgresql \ + --jndi-name=java:/webbpm/AppDS \ + --user-name=${env.DB_APP_USERNAME:app_user} \ + --password=${env.DB_APP_PASSWORD:apppassword} \ + --use-ccm=true \ + --valid-connection-checker-class-name=org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker \ + --validate-on-match=false \ + --background-validation=true \ + --background-validation-millis=5000 \ + --exception-sorter-class-name=org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter \ + --statistics-enabled=true \ + --max-pool-size=50 \ + --query-timeout=300 \ + --xa-datasource-properties=ServerName=${env.DB_APP_HOST:db},PortNumber=${env.DB_APP_PORT:5432},DatabaseName=${env.DB_APP_NAME:app} + +/system-property=ldap.mapping.login.param:add(value=${env.WEBBPM_LDAP_LOGIN_ATTR:uid}) +/system-property=ldap.mapping.org.code.param:add(value=${env.WEBBPM_LDAP_ORGANIZATION_ATTR:ou}) +/system-property=jboss.as.management.blocking.timeout:add(value=900) +/subsystem=undertow/server=default-server/http-listener=default/:write-attribute(name=record-request-start-time,value=true) +/subsystem=undertow/server=default-server/host=default-host/setting=access-log:add(pattern=%h %t "%r" %s %b %D) +/system-property=webbpm.cache.hazelcast.hosts:add(value="127.0.0.1") +/system-property=webbpm.cache.hazelcast.outbound_port_definitions:add(value="5801-5820") +/system-property=webbpm.security.session.active.count:add(value="20") +/system-property=gar.enable:add(value=false) +/system-property=security.password.regex:add(value="^((?=(.*\\d){1,})(?=.*[a-zа-яё])(?=.*[A-ZА-ЯЁ]).{8,})$") +/system-property=fias.enable:add(value=false) +/system-property=bpmn.enable:add(value=false) diff --git a/config/patches/system/add-demo-user.sh b/config/patches/system/add-demo-user.sh new file mode 100644 index 0000000..32b2986 --- /dev/null +++ b/config/patches/system/add-demo-user.sh @@ -0,0 +1 @@ +$JBOSS_HOME/bin/add-user.sh demo@example.com demo diff --git a/config/patches/system/add-postgresql-driver.cli b/config/patches/system/add-postgresql-driver.cli new file mode 100644 index 0000000..66566bf --- /dev/null +++ b/config/patches/system/add-postgresql-driver.cli @@ -0,0 +1,5 @@ +/subsystem=datasources/jdbc-driver=postgresql:add( \ + driver-name="postgresql", \ + driver-module-name="org.postgresql", \ + driver-xa-datasource-class-name="org.postgresql.xa.PGXADataSource" \ +) diff --git a/config/patches/system/init.cli b/config/patches/system/init.cli new file mode 100644 index 0000000..100c4d3 --- /dev/null +++ b/config/patches/system/init.cli @@ -0,0 +1,14 @@ +/system-property=webbpm.mode:add(value=production) +/system-property=authentication.method:add(value=form) +/subsystem=undertow/configuration=filter/gzip=gzipFilter:add() +/subsystem=undertow/server=default-server/host=default-host/\ + filter-ref=gzipFilter:add(predicate="exists('%{o,Content-Type}') and regex(pattern='(?:application/javascript|text/css|text/html|text/xml|application/json)(;.*)?', value=%{o,Content-Type}, full-match=true)") +/subsystem=undertow/configuration=filter/response-header=vary-header:add(header-name="Vary", header-value="Accept-Encoding") +/subsystem=undertow/server=default-server/host=default-host/filter-ref=vary-header:add() +/subsystem=undertow/server=default-server/http-listener=default/:write-attribute(name=max-post-size,value=${env.MAX_POST_SIZE:104857600}) +data-source remove --name=ExampleDS +/subsystem=ee/service=default-bindings:remove +/system-property=jboss.bind.address.management:add(value=0.0.0.0) +/system-property=jboss.bind.address:add(value=0.0.0.0) +module add --name=org.postgresql --resources=./patches/system/postgresql-driver.jar --dependencies=javax.api,javax.transaction.api +shutdown --restart diff --git a/config/secdb.sql b/config/secdb.sql new file mode 100644 index 0000000..46856aa --- /dev/null +++ b/config/secdb.sql @@ -0,0 +1,25 @@ +INSERT INTO security.user_group(user_group_id, name, created, updated, access_level_id) VALUES (uuid_in(md5(random()::text || now()::text)::cstring), 'Example', '2019-07-04 11:12:01.263+03', '2019-08-26 16:40:11.953+03', (SELECT access_level_id FROM security.access_level where level = 0)) ON CONFLICT DO NOTHING; +INSERT INTO security.link_user_group_user_role(link_user_group_user_role_id, user_group_id, user_role_id) SELECT uuid_in(md5(random()::text || now()::text)::cstring), (SELECT user_group_id FROM security.user_group where name = 'Example'), user_role_id FROM security.user_role WHERE name = 'Example' ON CONFLICT DO NOTHING; +INSERT INTO security.link_user_group_user_role(link_user_group_user_role_id, user_group_id, user_role_id) SELECT uuid_in(md5(random()::text || now()::text)::cstring), (SELECT user_group_id FROM security.user_group where name = 'Demo'), user_role_id FROM security.user_role WHERE name = 'Example' ON CONFLICT DO NOTHING; + +INSERT INTO security.user_group(user_group_id, name, created, updated, access_level_id) VALUES (uuid_in(md5(random()::text || now()::text)::cstring), 'Example', '2019-07-04 11:12:01.263+03', '2019-08-26 16:40:11.953+03', (SELECT access_level_id FROM security.access_level where level = 0)) ON CONFLICT DO NOTHING; +INSERT INTO security.link_user_group_user_role(link_user_group_user_role_id, user_group_id, user_role_id) SELECT uuid_in(md5(random()::text || now()::text)::cstring), (SELECT user_group_id FROM security.user_group where name = 'Example'), user_role_id FROM security.user_role WHERE name = 'Example' ON CONFLICT DO NOTHING; +INSERT INTO security.link_user_group_user_role(link_user_group_user_role_id, user_group_id, user_role_id) SELECT uuid_in(md5(random()::text || now()::text)::cstring), (SELECT user_group_id FROM security.user_group where name = 'Demo'), user_role_id FROM security.user_role WHERE name = 'Example' ON CONFLICT DO NOTHING; + +INSERT INTO security.user_account(user_account_id, email, first_name, last_name, middle_name, created, updated, locked, org_unit_id, username) VALUES (uuid_in(md5(random()::text || now()::text)::cstring), 'qa_test@micord.ru', 'Пользователь', 'Основной-Тестовый', NULL, '2020-01-20 08:41:25.526+03', '2020-01-20 09:57:07.25+03', false, (SELECT id from security.org_unit where code = 'DEFAULT'), 'qa_test') ON CONFLICT DO NOTHING; +INSERT INTO security.simple_credentials( user_account_id, password, password_expires, password_updated) VALUES ((SELECT user_account_id from security.user_account where username = 'qa_test'), '$2a$11$uTzaeewDp2NehwjmfRe/euxP.cy.4ecl5nYA.E5TV9AGjjDKdJwI2', NULL, '2020-01-20 05:41:25.746') ON CONFLICT DO NOTHING; +INSERT INTO security.link_user_account_user_group(link_user_account_user_group_id, user_account_id, user_group_id) VALUES (uuid_in(md5(random()::text || now()::text)::cstring), (SELECT user_account_id from security.user_account where username = 'qa_test'), (SELECT user_group_id FROM security.user_group where name = 'Security Admin')) ON CONFLICT DO NOTHING; +INSERT INTO security.link_user_account_user_group(link_user_account_user_group_id, user_account_id, user_group_id) VALUES (uuid_in(md5(random()::text || now()::text)::cstring), (SELECT user_account_id from security.user_account where username = 'qa_test'), (SELECT user_group_id FROM security.user_group where name = 'BPMN Superuser')) ON CONFLICT DO NOTHING; +INSERT INTO security.link_user_account_user_group(link_user_account_user_group_id, user_account_id, user_group_id) VALUES (uuid_in(md5(random()::text || now()::text)::cstring), (SELECT user_account_id from security.user_account where username = 'qa_test'), (SELECT user_group_id FROM security.user_group where name = 'BPMN Admin')) ON CONFLICT DO NOTHING; +INSERT INTO security.link_user_account_user_group(link_user_account_user_group_id, user_account_id, user_group_id) VALUES (uuid_in(md5(random()::text || now()::text)::cstring), (SELECT user_account_id from security.user_account where username = 'qa_test'), (SELECT user_group_id FROM security.user_group where name = 'Example')) ON CONFLICT DO NOTHING; +INSERT INTO security.link_user_account_user_group(link_user_account_user_group_id, user_account_id, user_group_id) VALUES (uuid_in(md5(random()::text || now()::text)::cstring), (SELECT user_account_id from security.user_account where username = 'qa_test'), (SELECT user_group_id FROM security.user_group where name = 'BPMN User')) ON CONFLICT DO NOTHING; +INSERT INTO security.link_user_account_user_group(link_user_account_user_group_id, user_account_id, user_group_id) VALUES (uuid_in(md5(random()::text || now()::text)::cstring), (SELECT user_account_id from security.user_account where username = 'qa_test'), (SELECT user_group_id FROM security.user_group where name = 'Demo')) ON CONFLICT DO NOTHING; + +INSERT INTO security.user_account(user_account_id, email, first_name, last_name, middle_name, created, updated, locked, org_unit_id, username) VALUES (uuid_in(md5(random()::text || now()::text)::cstring), 'qa_admin@micord.ru', 'qa_admin', 'qa_admin', NULL, '2020-01-20 08:41:25.526+03', '2020-01-20 09:57:07.25+03', false, (SELECT id from security.org_unit where code = 'DEFAULT'), 'qa_admin') ON CONFLICT DO NOTHING; +INSERT INTO security.simple_credentials( user_account_id, password, password_expires, password_updated) VALUES ((SELECT user_account_id from security.user_account where username = 'qa_admin'), '$2a$11$Zzmuga/xw1c1UnUe9nP9c.aqJ2O.OAI/AbmphOm2jurxMI0S6VAcy', NULL, '2020-01-20 05:41:25.746') ON CONFLICT DO NOTHING; +INSERT INTO security.link_user_account_user_group(link_user_account_user_group_id, user_account_id, user_group_id) VALUES (uuid_in(md5(random()::text || now()::text)::cstring), (SELECT user_account_id from security.user_account where username = 'qa_admin'), (SELECT user_group_id FROM security.user_group where name = 'Security Admin')) ON CONFLICT DO NOTHING; +INSERT INTO security.link_user_account_user_group(link_user_account_user_group_id, user_account_id, user_group_id) VALUES (uuid_in(md5(random()::text || now()::text)::cstring), (SELECT user_account_id from security.user_account where username = 'qa_admin'), (SELECT user_group_id FROM security.user_group where name = 'BPMN Superuser')) ON CONFLICT DO NOTHING; +INSERT INTO security.link_user_account_user_group(link_user_account_user_group_id, user_account_id, user_group_id) VALUES (uuid_in(md5(random()::text || now()::text)::cstring), (SELECT user_account_id from security.user_account where username = 'qa_admin'), (SELECT user_group_id FROM security.user_group where name = 'BPMN Admin')) ON CONFLICT DO NOTHING; +INSERT INTO security.link_user_account_user_group(link_user_account_user_group_id, user_account_id, user_group_id) VALUES (uuid_in(md5(random()::text || now()::text)::cstring), (SELECT user_account_id from security.user_account where username = 'qa_admin'), (SELECT user_group_id FROM security.user_group where name = 'Example')) ON CONFLICT DO NOTHING; +INSERT INTO security.link_user_account_user_group(link_user_account_user_group_id, user_account_id, user_group_id) VALUES (uuid_in(md5(random()::text || now()::text)::cstring), (SELECT user_account_id from security.user_account where username = 'qa_admin'), (SELECT user_group_id FROM security.user_group where name = 'BPMN User')) ON CONFLICT DO NOTHING; +INSERT INTO security.link_user_account_user_group(link_user_account_user_group_id, user_account_id, user_group_id) VALUES (uuid_in(md5(random()::text || now()::text)::cstring), (SELECT user_account_id from security.user_account where username = 'qa_admin'), (SELECT user_group_id FROM security.user_group where name = 'Demo')) ON CONFLICT DO NOTHING; diff --git a/config/standalone/dev/standalone.xml b/config/standalone/dev/standalone.xml new file mode 100644 index 0000000..c7fac64 --- /dev/null +++ b/config/standalone/dev/standalone.xml @@ -0,0 +1,561 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + jdbc:h2:mem:jbpm;DB_CLOSE_DELAY=-1 + h2 + + ${env.DB_JBPM_USERNAME:sa} + ${env.DB_JBPM_PASSWORD:sa} + + + 300 + + + + 10.10.31.119 + 5432 + ervu-dashboard + postgresql-driver + + ervu-dashboard-sec + ervu-dashboard-sec + + + + false + true + 5000 + + + + + + org.h2.jdbcx.JdbcDataSource + + + org.postgresql.xa.PGXADataSource + + + + + + + + + + + + + + + + + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${jboss.bind.address:127.0.0.1} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/config/testing.env b/config/testing.env new file mode 100644 index 0000000..1e36952 --- /dev/null +++ b/config/testing.env @@ -0,0 +1,37 @@ +# Security datasource +DB_SEC_USERNAME=ervu-dashboard-sec +DB_SEC_PASSWORD=ervu-dashboard-sec +DB_SEC_HOST=10.10.31.119 +DB_SEC_PORT=5432 +DB_SEC_NAME=ervu-dashboard +# App datasource +DB_APP_USERNAME=ervu-dashboard +DB_APP_PASSWORD=ervu-dashboard +DB_APP_HOST=10.10.31.119 +DB_APP_PORT=5432 +DB_APP_NAME=ervu-dashboard +# jBPM datasorce +DB_JBPM_USERNAME=jbpm-ervu-dashboard +DB_JBPM_PASSWORD=jbpm-ervu-dashboard +DB_JBPM_HOST=10.10.31.119 +DB_JBPM_PORT=5432 +DB_JBPM_NAME=jbpm-ervu-dashboard +# Elasticsearch +WEBBPM_ELASTIC_HOST= +WEBBPM_ELASTIC_USER_PASSWORD= +# LDAP +WEBBPM_LDAP_URL= +WEBBPM_LDAP_BASE= +WEBBPM_LDAP_USER= +WEBBPM_LDAP_PASSWORD= +WEBBPM_LDAP_SYNC_ENABLED=false +WEBBPM_LDAP_SYNC_CRON=0 0 * * * * +WEBBPM_LDAP_LOGIN_ATTR=uid +WEBBPM_LDAP_ORGANIZATION_ATTR=ou +# JIRA +WEBBPM_JIRA_URL=https:/jira.com +WEBBPM_JIRA_USER=jiraUser +WEBBPM_JIRA_PASSWORD=jiraPass +TZ=Europe/Moscow +WEBBPM_TELEGRAM_BOT_TOKEN= +WEBBPM_TELEGRAM_BOT_NAME= \ No newline at end of file diff --git a/config/tomcat/tomee/bin/setenv.sh b/config/tomcat/tomee/bin/setenv.sh new file mode 100644 index 0000000..67d6c63 --- /dev/null +++ b/config/tomcat/tomee/bin/setenv.sh @@ -0,0 +1,17 @@ +#!/usr/bin/env bash + +#export JAVA_OPTS="$JAVA_OPTS \ +# -Ddb.app.host=${DB_APP_HOST:-10.10.31.119} \ +# -Ddb.app.port=${DB_APP_PORT:-5432} \ +# -Ddb.app.name=${DB_APP_NAME:-ervu-dashboard} \ +# -Ddb.app.username=${DB_APP_USERNAME:-ervu-dashboard} \ +# -Ddb.app.password=${DB_APP_PASSWORD:-ervu-dashboard} \ +#" + +export JAVA_OPTS="$JAVA_OPTS \ + -Ddb.app.host=${DB_APP_HOST:-db} \ + -Ddb.app.port=${DB_APP_PORT:-5432} \ + -Ddb.app.name=${DB_APP_NAME:-app} \ + -Ddb.app.username=${DB_APP_USERNAME:-app_user} \ + -Ddb.app.password=${DB_APP_PASSWORD:-apppassword} \ +" diff --git a/config/tomcat/tomee/conf/context.xml b/config/tomcat/tomee/conf/context.xml new file mode 100644 index 0000000..92d999c --- /dev/null +++ b/config/tomcat/tomee/conf/context.xml @@ -0,0 +1,36 @@ + + + + + + + + WEB-INF/web.xml + WEB-INF/tomcat-web.xml + ${catalina.base}/conf/web.xml + + + + + + diff --git a/config/tomcat/tomee/conf/tomcat-users.xml b/config/tomcat/tomee/conf/tomcat-users.xml new file mode 100644 index 0000000..4a9631c --- /dev/null +++ b/config/tomcat/tomee/conf/tomcat-users.xml @@ -0,0 +1,39 @@ + + + + + + diff --git a/config/tomcat/tomee/conf/webbpm.properties b/config/tomcat/tomee/conf/webbpm.properties new file mode 100644 index 0000000..0fe1d60 --- /dev/null +++ b/config/tomcat/tomee/conf/webbpm.properties @@ -0,0 +1,15 @@ +# WebBPM properties + +authentication.method=form + +bpmn.enable=false +fias.enable=false +gar.enable=false + +reset_password.mail.template.path=mail/reset_password.html +security.password.regex=^(?=.*[a-zA-Z])(?=.*[0-9])[a-zA-Z0-9]+$ + +webbpm.mode=production +webbpm.jbpm.hibernate_statistics.enabled=false +webbpm.cache.hazelcast.hosts=127.0.0.1 +webbpm.cache.hazelcast.outbound_port_definitions=5801-5820 diff --git a/config/tomcat/tomee/webapps/manager/META-INF/context.xml b/config/tomcat/tomee/webapps/manager/META-INF/context.xml new file mode 100644 index 0000000..82a93f3 --- /dev/null +++ b/config/tomcat/tomee/webapps/manager/META-INF/context.xml @@ -0,0 +1,26 @@ + + + + + + + diff --git a/distribution/pom.xml b/distribution/pom.xml new file mode 100644 index 0000000..997e23c --- /dev/null +++ b/distribution/pom.xml @@ -0,0 +1,66 @@ + + + 4.0.0 + + ru.micord.ervu + dashboard + 1.0.0-SNAPSHOT + + + ru.micord.ervu.dashboard + distribution + ear + + + /dashboard + + + + + ru.micord.ervu.dashboard + backend + war + + + ru.micord.ervu.dashboard + frontend + war + + + + + + + org.apache.maven.plugins + maven-ear-plugin + 3.2.0 + + + + ru.micord.ervu.dashboard + frontend + / + frontend.war + + + ru.micord.ervu.dashboard + backend + ${backendContext} + dashboard.war + + + + + + ${project.parent.artifactId} + + + + + enable-version-in-url + + /dashboard-${project.version} + + + + diff --git a/frontend/.npmrc b/frontend/.npmrc new file mode 100644 index 0000000..8ed054b --- /dev/null +++ b/frontend/.npmrc @@ -0,0 +1 @@ +registry=https://repo.micord.ru/repository/npm-all/ diff --git a/frontend/angular.json b/frontend/angular.json new file mode 100644 index 0000000..965697d --- /dev/null +++ b/frontend/angular.json @@ -0,0 +1,71 @@ +{ + "$schema": "./node_modules/@angular/cli/lib/config/schema.json", + "version": 1, + "newProjectRoot": "projects", + "projects": { + "webbpm-frontend": { + "root": "", + "sourceRoot": "src", + "projectType": "application", + "architect": { + "build": { + "builder": "@angular-devkit/build-angular:browser", + "options": { + "outputPath": "dist", + "index": "src/index.html", + "main": "src/ts/main.ts", + "tsConfig": "src/tsconfig.json", + "polyfills": "src/ts/polyfills.ts", + "assets": [ + "src/resources" + ], + "styles": [ + ], + "scripts": [ + "node_modules/jquery/dist/jquery.min.js", + "node_modules/moment/min/moment-with-locales.js", + "node_modules/moment-timezone/builds/moment-timezone-with-data.min.js", + "node_modules/eonasdan-bootstrap-datetimepicker/build/js/bootstrap-datetimepicker.min.js", + "node_modules/selectize/dist/js/standalone/selectize.min.js", + "node_modules/downloadjs/download.min.js" + ] + }, + "configurations": { + "production": { + "optimization": true, + "outputHashing": "all", + "sourceMap": false, + "extractCss": true, + "namedChunks": false, + "aot": true, + "extractLicenses": true, + "vendorChunk": false, + "buildOptimizer": true + } + } + }, + "serve": { + "builder": "@angular-devkit/build-angular:dev-server", + "options": { + "browserTarget": "webbpm-frontend:build" + }, + "configurations": {} + }, + "extract-i18n": { + "builder": "@angular-devkit/build-angular:extract-i18n", + "options": { + "browserTarget": "webbpm-frontend:build" + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [], + "exclude": [] + } + } + } + } + }, + "defaultProject": "webbpm-frontend" +} diff --git a/frontend/bs-config.json b/frontend/bs-config.json new file mode 100644 index 0000000..448da14 --- /dev/null +++ b/frontend/bs-config.json @@ -0,0 +1,10 @@ +{ + "port": 8000, + "open": false, + "files": [ + "./**/*.{html,htm,css,js}" + ], + "server": { + "baseDir": "./" + } +} \ No newline at end of file diff --git a/frontend/index.html b/frontend/index.html new file mode 100644 index 0000000..d81cc68 --- /dev/null +++ b/frontend/index.html @@ -0,0 +1,24 @@ + + + + ervu_dashboard + + + + + + + + + + + + + +
+ + diff --git a/frontend/index.webpack.html b/frontend/index.webpack.html new file mode 100644 index 0000000..d295110 --- /dev/null +++ b/frontend/index.webpack.html @@ -0,0 +1,12 @@ + + + + ervu_dashboard + + + + + +
+ + diff --git a/frontend/package-lock.json b/frontend/package-lock.json new file mode 100644 index 0000000..a50097f --- /dev/null +++ b/frontend/package-lock.json @@ -0,0 +1,10689 @@ +{ + "name": "webbpm-frontend", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@angular-devkit/architect": { + "version": "0.13.9", + "resolved": "https://repo.micord.ru/repository/npm-all/@angular-devkit/architect/-/architect-0.13.9.tgz", + "integrity": "sha512-EAFtCs9dsGhpMRC45PoYsrkiExpWz9Ax15qXfzwdDRacz5DmdOVt+QpkLW1beUOwiyj/bhFyj23eaONK2RTn/w==", + "dev": true, + "requires": { + "@angular-devkit/core": "7.3.9", + "rxjs": "6.3.3" + }, + "dependencies": { + "rxjs": { + "version": "6.3.3", + "resolved": "https://repo.micord.ru/repository/npm-all/rxjs/-/rxjs-6.3.3.tgz", + "integrity": "sha512-JTWmoY9tWCs7zvIk/CvRjhjGaOd+OVBM987mxFo+OW66cGpdKjZcpmc74ES1sB//7Kl/PAe8+wEakuhG4pcgOw==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + } + } + }, + "@angular-devkit/build-optimizer": { + "version": "0.13.9", + "resolved": "https://repo.micord.ru/repository/npm-all/@angular-devkit/build-optimizer/-/build-optimizer-0.13.9.tgz", + "integrity": "sha512-GQtCntthQHSBv5l1ZY5p00JOECb/WcE1qUBo5kFjp84z0fszDkhOy52M1kcWCX4PFzJaY4DKk58hbUE/2UN0jw==", + "dev": true, + "requires": { + "loader-utils": "1.2.3", + "source-map": "0.5.6", + "typescript": "3.2.4", + "webpack-sources": "1.3.0" + } + }, + "@angular-devkit/core": { + "version": "7.3.9", + "resolved": "https://repo.micord.ru/repository/npm-all/@angular-devkit/core/-/core-7.3.9.tgz", + "integrity": "sha512-SaxD+nKFW3iCBKsxNR7+66J30EexW/y7tm8m5AvUH+GwSAgIj0ZYmRUzFEPggcaLVA4WnE/YWqIXZMJW5dT7gw==", + "dev": true, + "requires": { + "ajv": "6.9.1", + "chokidar": "2.0.4", + "fast-json-stable-stringify": "2.0.0", + "rxjs": "6.3.3", + "source-map": "0.7.3" + }, + "dependencies": { + "rxjs": { + "version": "6.3.3", + "resolved": "https://repo.micord.ru/repository/npm-all/rxjs/-/rxjs-6.3.3.tgz", + "integrity": "sha512-JTWmoY9tWCs7zvIk/CvRjhjGaOd+OVBM987mxFo+OW66cGpdKjZcpmc74ES1sB//7Kl/PAe8+wEakuhG4pcgOw==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://repo.micord.ru/repository/npm-all/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + } + } + }, + "@angular-devkit/schematics": { + "version": "7.3.9", + "resolved": "https://repo.micord.ru/repository/npm-all/@angular-devkit/schematics/-/schematics-7.3.9.tgz", + "integrity": "sha512-xzROGCYp7aQbeJ3V6YC0MND7wKEAdWqmm/GaCufEk0dDS8ZGe0sQhcM2oBRa2nQqGQNeThFIH51kx+FayrJP0w==", + "dev": true, + "requires": { + "@angular-devkit/core": "7.3.9", + "rxjs": "6.3.3" + }, + "dependencies": { + "rxjs": { + "version": "6.3.3", + "resolved": "https://repo.micord.ru/repository/npm-all/rxjs/-/rxjs-6.3.3.tgz", + "integrity": "sha512-JTWmoY9tWCs7zvIk/CvRjhjGaOd+OVBM987mxFo+OW66cGpdKjZcpmc74ES1sB//7Kl/PAe8+wEakuhG4pcgOw==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + } + } + }, + "@angular/animations": { + "version": "7.2.15", + "resolved": "https://repo.micord.ru/repository/npm-all/@angular/animations/-/animations-7.2.15.tgz", + "integrity": "sha512-8oBt3HLgd2+kyJHUgsd7OzKCCss67t2sch15XNoIWlOLfxclqU+EfFE6t/vCzpT8/+lpZS6LU9ZrTnb+UBj5jg==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/cli": { + "version": "7.3.9", + "resolved": "https://repo.micord.ru/repository/npm-all/@angular/cli/-/cli-7.3.9.tgz", + "integrity": "sha512-7oJj7CKDlFUbQav1x1CV4xKKcbt0pnxY4unKcm7Q1tVXhu8bU2bc3cDA0aJnbofcYb6TJcd/C2qHgCt78q7edA==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.13.9", + "@angular-devkit/core": "7.3.9", + "@angular-devkit/schematics": "7.3.9", + "@schematics/angular": "7.3.9", + "@schematics/update": "0.13.9", + "@yarnpkg/lockfile": "1.1.0", + "ini": "1.3.5", + "inquirer": "6.2.1", + "npm-package-arg": "6.1.0", + "open": "6.0.0", + "pacote": "9.4.0", + "semver": "5.6.0", + "symbol-observable": "1.2.0" + } + }, + "@angular/common": { + "version": "7.2.15", + "resolved": "https://repo.micord.ru/repository/npm-all/@angular/common/-/common-7.2.15.tgz", + "integrity": "sha512-2b5JY2HWVHCf3D1GZjmde7jdAXSTXkYtmjLtA9tQkjOOTr80eHpNSujQqnzb97dk9VT9OjfjqTQd7K3pxZz8jw==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/compiler": { + "version": "7.2.15", + "resolved": "https://repo.micord.ru/repository/npm-all/@angular/compiler/-/compiler-7.2.15.tgz", + "integrity": "sha512-5yb4NcLk8GuXkYf7Dcor4XkGueYp4dgihzDmMjYDUrV0NPhubKlr+SwGtLOtzgRBWJ1I2bO0S3zwa0q0OgIPOw==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/compiler-cli": { + "version": "7.2.15", + "resolved": "https://repo.micord.ru/repository/npm-all/@angular/compiler-cli/-/compiler-cli-7.2.15.tgz", + "integrity": "sha512-+AsfyKawmj/sa+m4Pz8VSRFbCfx/3IOjAuuEjhopbyr154YpPDSu8NTbcwzq3yfbVcPwK4/4exmbQzpsndaCTg==", + "dev": true, + "requires": { + "canonical-path": "1.0.0", + "chokidar": "^2.1.1", + "convert-source-map": "^1.5.1", + "dependency-graph": "^0.7.2", + "magic-string": "^0.25.0", + "minimist": "^1.2.0", + "reflect-metadata": "^0.1.2", + "shelljs": "^0.8.1", + "source-map": "^0.6.1", + "tslib": "^1.9.0", + "yargs": "9.0.1" + }, + "dependencies": { + "chokidar": { + "version": "2.1.8", + "resolved": "https://repo.micord.ru/repository/npm-all/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "minimist": { + "version": "1.2.8", + "resolved": "https://repo.micord.ru/repository/npm-all/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://repo.micord.ru/repository/npm-all/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "@angular/core": { + "version": "7.2.15", + "resolved": "https://repo.micord.ru/repository/npm-all/@angular/core/-/core-7.2.15.tgz", + "integrity": "sha512-XsuYm0jEU/mOqwDOk2utThv8J9kESkAerfuCHClE9rB2TtHUOGCfekF7lJWqjjypu6/J9ygoPFo7hdAE058ZGg==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/forms": { + "version": "7.2.15", + "resolved": "https://repo.micord.ru/repository/npm-all/@angular/forms/-/forms-7.2.15.tgz", + "integrity": "sha512-p0kcIQLtBBC1qeTA6M3nOuXf/k91E80FKquVM9zEsO2kDjI0oZJVfFYL2UMov5samlJOPN+t6lRHEIUa7ApPsw==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/http": { + "version": "7.2.15", + "resolved": "https://repo.micord.ru/repository/npm-all/@angular/http/-/http-7.2.15.tgz", + "integrity": "sha512-TR7PEdmLWNIre3Zn8lvyb4lSrvPUJhKLystLnp4hBMcWsJqq5iK8S3bnlR4viZ9HMlf7bW7+Hm4SI6aB3tdUtw==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/platform-browser": { + "version": "7.2.15", + "resolved": "https://repo.micord.ru/repository/npm-all/@angular/platform-browser/-/platform-browser-7.2.15.tgz", + "integrity": "sha512-aYgmPsbC9Tvp9vmKWD8voeAp4crwCay7/D6lM3ClEe2EeK934LuEXq3/uczMrFVbnIX7BBIo8fh03Tl7wbiGPw==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/platform-browser-dynamic": { + "version": "7.2.15", + "resolved": "https://repo.micord.ru/repository/npm-all/@angular/platform-browser-dynamic/-/platform-browser-dynamic-7.2.15.tgz", + "integrity": "sha512-UL2PqhzXMD769NQ6Lh6pxlBDKvN9Qol3XLRFil80lwJ1GRW16ITeYbCamcafIH2GOyd88IhmYcbMfUQ/6q4MMQ==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/platform-server": { + "version": "7.2.15", + "resolved": "https://repo.micord.ru/repository/npm-all/@angular/platform-server/-/platform-server-7.2.15.tgz", + "integrity": "sha512-a7XhYlbmQ7pN6liFq8WqdX4GNoxCIXhlZqotZkfwJDsDy2E2yyvVx6BYCEOnSRvO9xXwfyBXiLfZ4Y2A7xeCoQ==", + "dev": true, + "requires": { + "domino": "^2.1.0", + "tslib": "^1.9.0", + "xhr2": "^0.1.4" + } + }, + "@angular/router": { + "version": "7.2.15", + "resolved": "https://repo.micord.ru/repository/npm-all/@angular/router/-/router-7.2.15.tgz", + "integrity": "sha512-qAubRJRQanguUqJQ76J9GSZ4JFtoyhJKRmX5P23ANZJXpB6YLzF2fJmOGi+E6cV8F0tKBMEq1pjxFTisx0MXwQ==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@babel/code-frame": { + "version": "7.24.7", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "dev": true, + "requires": { + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" + } + }, + "@babel/compat-data": { + "version": "7.24.7", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/compat-data/-/compat-data-7.24.7.tgz", + "integrity": "sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==", + "dev": true + }, + "@babel/core": { + "version": "7.9.6", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/core/-/core-7.9.6.tgz", + "integrity": "sha512-nD3deLvbsApbHAHttzIssYqgb883yU/d9roe4RZymBCDaZryMJDbptVpEpeQuRh4BJ+SYI8le9YGxKvFEvl1Wg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.9.6", + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helpers": "^7.9.6", + "@babel/parser": "^7.9.6", + "@babel/template": "^7.8.6", + "@babel/traverse": "^7.9.6", + "@babel/types": "^7.9.6", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.13", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "debug": { + "version": "4.3.5", + "resolved": "https://repo.micord.ru/repository/npm-all/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "json5": { + "version": "2.2.3", + "resolved": "https://repo.micord.ru/repository/npm-all/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://repo.micord.ru/repository/npm-all/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.24.7", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/generator/-/generator-7.24.7.tgz", + "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==", + "dev": true, + "requires": { + "@babel/types": "^7.24.7", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.24.7", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", + "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", + "dev": true, + "requires": { + "@babel/types": "^7.24.7" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.24.7", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz", + "integrity": "sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==", + "dev": true, + "requires": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.24.7", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.7.tgz", + "integrity": "sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.24.7", + "@babel/helper-validator-option": "^7.24.7", + "browserslist": "^4.22.2", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://repo.micord.ru/repository/npm-all/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + } + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.24.7", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.24.7.tgz", + "integrity": "sha512-03TCmXy2FtXJEZfbXDTSqq1fRJArk7lX9DOFC/47VthYcxyIOx+eXQmdo6DOQvrbpIix+KfXwvuXdFDZHxt+rA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://repo.micord.ru/repository/npm-all/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + } + } + }, + "@babel/helper-environment-visitor": { + "version": "7.24.7", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", + "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", + "dev": true, + "requires": { + "@babel/types": "^7.24.7" + } + }, + "@babel/helper-function-name": { + "version": "7.24.7", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz", + "integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==", + "dev": true, + "requires": { + "@babel/template": "^7.24.7", + "@babel/types": "^7.24.7" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.24.7", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz", + "integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==", + "dev": true, + "requires": { + "@babel/types": "^7.24.7" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.24.7", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.7.tgz", + "integrity": "sha512-LGeMaf5JN4hAT471eJdBs/GK1DoYIJ5GCtZN/EsL6KUiiDZOvO/eKE11AMZJa2zP4zk4qe9V2O/hxAmkRc8p6w==", + "dev": true, + "requires": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + } + }, + "@babel/helper-module-imports": { + "version": "7.24.7", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", + "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", + "dev": true, + "requires": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + } + }, + "@babel/helper-module-transforms": { + "version": "7.24.7", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/helper-module-transforms/-/helper-module-transforms-7.24.7.tgz", + "integrity": "sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-simple-access": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.24.7", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz", + "integrity": "sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==", + "dev": true, + "requires": { + "@babel/types": "^7.24.7" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.24.7", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.7.tgz", + "integrity": "sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==", + "dev": true + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.24.7", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.24.7.tgz", + "integrity": "sha512-9pKLcTlZ92hNZMQfGCHImUpDOlAgkkpqalWEeftW5FBya75k8Li2ilerxkM/uBEj01iBZXcCIB/bwvDYgWyibA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-wrap-function": "^7.24.7" + } + }, + "@babel/helper-replace-supers": { + "version": "7.24.7", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/helper-replace-supers/-/helper-replace-supers-7.24.7.tgz", + "integrity": "sha512-qTAxxBM81VEyoAY0TtLrx1oAEJc09ZK67Q9ljQToqCnA+55eNwCORaxlKyu+rNfX86o8OXRUSNUnrtsAZXM9sg==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-member-expression-to-functions": "^7.24.7", + "@babel/helper-optimise-call-expression": "^7.24.7" + } + }, + "@babel/helper-simple-access": { + "version": "7.24.7", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", + "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", + "dev": true, + "requires": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.24.7", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz", + "integrity": "sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==", + "dev": true, + "requires": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.24.7", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", + "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", + "dev": true, + "requires": { + "@babel/types": "^7.24.7" + } + }, + "@babel/helper-string-parser": { + "version": "7.24.7", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz", + "integrity": "sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==", + "dev": true + }, + "@babel/helper-validator-identifier": { + "version": "7.24.7", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.24.7", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/helper-validator-option/-/helper-validator-option-7.24.7.tgz", + "integrity": "sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==", + "dev": true + }, + "@babel/helper-wrap-function": { + "version": "7.24.7", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/helper-wrap-function/-/helper-wrap-function-7.24.7.tgz", + "integrity": "sha512-N9JIYk3TD+1vq/wn77YnJOqMtfWhNewNE+DJV4puD2X7Ew9J4JvrzrFDfTfyv5EgEXVy9/Wt8QiOErzEmv5Ifw==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.24.7", + "@babel/template": "^7.24.7", + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + } + }, + "@babel/helpers": { + "version": "7.24.7", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/helpers/-/helpers-7.24.7.tgz", + "integrity": "sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==", + "dev": true, + "requires": { + "@babel/template": "^7.24.7", + "@babel/types": "^7.24.7" + } + }, + "@babel/highlight": { + "version": "7.24.7", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.24.7", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + } + }, + "@babel/parser": { + "version": "7.24.7", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/parser/-/parser-7.24.7.tgz", + "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==", + "dev": true + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.20.7", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz", + "integrity": "sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-remap-async-to-generator": "^7.18.9", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.18.6", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", + "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.18.6", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", + "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.18.6", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.18.6", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.20.7", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", + "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.20.5", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.20.7" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.18.6", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", + "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.21.0", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz", + "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.18.6", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", + "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.24.7", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz", + "integrity": "sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.24.7", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz", + "integrity": "sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-remap-async-to-generator": "^7.24.7" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.24.7", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz", + "integrity": "sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.24.7", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.7.tgz", + "integrity": "sha512-Nd5CvgMbWc+oWzBsuaMcbwjJWAcp5qzrbg69SZdHSP7AMY0AbWFqFO0WTFCA1jxhMCwodRwvRec8k0QUbZk7RQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.24.7", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.7.tgz", + "integrity": "sha512-CFbbBigp8ln4FU6Bpy6g7sE8B/WmCmzvivzUC6xDAdWVsjYTXijpuuGJmYkAaoWAzcItGKT3IOAbxRItZ5HTjw==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-replace-supers": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.24.7", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz", + "integrity": "sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/template": "^7.24.7" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.24.7", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.7.tgz", + "integrity": "sha512-19eJO/8kdCQ9zISOf+SEUJM/bAUIsvY3YDnXZTupUCQ8LgrWnsG/gFB9dvXqdXnRXMAM8fvt7b0CBKQHNGy1mw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.24.7", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz", + "integrity": "sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.24.7", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz", + "integrity": "sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.24.7", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz", + "integrity": "sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.24.7", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz", + "integrity": "sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.24.7", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.7.tgz", + "integrity": "sha512-U9FcnA821YoILngSmYkW6FjyQe2TyZD5pHt4EVIhmcTkrJw/3KqcrRSxuOo5tFZJi7TE19iDyI1u+weTI7bn2w==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.24.7", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.7.tgz", + "integrity": "sha512-vcwCbb4HDH+hWi8Pqenwnjy+UiklO4Kt1vfspcQYFhJdpthSnW8XvWGyDZWKNVrVbVViI/S7K9PDJZiUmP2fYQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.24.7", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz", + "integrity": "sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.24.7", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz", + "integrity": "sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.24.7", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.7.tgz", + "integrity": "sha512-iFI8GDxtevHJ/Z22J5xQpVqFLlMNstcLXh994xifFwxxGslr2ZXXLWgtBeLctOD63UFDArdvN6Tg8RFw+aEmjQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-simple-access": "^7.24.7" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.24.7", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.7.tgz", + "integrity": "sha512-GYQE0tW7YoaN13qFh3O1NCY4MPkUiAH3fiF7UcV/I3ajmDKEdG3l+UOcbAm4zUE3gnvUU+Eni7XrVKo9eO9auw==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.24.7", + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.24.7", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz", + "integrity": "sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.24.7", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz", + "integrity": "sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.24.7", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz", + "integrity": "sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.24.7", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz", + "integrity": "sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-replace-supers": "^7.24.7" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.24.7", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz", + "integrity": "sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.24.7", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz", + "integrity": "sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.24.7", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz", + "integrity": "sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.7", + "regenerator-transform": "^0.15.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.24.7", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz", + "integrity": "sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.24.7", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz", + "integrity": "sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.24.7", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz", + "integrity": "sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.24.7", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz", + "integrity": "sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.24.7", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz", + "integrity": "sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.24.7", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.7.tgz", + "integrity": "sha512-VtR8hDy7YLB7+Pet9IarXjg/zgCMSF+1mNS/EQEiEaUPoFXCVsHG64SIxcaaI2zJgRiv+YmgaQESUfWAdbjzgg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.24.7", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz", + "integrity": "sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/preset-env": { + "version": "7.9.6", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/preset-env/-/preset-env-7.9.6.tgz", + "integrity": "sha512-0gQJ9RTzO0heXOhzftog+a/WyOuqMrAIugVYxMYf83gh1CQaQDjMtsOpqOwXyDL/5JcWsrCm8l4ju8QC97O7EQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.9.6", + "@babel/helper-compilation-targets": "^7.9.6", + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-proposal-async-generator-functions": "^7.8.3", + "@babel/plugin-proposal-dynamic-import": "^7.8.3", + "@babel/plugin-proposal-json-strings": "^7.8.3", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-proposal-numeric-separator": "^7.8.3", + "@babel/plugin-proposal-object-rest-spread": "^7.9.6", + "@babel/plugin-proposal-optional-catch-binding": "^7.8.3", + "@babel/plugin-proposal-optional-chaining": "^7.9.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.8.3", + "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.8.0", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0", + "@babel/plugin-syntax-top-level-await": "^7.8.3", + "@babel/plugin-transform-arrow-functions": "^7.8.3", + "@babel/plugin-transform-async-to-generator": "^7.8.3", + "@babel/plugin-transform-block-scoped-functions": "^7.8.3", + "@babel/plugin-transform-block-scoping": "^7.8.3", + "@babel/plugin-transform-classes": "^7.9.5", + "@babel/plugin-transform-computed-properties": "^7.8.3", + "@babel/plugin-transform-destructuring": "^7.9.5", + "@babel/plugin-transform-dotall-regex": "^7.8.3", + "@babel/plugin-transform-duplicate-keys": "^7.8.3", + "@babel/plugin-transform-exponentiation-operator": "^7.8.3", + "@babel/plugin-transform-for-of": "^7.9.0", + "@babel/plugin-transform-function-name": "^7.8.3", + "@babel/plugin-transform-literals": "^7.8.3", + "@babel/plugin-transform-member-expression-literals": "^7.8.3", + "@babel/plugin-transform-modules-amd": "^7.9.6", + "@babel/plugin-transform-modules-commonjs": "^7.9.6", + "@babel/plugin-transform-modules-systemjs": "^7.9.6", + "@babel/plugin-transform-modules-umd": "^7.9.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.8.3", + "@babel/plugin-transform-new-target": "^7.8.3", + "@babel/plugin-transform-object-super": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.9.5", + "@babel/plugin-transform-property-literals": "^7.8.3", + "@babel/plugin-transform-regenerator": "^7.8.7", + "@babel/plugin-transform-reserved-words": "^7.8.3", + "@babel/plugin-transform-shorthand-properties": "^7.8.3", + "@babel/plugin-transform-spread": "^7.8.3", + "@babel/plugin-transform-sticky-regex": "^7.8.3", + "@babel/plugin-transform-template-literals": "^7.8.3", + "@babel/plugin-transform-typeof-symbol": "^7.8.4", + "@babel/plugin-transform-unicode-regex": "^7.8.3", + "@babel/preset-modules": "^0.1.3", + "@babel/types": "^7.9.6", + "browserslist": "^4.11.1", + "core-js-compat": "^3.6.2", + "invariant": "^2.2.2", + "levenary": "^1.1.1", + "semver": "^5.5.0" + } + }, + "@babel/preset-modules": { + "version": "0.1.6", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/preset-modules/-/preset-modules-0.1.6.tgz", + "integrity": "sha512-ID2yj6K/4lKfhuU3+EX4UvNbIt7eACFbHmNUjzA+ep+B5971CknnA/9DEWKbRokfbbtblxxxXFJJrH47UEAMVg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "dev": true + }, + "@babel/runtime": { + "version": "7.24.7", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/runtime/-/runtime-7.24.7.tgz", + "integrity": "sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.14.0" + } + }, + "@babel/template": { + "version": "7.24.7", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/template/-/template-7.24.7.tgz", + "integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/types": "^7.24.7" + } + }, + "@babel/traverse": { + "version": "7.24.7", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/traverse/-/traverse-7.24.7.tgz", + "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.7", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-hoist-variables": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/types": "^7.24.7", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "dependencies": { + "debug": { + "version": "4.3.5", + "resolved": "https://repo.micord.ru/repository/npm-all/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://repo.micord.ru/repository/npm-all/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "@babel/types": { + "version": "7.24.7", + "resolved": "https://repo.micord.ru/repository/npm-all/@babel/types/-/types-7.24.7.tgz", + "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", + "dev": true, + "requires": { + "@babel/helper-string-parser": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", + "to-fast-properties": "^2.0.0" + } + }, + "@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://repo.micord.ru/repository/npm-all/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://repo.micord.ru/repository/npm-all/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true + }, + "@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://repo.micord.ru/repository/npm-all/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://repo.micord.ru/repository/npm-all/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://repo.micord.ru/repository/npm-all/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "@mattlewis92/dom-autoscroller": { + "version": "2.4.2", + "resolved": "https://repo.micord.ru/repository/npm-all/@mattlewis92/dom-autoscroller/-/dom-autoscroller-2.4.2.tgz", + "integrity": "sha512-YbrUWREPGEjE/FU6foXcAT1YbVwqD/jkYnY1dFb0o4AxtP3s4xKBthlELjndZih8uwsDWgQZx1eNskRNe2BgZQ==" + }, + "@ng-bootstrap/ng-bootstrap": { + "version": "4.1.1", + "resolved": "https://repo.micord.ru/repository/npm-all/@ng-bootstrap/ng-bootstrap/-/ng-bootstrap-4.1.1.tgz", + "integrity": "sha512-OgbmPVhbDdNpIwogEXsycUJG0caNtb2+wCABfLUClgi9YcfNXhZ9Phu2GQq7Pk/LO66okth6s77RBQnbTJuysg==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@scarf/scarf": { + "version": "1.3.0", + "resolved": "https://repo.micord.ru/repository/npm-all/@scarf/scarf/-/scarf-1.3.0.tgz", + "integrity": "sha512-lHKK8M5CTcpFj2hZDB3wIjb0KAbEOgDmiJGDv1WBRfQgRm/a8/XMEkG/N1iM01xgbUDsPQwi42D+dFo1XPAKew==" + }, + "@schematics/angular": { + "version": "7.3.9", + "resolved": "https://repo.micord.ru/repository/npm-all/@schematics/angular/-/angular-7.3.9.tgz", + "integrity": "sha512-B3lytFtFeYNLfWdlrIzvy3ulFRccD2/zkoL0734J+DAGfUz7vbysJ50RwYL46sQUcKdZdvb48ktfu1S8yooP6Q==", + "dev": true, + "requires": { + "@angular-devkit/core": "7.3.9", + "@angular-devkit/schematics": "7.3.9", + "typescript": "3.2.4" + } + }, + "@schematics/update": { + "version": "0.13.9", + "resolved": "https://repo.micord.ru/repository/npm-all/@schematics/update/-/update-0.13.9.tgz", + "integrity": "sha512-4MQcaKFxhMzZyE//+DknDh3h3duy3avg2oxSHxdwXlCZ8Q92+4lpegjJcSRiqlEwO4qeJ5XnrjrvzfIiaIZOmA==", + "dev": true, + "requires": { + "@angular-devkit/core": "7.3.9", + "@angular-devkit/schematics": "7.3.9", + "@yarnpkg/lockfile": "1.1.0", + "ini": "1.3.5", + "pacote": "9.4.0", + "rxjs": "6.3.3", + "semver": "5.6.0", + "semver-intersect": "1.4.0" + }, + "dependencies": { + "rxjs": { + "version": "6.3.3", + "resolved": "https://repo.micord.ru/repository/npm-all/rxjs/-/rxjs-6.3.3.tgz", + "integrity": "sha512-JTWmoY9tWCs7zvIk/CvRjhjGaOd+OVBM987mxFo+OW66cGpdKjZcpmc74ES1sB//7Kl/PAe8+wEakuhG4pcgOw==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + } + } + }, + "@socket.io/component-emitter": { + "version": "3.1.2", + "resolved": "https://repo.micord.ru/repository/npm-all/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz", + "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==", + "dev": true + }, + "@types/bootstrap": { + "version": "3.3.39", + "resolved": "https://repo.micord.ru/repository/npm-all/@types/bootstrap/-/bootstrap-3.3.39.tgz", + "integrity": "sha512-UGvzSQFkv0Oh2vjj30AfZructi7XvY0aRa1Y/vrgFq+tfrTMxtqQ9+s5liCYLJnrISc9LinEtOY5N8Ibrhj2Tg==", + "dev": true, + "requires": { + "@types/jquery": "*" + } + }, + "@types/cookie": { + "version": "0.4.1", + "resolved": "https://repo.micord.ru/repository/npm-all/@types/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", + "dev": true + }, + "@types/cors": { + "version": "2.8.17", + "resolved": "https://repo.micord.ru/repository/npm-all/@types/cors/-/cors-2.8.17.tgz", + "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/html-minifier-terser": { + "version": "5.1.2", + "resolved": "https://repo.micord.ru/repository/npm-all/@types/html-minifier-terser/-/html-minifier-terser-5.1.2.tgz", + "integrity": "sha512-h4lTMgMJctJybDp8CQrxTUiiYmedihHWkjnF/8Pxseu2S6Nlfcy8kwboQ8yejh456rP2yWoEVm1sS/FVsfM48w==", + "dev": true + }, + "@types/jquery": { + "version": "2.0.49", + "resolved": "https://repo.micord.ru/repository/npm-all/@types/jquery/-/jquery-2.0.49.tgz", + "integrity": "sha512-/9xLnYmohN/vD2gDnLS4cym8TUmrJu7DvZa/LELKzZjdPsvWVJiedsdu2SXNtb/DA7FGimqL2g0IoyhbNKLl8g==", + "dev": true + }, + "@types/json-schema": { + "version": "7.0.15", + "resolved": "https://repo.micord.ru/repository/npm-all/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, + "@types/node": { + "version": "7.0.5", + "resolved": "https://repo.micord.ru/repository/npm-all/@types/node/-/node-7.0.5.tgz", + "integrity": "sha512-+tQTT+Dg4kkIeLNN3dlHf6x8VxYO2krCMCl0jDeAf/sjUtn3L17/bmigXXLd633gIS0nTKUm6M1t7a2H0/xnrQ==", + "dev": true + }, + "@types/selectize": { + "version": "0.12.33", + "resolved": "https://repo.micord.ru/repository/npm-all/@types/selectize/-/selectize-0.12.33.tgz", + "integrity": "sha512-SANEtwCJIPLX9cz5eI6/bOjALsZEIdL1YoTX7t+Syqxt6l8iOKwmTMUvjiOLtnatcJjK+lyIBRPSwgYDOYuQ2Q==", + "dev": true + }, + "@types/source-list-map": { + "version": "0.1.6", + "resolved": "https://repo.micord.ru/repository/npm-all/@types/source-list-map/-/source-list-map-0.1.6.tgz", + "integrity": "sha512-5JcVt1u5HDmlXkwOD2nslZVllBBc7HDuOICfiZah2Z0is8M8g+ddAEawbmd3VjedfDHBzxCaXLs07QEmb7y54g==", + "dev": true + }, + "@types/tapable": { + "version": "1.0.12", + "resolved": "https://repo.micord.ru/repository/npm-all/@types/tapable/-/tapable-1.0.12.tgz", + "integrity": "sha512-bTHG8fcxEqv1M9+TD14P8ok8hjxoOCkfKc8XXLaaD05kI7ohpeI956jtDOD3XHKBQrlyPughUtzm1jtVhHpA5Q==", + "dev": true + }, + "@types/uglify-js": { + "version": "3.17.5", + "resolved": "https://repo.micord.ru/repository/npm-all/@types/uglify-js/-/uglify-js-3.17.5.tgz", + "integrity": "sha512-TU+fZFBTBcXj/GpDpDaBmgWk/gn96kMZ+uocaFUlV2f8a6WdMzzI44QBCmGcCiYR0Y6ZlNRiyUyKKt5nl/lbzQ==", + "dev": true, + "requires": { + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://repo.micord.ru/repository/npm-all/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "@types/webpack": { + "version": "4.41.38", + "resolved": "https://repo.micord.ru/repository/npm-all/@types/webpack/-/webpack-4.41.38.tgz", + "integrity": "sha512-oOW7E931XJU1mVfCnxCVgv8GLFL768pDO5u2Gzk82i8yTIgX6i7cntyZOkZYb/JtYM8252SN9bQp9tgkVDSsRw==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/tapable": "^1", + "@types/uglify-js": "*", + "@types/webpack-sources": "*", + "anymatch": "^3.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "anymatch": { + "version": "3.1.3", + "resolved": "https://repo.micord.ru/repository/npm-all/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://repo.micord.ru/repository/npm-all/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "@types/webpack-sources": { + "version": "3.2.3", + "resolved": "https://repo.micord.ru/repository/npm-all/@types/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-4nZOdMwSPHZ4pTEZzSp0AsTM4K7Qmu40UKW4tJDiOVs20UzYF9l+qUe4s0ftfN0pin06n+5cWWDJXH+sbhAiDw==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/source-list-map": "*", + "source-map": "^0.7.3" + }, + "dependencies": { + "source-map": { + "version": "0.7.4", + "resolved": "https://repo.micord.ru/repository/npm-all/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true + } + } + }, + "@webassemblyjs/ast": { + "version": "1.8.5", + "resolved": "https://repo.micord.ru/repository/npm-all/@webassemblyjs/ast/-/ast-1.8.5.tgz", + "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==", + "dev": true, + "requires": { + "@webassemblyjs/helper-module-context": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.8.5", + "resolved": "https://repo.micord.ru/repository/npm-all/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz", + "integrity": "sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.8.5", + "resolved": "https://repo.micord.ru/repository/npm-all/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz", + "integrity": "sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.8.5", + "resolved": "https://repo.micord.ru/repository/npm-all/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz", + "integrity": "sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==", + "dev": true + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.8.5", + "resolved": "https://repo.micord.ru/repository/npm-all/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz", + "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==", + "dev": true, + "requires": { + "@webassemblyjs/wast-printer": "1.8.5" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.8.5", + "resolved": "https://repo.micord.ru/repository/npm-all/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz", + "integrity": "sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==", + "dev": true + }, + "@webassemblyjs/helper-module-context": { + "version": "1.8.5", + "resolved": "https://repo.micord.ru/repository/npm-all/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz", + "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "mamacro": "^0.0.3" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.8.5", + "resolved": "https://repo.micord.ru/repository/npm-all/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz", + "integrity": "sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.8.5", + "resolved": "https://repo.micord.ru/repository/npm-all/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz", + "integrity": "sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.8.5", + "resolved": "https://repo.micord.ru/repository/npm-all/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz", + "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.8.5", + "resolved": "https://repo.micord.ru/repository/npm-all/@webassemblyjs/leb128/-/leb128-1.8.5.tgz", + "integrity": "sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.8.5", + "resolved": "https://repo.micord.ru/repository/npm-all/@webassemblyjs/utf8/-/utf8-1.8.5.tgz", + "integrity": "sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.8.5", + "resolved": "https://repo.micord.ru/repository/npm-all/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz", + "integrity": "sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/helper-wasm-section": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5", + "@webassemblyjs/wasm-opt": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5", + "@webassemblyjs/wast-printer": "1.8.5" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.8.5", + "resolved": "https://repo.micord.ru/repository/npm-all/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz", + "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/ieee754": "1.8.5", + "@webassemblyjs/leb128": "1.8.5", + "@webassemblyjs/utf8": "1.8.5" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.8.5", + "resolved": "https://repo.micord.ru/repository/npm-all/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz", + "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.8.5", + "resolved": "https://repo.micord.ru/repository/npm-all/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz", + "integrity": "sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-api-error": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/ieee754": "1.8.5", + "@webassemblyjs/leb128": "1.8.5", + "@webassemblyjs/utf8": "1.8.5" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.8.5", + "resolved": "https://repo.micord.ru/repository/npm-all/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz", + "integrity": "sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/floating-point-hex-parser": "1.8.5", + "@webassemblyjs/helper-api-error": "1.8.5", + "@webassemblyjs/helper-code-frame": "1.8.5", + "@webassemblyjs/helper-fsm": "1.8.5", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.8.5", + "resolved": "https://repo.micord.ru/repository/npm-all/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz", + "integrity": "sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5", + "@xtuc/long": "4.2.2" + } + }, + "@webbpm/base-package": { + "version": "3.177.2", + "resolved": "https://repo.micord.ru/repository/npm-all/@webbpm/base-package/-/base-package-3.177.2.tgz", + "integrity": "sha512-QESKy3/27XGO94xw1o+d++audZ8phbZU0m0fTX9w/FiaiEtsWOCzoIjHhHTf+CbuXwFxurEedzx9C+lN275SAg==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://repo.micord.ru/repository/npm-all/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://repo.micord.ru/repository/npm-all/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://repo.micord.ru/repository/npm-all/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", + "dev": true + }, + "JSONStream": { + "version": "1.3.5", + "resolved": "https://repo.micord.ru/repository/npm-all/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dev": true, + "requires": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + } + }, + "accepts": { + "version": "1.3.8", + "resolved": "https://repo.micord.ru/repository/npm-all/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + } + }, + "acorn": { + "version": "6.4.2", + "resolved": "https://repo.micord.ru/repository/npm-all/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true + }, + "acorn-dynamic-import": { + "version": "4.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz", + "integrity": "sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==", + "dev": true + }, + "acorn-walk": { + "version": "6.2.0", + "resolved": "https://repo.micord.ru/repository/npm-all/acorn-walk/-/acorn-walk-6.2.0.tgz", + "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", + "dev": true + }, + "ag-grid-angular": { + "version": "29.0.0-micord.4", + "resolved": "https://repo.micord.ru/repository/npm-all/ag-grid-angular/-/ag-grid-angular-29.0.0-micord.4.tgz", + "integrity": "sha512-hQ8kotqX/2UA4RS6J0/aygO0bMIDaH9qVpLeDOxagSKBTSJmDFhuejJkWgxfJzEgxC6h7oTOtx+rgvPc9xxjsA==", + "requires": { + "tslib": "^2.3.0" + }, + "dependencies": { + "tslib": { + "version": "2.6.3", + "resolved": "https://repo.micord.ru/repository/npm-all/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + } + } + }, + "ag-grid-community": { + "version": "29.0.0-micord.4", + "resolved": "https://repo.micord.ru/repository/npm-all/ag-grid-community/-/ag-grid-community-29.0.0-micord.4.tgz", + "integrity": "sha512-4Rl/JkNSog6krXJl+gxgmqTqvHVNDcZ5eHyx2NaLFL/MTE5ZUNuEXmanZRvNsWhdzZ85Ck9wdgP2kX/aqcqesg==" + }, + "agent-base": { + "version": "4.3.0", + "resolved": "https://repo.micord.ru/repository/npm-all/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "dev": true, + "requires": { + "es6-promisify": "^5.0.0" + } + }, + "agentkeepalive": { + "version": "3.5.3", + "resolved": "https://repo.micord.ru/repository/npm-all/agentkeepalive/-/agentkeepalive-3.5.3.tgz", + "integrity": "sha512-yqXL+k5rr8+ZRpOAntkaaRgWgE5o8ESAj5DyRmVTCSoZxXmqemb9Dd7T4i5UzwuERdLAJUy6XzR9zFVuf0kzkw==", + "dev": true, + "requires": { + "humanize-ms": "^1.2.1" + } + }, + "ajv": { + "version": "6.9.1", + "resolved": "https://repo.micord.ru/repository/npm-all/ajv/-/ajv-6.9.1.tgz", + "integrity": "sha512-XDN92U311aINL77ieWHmqCcNlwjoP5cHXDxIxbf2MaPYuCXOHS7gHH8jktxeK5omgd52XbSTX6a4Piwd1pQmzA==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-errors": { + "version": "1.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", + "dev": true + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://repo.micord.ru/repository/npm-all/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true + }, + "angular-calendar": { + "version": "0.28.28", + "resolved": "https://repo.micord.ru/repository/npm-all/angular-calendar/-/angular-calendar-0.28.28.tgz", + "integrity": "sha512-q6FIye6zkwFeMZfHBgFByHpZdHbWu02EQAJ67XjyZmwiDAvjo7LVoTlaug93CjggJ4DL0YEAWDG4rokLBBgq2w==", + "requires": { + "@scarf/scarf": "^1.1.1", + "angular-draggable-droppable": "^4.6.0", + "angular-resizable-element": "^3.4.0", + "calendar-utils": "^0.8.5", + "positioning": "^2.0.1", + "tslib": "^1.14.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://repo.micord.ru/repository/npm-all/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "angular-draggable-droppable": { + "version": "4.6.0", + "resolved": "https://repo.micord.ru/repository/npm-all/angular-draggable-droppable/-/angular-draggable-droppable-4.6.0.tgz", + "integrity": "sha512-+8JhTDMKkc/NuFFqb8/H/QHpB+v4Z7YNrgvEbV+PQxXry19rkr89ofZgjNIXhZexTvJNb03BYlSQoknzXE9b3g==", + "requires": { + "@mattlewis92/dom-autoscroller": "^2.4.2", + "tslib": "^1.9.0" + } + }, + "angular-resizable-element": { + "version": "3.4.0", + "resolved": "https://repo.micord.ru/repository/npm-all/angular-resizable-element/-/angular-resizable-element-3.4.0.tgz", + "integrity": "sha512-xL5a8FmghzrZmHPy7uwWz98m91gRXgAcdeCRYcK/nD7psXMTYNk5EPmHA0qZTDCIYljhT4h0OKWLvx56NQGfDA==", + "requires": { + "tslib": "^1.9.0" + } + }, + "angular-router-loader": { + "version": "0.8.5", + "resolved": "https://repo.micord.ru/repository/npm-all/angular-router-loader/-/angular-router-loader-0.8.5.tgz", + "integrity": "sha512-8wggCTKGgzB1o8co3Wvj+p9pKN7T7q3C477lEz3NLjvPVzUti8rv9i45Di+4aO/k+HvzGh3s8QdNlXU2Bl4avQ==", + "dev": true, + "requires": { + "loader-utils": "^1.0.2" + } + }, + "angular2-template-loader": { + "version": "0.6.2", + "resolved": "https://repo.micord.ru/repository/npm-all/angular2-template-loader/-/angular2-template-loader-0.6.2.tgz", + "integrity": "sha512-jBSrm2yDsTA48GG0H57upn8rmTfJS3/R7EhUeAL/3ryWS8deT9You8UQKWpW4eVSEY7uMJ52iFwpOYXc8QEtGg==", + "dev": true, + "requires": { + "loader-utils": "^0.2.15" + }, + "dependencies": { + "big.js": { + "version": "3.2.0", + "resolved": "https://repo.micord.ru/repository/npm-all/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://repo.micord.ru/repository/npm-all/json5/-/json5-0.5.1.tgz", + "integrity": "sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==", + "dev": true + }, + "loader-utils": { + "version": "0.2.17", + "resolved": "https://repo.micord.ru/repository/npm-all/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha512-tiv66G0SmiOx+pLWMtGEkfSEejxvb6N6uRrQjfWJIT79W9GMpgKeCAmm9aVBKtd4WEgntciI8CsGqjpDoCWJug==", + "dev": true, + "requires": { + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0", + "object-assign": "^4.0.1" + } + } + } + }, + "ansi-colors": { + "version": "3.2.4", + "resolved": "https://repo.micord.ru/repository/npm-all/ansi-colors/-/ansi-colors-3.2.4.tgz", + "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", + "dev": true + }, + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://repo.micord.ru/repository/npm-all/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true + }, + "ansi-regex": { + "version": "3.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://repo.micord.ru/repository/npm-all/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "ansicolors": { + "version": "0.2.1", + "resolved": "https://repo.micord.ru/repository/npm-all/ansicolors/-/ansicolors-0.2.1.tgz", + "integrity": "sha512-tOIuy1/SK/dr94ZA0ckDohKXNeBNqZ4us6PjMVLs5h1w2GBB6uPtOknp2+VF4F/zcy9LI70W+Z+pE2Soajky1w==" + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "app-root-path": { + "version": "2.2.1", + "resolved": "https://repo.micord.ru/repository/npm-all/app-root-path/-/app-root-path-2.2.1.tgz", + "integrity": "sha512-91IFKeKk7FjfmezPKkwtaRvSpnUc4gDwPAjA1YZ9Gn0q0PPeW+vbeUsZuyDwjI7+QTHhcLen2v25fi/AmhvbJA==", + "dev": true + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://repo.micord.ru/repository/npm-all/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://repo.micord.ru/repository/npm-all/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + }, + "dependencies": { + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://repo.micord.ru/repository/npm-all/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + } + } + }, + "aria-query": { + "version": "3.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/aria-query/-/aria-query-3.0.0.tgz", + "integrity": "sha512-majUxHgLehQTeSA+hClx+DY09OVUqG3GtezWkF1krgLGNdlDu9l9V8DaqNMWbq4Eddc8wsyDA0hpDUtnYxQEXw==", + "dev": true, + "requires": { + "ast-types-flow": "0.0.7", + "commander": "^2.11.0" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://repo.micord.ru/repository/npm-all/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://repo.micord.ru/repository/npm-all/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", + "dev": true + }, + "array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "dev": true, + "requires": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + } + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://repo.micord.ru/repository/npm-all/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://repo.micord.ru/repository/npm-all/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://repo.micord.ru/repository/npm-all/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://repo.micord.ru/repository/npm-all/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", + "dev": true + }, + "array.prototype.reduce": { + "version": "1.0.7", + "resolved": "https://repo.micord.ru/repository/npm-all/array.prototype.reduce/-/array.prototype.reduce-1.0.7.tgz", + "integrity": "sha512-mzmiUCVwtiD4lgxYP8g7IYy8El8p2CSMePvIbTS7gchKir/L1fgJrk0yDKmAX6mnRQFKNADYIk8nNlTris5H1Q==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-array-method-boxes-properly": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "is-string": "^1.0.7" + } + }, + "arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://repo.micord.ru/repository/npm-all/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "dev": true, + "requires": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + } + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "dev": true + }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://repo.micord.ru/repository/npm-all/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://repo.micord.ru/repository/npm-all/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "assert": { + "version": "1.5.1", + "resolved": "https://repo.micord.ru/repository/npm-all/assert/-/assert-1.5.1.tgz", + "integrity": "sha512-zzw1uCAgLbsKwBfFc8CX78DDg+xZeBksSO3vwVIDDN5i94eOrPsSSyiVhmsSABFDM/OcpE2aagCat9dnWQLG1A==", + "dev": true, + "requires": { + "object.assign": "^4.1.4", + "util": "^0.10.4" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://repo.micord.ru/repository/npm-all/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "util": { + "version": "0.10.4", + "resolved": "https://repo.micord.ru/repository/npm-all/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + } + } + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", + "dev": true + }, + "ast-types-flow": { + "version": "0.0.7", + "resolved": "https://repo.micord.ru/repository/npm-all/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==", + "dev": true + }, + "async": { + "version": "2.6.4", + "resolved": "https://repo.micord.ru/repository/npm-all/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "requires": { + "lodash": "^4.17.14" + } + }, + "async-each": { + "version": "1.0.6", + "resolved": "https://repo.micord.ru/repository/npm-all/async-each/-/async-each-1.0.6.tgz", + "integrity": "sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg==", + "dev": true + }, + "async-each-series": { + "version": "0.1.1", + "resolved": "https://repo.micord.ru/repository/npm-all/async-each-series/-/async-each-series-0.1.1.tgz", + "integrity": "sha512-p4jj6Fws4Iy2m0iCmI2am2ZNZCgbdgE+P8F/8csmn2vx7ixXrO2zGcuNsD46X5uZSVecmkEy/M06X2vG8KD6dQ==", + "dev": true + }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://repo.micord.ru/repository/npm-all/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "autonumeric": { + "version": "4.5.10-cg", + "resolved": "https://repo.micord.ru/repository/npm-all/autonumeric/-/autonumeric-4.5.10-cg.tgz", + "integrity": "sha512-oh1+nRny25cIApfA4/NuNwi05CTDofSuQ/cH+qHQU9tVo77oMjRgeO78LWHTNxPOkKxdNxaGby6NV/BnFo1Vnw==" + }, + "available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://repo.micord.ru/repository/npm-all/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "requires": { + "possible-typed-array-names": "^1.0.0" + } + }, + "axios": { + "version": "0.21.4", + "resolved": "https://repo.micord.ru/repository/npm-all/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "dev": true, + "requires": { + "follow-redirects": "^1.14.0" + } + }, + "axobject-query": { + "version": "2.0.2", + "resolved": "https://repo.micord.ru/repository/npm-all/axobject-query/-/axobject-query-2.0.2.tgz", + "integrity": "sha512-MCeek8ZH7hKyO1rWUbKNQBbl4l2eY0ntk7OGi+q0RlafrCnfPxC06WZA+uebCfmYp4mNU9jRBP1AhGyf8+W3ww==", + "dev": true, + "requires": { + "ast-types-flow": "0.0.7" + } + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://repo.micord.ru/repository/npm-all/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://repo.micord.ru/repository/npm-all/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://repo.micord.ru/repository/npm-all/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://repo.micord.ru/repository/npm-all/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://repo.micord.ru/repository/npm-all/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "babel-loader": { + "version": "8.1.0", + "resolved": "https://repo.micord.ru/repository/npm-all/babel-loader/-/babel-loader-8.1.0.tgz", + "integrity": "sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw==", + "dev": true, + "requires": { + "find-cache-dir": "^2.1.0", + "loader-utils": "^1.4.0", + "mkdirp": "^0.5.3", + "pify": "^4.0.1", + "schema-utils": "^2.6.5" + }, + "dependencies": { + "emojis-list": { + "version": "3.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true + }, + "loader-utils": { + "version": "1.4.2", + "resolved": "https://repo.micord.ru/repository/npm-all/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "minimist": { + "version": "1.2.8", + "resolved": "https://repo.micord.ru/repository/npm-all/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://repo.micord.ru/repository/npm-all/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, + "pify": { + "version": "4.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + } + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://repo.micord.ru/repository/npm-all/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://repo.micord.ru/repository/npm-all/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-descriptor": { + "version": "1.0.3", + "resolved": "https://repo.micord.ru/repository/npm-all/is-descriptor/-/is-descriptor-1.0.3.tgz", + "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + } + } + } + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://repo.micord.ru/repository/npm-all/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, + "base64id": { + "version": "2.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", + "dev": true + }, + "batch": { + "version": "0.6.1", + "resolved": "https://repo.micord.ru/repository/npm-all/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true + }, + "bfj": { + "version": "6.1.2", + "resolved": "https://repo.micord.ru/repository/npm-all/bfj/-/bfj-6.1.2.tgz", + "integrity": "sha512-BmBJa4Lip6BPRINSZ0BPEIfB1wUY/9rwbwvIHQA1KjX9om29B6id0wnWXq7m3bn5JrUVjeOTnVuhPT1FiHwPGw==", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "check-types": "^8.0.3", + "hoopy": "^0.1.4", + "tryer": "^1.0.1" + } + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://repo.micord.ru/repository/npm-all/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://repo.micord.ru/repository/npm-all/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://repo.micord.ru/repository/npm-all/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://repo.micord.ru/repository/npm-all/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "bn.js": { + "version": "5.2.1", + "resolved": "https://repo.micord.ru/repository/npm-all/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "dev": true + }, + "body-parser": { + "version": "1.20.2", + "resolved": "https://repo.micord.ru/repository/npm-all/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "dependencies": { + "destroy": { + "version": "1.2.0", + "resolved": "https://repo.micord.ru/repository/npm-all/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://repo.micord.ru/repository/npm-all/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "on-finished": { + "version": "2.4.1", + "resolved": "https://repo.micord.ru/repository/npm-all/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "qs": { + "version": "6.11.0", + "resolved": "https://repo.micord.ru/repository/npm-all/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + } + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "bootstrap": { + "version": "4.3.1", + "resolved": "https://repo.micord.ru/repository/npm-all/bootstrap/-/bootstrap-4.3.1.tgz", + "integrity": "sha512-rXqOmH1VilAt2DyPzluTi2blhk17bO7ef+zLLPlWvG494pDxcM234pJ8wTc/6R40UWizAIIMgxjvxZg5kmsbag==" + }, + "bootstrap-icons": { + "version": "1.10.3", + "resolved": "https://repo.micord.ru/repository/npm-all/bootstrap-icons/-/bootstrap-icons-1.10.3.tgz", + "integrity": "sha512-7Qvj0j0idEm/DdX9Q0CpxAnJYqBCFCiUI6qzSPYfERMcokVuV9Mdm/AJiVZI8+Gawe4h/l6zFcOzvV7oXCZArw==" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://repo.micord.ru/repository/npm-all/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://repo.micord.ru/repository/npm-all/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://repo.micord.ru/repository/npm-all/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "dev": true + }, + "browser-sync": { + "version": "2.29.3", + "resolved": "https://repo.micord.ru/repository/npm-all/browser-sync/-/browser-sync-2.29.3.tgz", + "integrity": "sha512-NiM38O6XU84+MN+gzspVmXV2fTOoe+jBqIBx3IBdhZrdeURr6ZgznJr/p+hQ+KzkKEiGH/GcC4SQFSL0jV49bg==", + "dev": true, + "requires": { + "browser-sync-client": "^2.29.3", + "browser-sync-ui": "^2.29.3", + "bs-recipes": "1.3.4", + "chalk": "4.1.2", + "chokidar": "^3.5.1", + "connect": "3.6.6", + "connect-history-api-fallback": "^1", + "dev-ip": "^1.0.1", + "easy-extender": "^2.3.4", + "eazy-logger": "^4.0.1", + "etag": "^1.8.1", + "fresh": "^0.5.2", + "fs-extra": "3.0.1", + "http-proxy": "^1.18.1", + "immutable": "^3", + "localtunnel": "^2.0.1", + "micromatch": "^4.0.2", + "opn": "5.3.0", + "portscanner": "2.2.0", + "raw-body": "^2.3.2", + "resp-modifier": "6.0.2", + "rx": "4.1.0", + "send": "0.16.2", + "serve-index": "1.9.1", + "serve-static": "1.13.2", + "server-destroy": "1.0.1", + "socket.io": "^4.4.1", + "ua-parser-js": "^1.0.33", + "yargs": "^17.3.1" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://repo.micord.ru/repository/npm-all/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.3", + "resolved": "https://repo.micord.ru/repository/npm-all/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "binary-extensions": { + "version": "2.3.0", + "resolved": "https://repo.micord.ru/repository/npm-all/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true + }, + "braces": { + "version": "3.0.3", + "resolved": "https://repo.micord.ru/repository/npm-all/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "requires": { + "fill-range": "^7.1.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://repo.micord.ru/repository/npm-all/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "chokidar": { + "version": "3.6.0", + "resolved": "https://repo.micord.ru/repository/npm-all/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "cliui": { + "version": "8.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://repo.micord.ru/repository/npm-all/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "fill-range": { + "version": "7.1.1", + "resolved": "https://repo.micord.ru/repository/npm-all/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "fsevents": { + "version": "2.3.3", + "resolved": "https://repo.micord.ru/repository/npm-all/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "optional": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://repo.micord.ru/repository/npm-all/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://repo.micord.ru/repository/npm-all/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://repo.micord.ru/repository/npm-all/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "micromatch": { + "version": "4.0.7", + "resolved": "https://repo.micord.ru/repository/npm-all/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", + "dev": true, + "requires": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://repo.micord.ru/repository/npm-all/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://repo.micord.ru/repository/npm-all/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://repo.micord.ru/repository/npm-all/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://repo.micord.ru/repository/npm-all/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yargs": { + "version": "17.7.2", + "resolved": "https://repo.micord.ru/repository/npm-all/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "requires": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + } + }, + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://repo.micord.ru/repository/npm-all/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true + } + } + }, + "browser-sync-client": { + "version": "2.29.3", + "resolved": "https://repo.micord.ru/repository/npm-all/browser-sync-client/-/browser-sync-client-2.29.3.tgz", + "integrity": "sha512-4tK5JKCl7v/3aLbmCBMzpufiYLsB1+UI+7tUXCCp5qF0AllHy/jAqYu6k7hUF3hYtlClKpxExWaR+rH+ny07wQ==", + "dev": true, + "requires": { + "etag": "1.8.1", + "fresh": "0.5.2", + "mitt": "^1.1.3" + } + }, + "browser-sync-ui": { + "version": "2.29.3", + "resolved": "https://repo.micord.ru/repository/npm-all/browser-sync-ui/-/browser-sync-ui-2.29.3.tgz", + "integrity": "sha512-kBYOIQjU/D/3kYtUIJtj82e797Egk1FB2broqItkr3i4eF1qiHbFCG6srksu9gWhfmuM/TNG76jMfzAdxEPakg==", + "dev": true, + "requires": { + "async-each-series": "0.1.1", + "chalk": "4.1.2", + "connect-history-api-fallback": "^1", + "immutable": "^3", + "server-destroy": "1.0.1", + "socket.io-client": "^4.4.1", + "stream-throttle": "^0.1.3" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://repo.micord.ru/repository/npm-all/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://repo.micord.ru/repository/npm-all/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://repo.micord.ru/repository/npm-all/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://repo.micord.ru/repository/npm-all/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://repo.micord.ru/repository/npm-all/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://repo.micord.ru/repository/npm-all/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.1.0", + "resolved": "https://repo.micord.ru/repository/npm-all/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "dev": true, + "requires": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.2.3", + "resolved": "https://repo.micord.ru/repository/npm-all/browserify-sign/-/browserify-sign-4.2.3.tgz", + "integrity": "sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw==", + "dev": true, + "requires": { + "bn.js": "^5.2.1", + "browserify-rsa": "^4.1.0", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.5", + "hash-base": "~3.0", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.7", + "readable-stream": "^2.3.8", + "safe-buffer": "^5.2.1" + }, + "dependencies": { + "hash-base": { + "version": "3.0.4", + "resolved": "https://repo.micord.ru/repository/npm-all/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha512-EeeoJKjTyt868liAlVmcv2ZsUfGHlE3Q+BICOXcZiwN3osr5Q/zFGYmTJpoIzuaSTAwndFy+GqhEwlU4L3j4Ow==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://repo.micord.ru/repository/npm-all/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://repo.micord.ru/repository/npm-all/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "~1.0.5" + } + }, + "browserslist": { + "version": "4.23.1", + "resolved": "https://repo.micord.ru/repository/npm-all/browserslist/-/browserslist-4.23.1.tgz", + "integrity": "sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001629", + "electron-to-chromium": "^1.4.796", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.16" + } + }, + "bs-recipes": { + "version": "1.3.4", + "resolved": "https://repo.micord.ru/repository/npm-all/bs-recipes/-/bs-recipes-1.3.4.tgz", + "integrity": "sha512-BXvDkqhDNxXEjeGM8LFkSbR+jzmP/CYpCiVKYn+soB1dDldeU15EBNDkwVXndKuX35wnNUaPd0qSoQEAkmQtMw==", + "dev": true + }, + "buffer": { + "version": "4.9.2", + "resolved": "https://repo.micord.ru/repository/npm-all/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://repo.micord.ru/repository/npm-all/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://repo.micord.ru/repository/npm-all/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", + "dev": true + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://repo.micord.ru/repository/npm-all/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ==", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", + "dev": true + }, + "builtins": { + "version": "1.0.3", + "resolved": "https://repo.micord.ru/repository/npm-all/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==", + "dev": true + }, + "bytes": { + "version": "3.1.2", + "resolved": "https://repo.micord.ru/repository/npm-all/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true + }, + "cacache": { + "version": "11.3.3", + "resolved": "https://repo.micord.ru/repository/npm-all/cacache/-/cacache-11.3.3.tgz", + "integrity": "sha512-p8WcneCytvzPxhDvYp31PD039vi77I12W+/KfR9S8AZbaiARFBCpsPJS+9uhWfeBfeAtW7o/4vt3MUqLkbY6nA==", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "cadesplugin_api": { + "version": "2.0.4-micord.1", + "resolved": "https://repo.micord.ru/repository/npm-all/cadesplugin_api/-/cadesplugin_api-2.0.4-micord.1.tgz", + "integrity": "sha512-FyGVi1VWIyJOW1zOOQN0IkTH/Z/8g7pNWH7A71nf0h21FCX9SacUfgRwID+gl+NlpYiT3m+yZGdlEJsiDeV8JA==" + }, + "calendar-utils": { + "version": "0.8.5", + "resolved": "https://repo.micord.ru/repository/npm-all/calendar-utils/-/calendar-utils-0.8.5.tgz", + "integrity": "sha512-mgn7dqZfDEqY/obyPO9ib8FSk28vAIOIOXyrjffT9jw1vAmxLguhvohM6JehDA6dY+ddkWBlPCDLCcRv0PncKw==" + }, + "call-bind": { + "version": "1.0.7", + "resolved": "https://repo.micord.ru/repository/npm-all/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dev": true, + "requires": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + } + }, + "camel-case": { + "version": "4.1.2", + "resolved": "https://repo.micord.ru/repository/npm-all/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dev": true, + "requires": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + }, + "dependencies": { + "tslib": { + "version": "2.6.3", + "resolved": "https://repo.micord.ru/repository/npm-all/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "dev": true + } + } + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://repo.micord.ru/repository/npm-all/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw==", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30001636", + "resolved": "https://repo.micord.ru/repository/npm-all/caniuse-lite/-/caniuse-lite-1.0.30001636.tgz", + "integrity": "sha512-bMg2vmr8XBsbL6Lr0UHXy/21m84FTxDLWn2FSqMd5PrlbMxwJlQnC2YWYxVgp66PZE+BBNF2jYQUBKCo1FDeZg==", + "dev": true + }, + "canonical-path": { + "version": "1.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/canonical-path/-/canonical-path-1.0.0.tgz", + "integrity": "sha512-feylzsbDxi1gPZ1IjystzIQZagYYLvfKrSuygUCgf7z6x790VEzze5QEkdSV1U58RA7Hi0+v6fv4K54atOzATg==", + "dev": true + }, + "cardinal": { + "version": "1.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/cardinal/-/cardinal-1.0.0.tgz", + "integrity": "sha512-INsuF4GyiFLk8C91FPokbKTc/rwHqV4JnfatVZ6GPhguP1qmkRWX2dp5tepYboYdPpGWisLVLI+KsXoXFPRSMg==", + "requires": { + "ansicolors": "~0.2.1", + "redeyed": "~1.0.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://repo.micord.ru/repository/npm-all/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://repo.micord.ru/repository/npm-all/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "chart.js": { + "version": "3.8.0-cg.1", + "resolved": "https://repo.micord.ru/repository/npm-all/chart.js/-/chart.js-3.8.0-cg.1.tgz", + "integrity": "sha512-OKZBIhQCLzE4NVoZEG9+/lKWEPa4jUdpOmf0Wjb01PHckkVFo2Z+zu2TRv5+wcfXv1e9hj7rNOchvDO/0pFLZg==" + }, + "chartjs-adapter-moment": { + "version": "1.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/chartjs-adapter-moment/-/chartjs-adapter-moment-1.0.0.tgz", + "integrity": "sha512-PqlerEvQcc5hZLQ/NQWgBxgVQ4TRdvkW3c/t+SUEQSj78ia3hgLkf2VZ2yGJtltNbEEFyYGm+cA6XXevodYvWA==" + }, + "check-types": { + "version": "8.0.3", + "resolved": "https://repo.micord.ru/repository/npm-all/check-types/-/check-types-8.0.3.tgz", + "integrity": "sha512-YpeKZngUmG65rLudJ4taU7VLkOCTMhNl/u4ctNC56LQS/zJTyNH0Lrtwm1tfTsbLlwvlfsA2d1c8vCf/Kh2KwQ==", + "dev": true + }, + "chokidar": { + "version": "2.0.4", + "resolved": "https://repo.micord.ru/repository/npm-all/chokidar/-/chokidar-2.0.4.tgz", + "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.0", + "braces": "^2.3.0", + "fsevents": "^1.2.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "lodash.debounce": "^4.0.8", + "normalize-path": "^2.1.1", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0", + "upath": "^1.0.5" + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://repo.micord.ru/repository/npm-all/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "chrome-trace-event": { + "version": "1.0.4", + "resolved": "https://repo.micord.ru/repository/npm-all/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", + "dev": true + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://repo.micord.ru/repository/npm-all/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://repo.micord.ru/repository/npm-all/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://repo.micord.ru/repository/npm-all/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "clean-css": { + "version": "4.2.4", + "resolved": "https://repo.micord.ru/repository/npm-all/clean-css/-/clean-css-4.2.4.tgz", + "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==", + "dev": true, + "requires": { + "source-map": "~0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://repo.micord.ru/repository/npm-all/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://repo.micord.ru/repository/npm-all/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-width": { + "version": "2.2.1", + "resolved": "https://repo.micord.ru/repository/npm-all/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", + "dev": true + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://repo.micord.ru/repository/npm-all/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://repo.micord.ru/repository/npm-all/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://repo.micord.ru/repository/npm-all/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://repo.micord.ru/repository/npm-all/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", + "dev": true + }, + "codelyzer": { + "version": "5.2.1", + "resolved": "https://repo.micord.ru/repository/npm-all/codelyzer/-/codelyzer-5.2.1.tgz", + "integrity": "sha512-awBZXFcJUyC5HMYXiHzjr3D24tww2l1D1OqtfA9vUhEtYr32a65A+Gblm/OvsO+HuKLYzn8EDMw1inSM3VbxWA==", + "dev": true, + "requires": { + "app-root-path": "^2.2.1", + "aria-query": "^3.0.0", + "axobject-query": "2.0.2", + "css-selector-tokenizer": "^0.7.1", + "cssauron": "^1.4.0", + "damerau-levenshtein": "^1.0.4", + "semver-dsl": "^1.0.1", + "source-map": "^0.5.7", + "sprintf-js": "^1.1.2" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://repo.micord.ru/repository/npm-all/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true + } + } + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://repo.micord.ru/repository/npm-all/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://repo.micord.ru/repository/npm-all/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "commander": { + "version": "2.20.3", + "resolved": "https://repo.micord.ru/repository/npm-all/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true + }, + "component-emitter": { + "version": "1.3.1", + "resolved": "https://repo.micord.ru/repository/npm-all/component-emitter/-/component-emitter-1.3.1.tgz", + "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://repo.micord.ru/repository/npm-all/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "connect": { + "version": "3.6.6", + "resolved": "https://repo.micord.ru/repository/npm-all/connect/-/connect-3.6.6.tgz", + "integrity": "sha512-OO7axMmPpu/2XuX1+2Yrg0ddju31B6xLZMWkJ5rYBu4YRmRVlOjvlY6kw2FJKiAzyxGwnrDUAG4s1Pf0sbBMCQ==", + "dev": true, + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.0", + "parseurl": "~1.3.2", + "utils-merge": "1.0.1" + } + }, + "connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://repo.micord.ru/repository/npm-all/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true + }, + "connect-logger": { + "version": "0.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/connect-logger/-/connect-logger-0.0.1.tgz", + "integrity": "sha512-kC5FPWpcfgpW5HtICnXbdOAFa4uNilU4ZPmsH6RlXaDVfXLupyUjgI1otpj3kOcsoPpDxknxmcoM0wk0ApsjYQ==", + "dev": true, + "requires": { + "moment": "*" + } + }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://repo.micord.ru/repository/npm-all/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", + "dev": true + }, + "content-disposition": { + "version": "0.5.4", + "resolved": "https://repo.micord.ru/repository/npm-all/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "requires": { + "safe-buffer": "5.2.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://repo.micord.ru/repository/npm-all/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "content-type": { + "version": "1.0.5", + "resolved": "https://repo.micord.ru/repository/npm-all/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true + }, + "convert-source-map": { + "version": "1.9.0", + "resolved": "https://repo.micord.ru/repository/npm-all/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "cookie": { + "version": "0.4.2", + "resolved": "https://repo.micord.ru/repository/npm-all/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://repo.micord.ru/repository/npm-all/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://repo.micord.ru/repository/npm-all/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://repo.micord.ru/repository/npm-all/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", + "dev": true + }, + "copy-webpack-plugin": { + "version": "5.0.3", + "resolved": "https://repo.micord.ru/repository/npm-all/copy-webpack-plugin/-/copy-webpack-plugin-5.0.3.tgz", + "integrity": "sha512-PlZRs9CUMnAVylZq+vg2Juew662jWtwOXOqH4lbQD9ZFhRG9R7tVStOgHt21CBGVq7k5yIJaz8TXDLSjV+Lj8Q==", + "dev": true, + "requires": { + "cacache": "^11.3.2", + "find-cache-dir": "^2.1.0", + "glob-parent": "^3.1.0", + "globby": "^7.1.1", + "is-glob": "^4.0.1", + "loader-utils": "^1.2.3", + "minimatch": "^3.0.4", + "normalize-path": "^3.0.0", + "p-limit": "^2.2.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^1.7.0", + "webpack-log": "^2.0.0" + }, + "dependencies": { + "normalize-path": { + "version": "3.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://repo.micord.ru/repository/npm-all/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://repo.micord.ru/repository/npm-all/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "core-js": { + "version": "2.4.1", + "resolved": "https://repo.micord.ru/repository/npm-all/core-js/-/core-js-2.4.1.tgz", + "integrity": "sha512-W4Zkayb9VI4zr+s7ReDSgTTaV9KWB4L997i8/mkOV2kY1c7QGNj91k8X0zcr8Tl24oYF6kiBomCDSYO4BvQQdQ==" + }, + "core-js-compat": { + "version": "3.37.1", + "resolved": "https://repo.micord.ru/repository/npm-all/core-js-compat/-/core-js-compat-3.37.1.tgz", + "integrity": "sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==", + "dev": true, + "requires": { + "browserslist": "^4.23.0" + } + }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://repo.micord.ru/repository/npm-all/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "cors": { + "version": "2.8.5", + "resolved": "https://repo.micord.ru/repository/npm-all/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, + "create-ecdh": { + "version": "4.0.4", + "resolved": "https://repo.micord.ru/repository/npm-all/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://repo.micord.ru/repository/npm-all/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://repo.micord.ru/repository/npm-all/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://repo.micord.ru/repository/npm-all/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-env": { + "version": "5.2.1", + "resolved": "https://repo.micord.ru/repository/npm-all/cross-env/-/cross-env-5.2.1.tgz", + "integrity": "sha512-1yHhtcfAd1r4nwQgknowuUNfIT9E8dOMMspC36g45dN+iD1blloi7xp8X/xAIDnjHWyt1uQ8PHk2fkNaym7soQ==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.5" + }, + "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://repo.micord.ru/repository/npm-all/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + } + } + }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://repo.micord.ru/repository/npm-all/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "dependencies": { + "lru-cache": { + "version": "4.1.5", + "resolved": "https://repo.micord.ru/repository/npm-all/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://repo.micord.ru/repository/npm-all/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", + "dev": true + } + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://repo.micord.ru/repository/npm-all/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "css-loader": { + "version": "2.1.0", + "resolved": "https://repo.micord.ru/repository/npm-all/css-loader/-/css-loader-2.1.0.tgz", + "integrity": "sha512-MoOu+CStsGrSt5K2OeZ89q3Snf+IkxRfAIt9aAKg4piioTrhtP1iEFPu+OVn3Ohz24FO6L+rw9UJxBILiSBw5Q==", + "dev": true, + "requires": { + "icss-utils": "^4.0.0", + "loader-utils": "^1.2.1", + "lodash": "^4.17.11", + "postcss": "^7.0.6", + "postcss-modules-extract-imports": "^2.0.0", + "postcss-modules-local-by-default": "^2.0.3", + "postcss-modules-scope": "^2.0.0", + "postcss-modules-values": "^2.0.0", + "postcss-value-parser": "^3.3.0", + "schema-utils": "^1.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "1.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "css-select": { + "version": "4.3.0", + "resolved": "https://repo.micord.ru/repository/npm-all/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + } + }, + "css-selector-tokenizer": { + "version": "0.7.3", + "resolved": "https://repo.micord.ru/repository/npm-all/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz", + "integrity": "sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "fastparse": "^1.1.2" + } + }, + "css-what": { + "version": "6.1.0", + "resolved": "https://repo.micord.ru/repository/npm-all/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true + }, + "cssauron": { + "version": "1.4.0", + "resolved": "https://repo.micord.ru/repository/npm-all/cssauron/-/cssauron-1.4.0.tgz", + "integrity": "sha512-Ht70DcFBh+/ekjVrYS2PlDMdSQEl3OFNmjK6lcn49HptBgilXf/Zwg4uFh9Xn0pX3Q8YOkSjIFOfK2osvdqpBw==", + "dev": true, + "requires": { + "through": "X.X.X" + } + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "csv-parse": { + "version": "4.16.3", + "resolved": "https://repo.micord.ru/repository/npm-all/csv-parse/-/csv-parse-4.16.3.tgz", + "integrity": "sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==" + }, + "cyclist": { + "version": "1.0.2", + "resolved": "https://repo.micord.ru/repository/npm-all/cyclist/-/cyclist-1.0.2.tgz", + "integrity": "sha512-0sVXIohTfLqVIW3kb/0n6IiWF3Ifj5nm2XaSrLq2DI6fKIGa2fYAZdk917rUneaeLVpYfFcyXE2ft0fe3remsA==", + "dev": true + }, + "damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://repo.micord.ru/repository/npm-all/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "dev": true + }, + "data-view-buffer": { + "version": "1.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dev": true, + "requires": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + } + }, + "data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + } + }, + "data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dev": true, + "requires": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + } + }, + "date-fns": { + "version": "2.29.3", + "resolved": "https://repo.micord.ru/repository/npm-all/date-fns/-/date-fns-2.29.3.tgz", + "integrity": "sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==" + }, + "debug": { + "version": "2.6.9", + "resolved": "https://repo.micord.ru/repository/npm-all/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://repo.micord.ru/repository/npm-all/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.2", + "resolved": "https://repo.micord.ru/repository/npm-all/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", + "dev": true + }, + "define-data-property": { + "version": "1.1.4", + "resolved": "https://repo.micord.ru/repository/npm-all/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "requires": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + } + }, + "define-properties": { + "version": "1.2.1", + "resolved": "https://repo.micord.ru/repository/npm-all/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "requires": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://repo.micord.ru/repository/npm-all/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-descriptor": { + "version": "1.0.3", + "resolved": "https://repo.micord.ru/repository/npm-all/is-descriptor/-/is-descriptor-1.0.3.tgz", + "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + } + } + } + }, + "del": { + "version": "2.2.2", + "resolved": "https://repo.micord.ru/repository/npm-all/del/-/del-2.2.2.tgz", + "integrity": "sha512-Z4fzpbIRjOu7lO5jCETSWoqUDVe0IPOlfugBsF6suen2LKDlVb4QZpKEM9P+buNJ4KI1eN7I083w/pbKUpsrWQ==", + "dev": true, + "requires": { + "globby": "^5.0.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "rimraf": "^2.2.8" + }, + "dependencies": { + "globby": { + "version": "5.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/globby/-/globby-5.0.0.tgz", + "integrity": "sha512-HJRTIH2EeH44ka+LWig+EqT2ONSYpVlNfx6pyd592/VF1TbfljJ7elwie7oSwcViLGqOdWocSdu2txwBF9bjmQ==", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + } + } + }, + "depd": { + "version": "2.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + }, + "dependency-graph": { + "version": "0.7.2", + "resolved": "https://repo.micord.ru/repository/npm-all/dependency-graph/-/dependency-graph-0.7.2.tgz", + "integrity": "sha512-KqtH4/EZdtdfWX0p6MGP9jljvxSY6msy/pRUD4jgNwVpv3v1QmNLlsB3LDSSUg79BRVSn7jI1QPRtArGABovAQ==", + "dev": true + }, + "des.js": { + "version": "1.1.0", + "resolved": "https://repo.micord.ru/repository/npm-all/des.js/-/des.js-1.1.0.tgz", + "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://repo.micord.ru/repository/npm-all/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==", + "dev": true + }, + "detect-file": { + "version": "1.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==", + "dev": true + }, + "dev-ip": { + "version": "1.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/dev-ip/-/dev-ip-1.0.1.tgz", + "integrity": "sha512-LmVkry/oDShEgSZPNgqCIp2/TlqtExeGmymru3uCELnfyjY11IzpAproLYs+1X88fXO6DBoYP3ul2Xo2yz2j6A==", + "dev": true + }, + "diff": { + "version": "3.5.0", + "resolved": "https://repo.micord.ru/repository/npm-all/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://repo.micord.ru/repository/npm-all/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://repo.micord.ru/repository/npm-all/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "dir-glob": { + "version": "2.2.2", + "resolved": "https://repo.micord.ru/repository/npm-all/dir-glob/-/dir-glob-2.2.2.tgz", + "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", + "dev": true, + "requires": { + "path-type": "^3.0.0" + }, + "dependencies": { + "path-type": { + "version": "3.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true + } + } + }, + "dom-converter": { + "version": "0.2.0", + "resolved": "https://repo.micord.ru/repository/npm-all/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dev": true, + "requires": { + "utila": "~0.4" + } + }, + "dom-serializer": { + "version": "1.4.1", + "resolved": "https://repo.micord.ru/repository/npm-all/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://repo.micord.ru/repository/npm-all/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true + }, + "domelementtype": { + "version": "2.3.0", + "resolved": "https://repo.micord.ru/repository/npm-all/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true + }, + "domhandler": { + "version": "4.3.1", + "resolved": "https://repo.micord.ru/repository/npm-all/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "requires": { + "domelementtype": "^2.2.0" + } + }, + "domino": { + "version": "2.1.6", + "resolved": "https://repo.micord.ru/repository/npm-all/domino/-/domino-2.1.6.tgz", + "integrity": "sha512-3VdM/SXBZX2omc9JF9nOPCtDaYQ67BGp5CoLpIQlO2KCAPETs8TcDHacF26jXadGbvUteZzRTeos2fhID5+ucQ==", + "dev": true + }, + "domutils": { + "version": "2.8.0", + "resolved": "https://repo.micord.ru/repository/npm-all/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "dot-case": { + "version": "3.0.4", + "resolved": "https://repo.micord.ru/repository/npm-all/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + }, + "dependencies": { + "tslib": { + "version": "2.6.3", + "resolved": "https://repo.micord.ru/repository/npm-all/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "dev": true + } + } + }, + "downloadjs": { + "version": "1.4.8", + "resolved": "https://repo.micord.ru/repository/npm-all/downloadjs/-/downloadjs-1.4.8.tgz", + "integrity": "sha512-XryLt/u8q0cF+L6/WdwcitDNdbtvTSv4OyehIww3DZxOcltvgzRNsj2wzk1Xu/qvBFhwlaqP1gpnch0618FL3Q==" + }, + "duplexer": { + "version": "0.1.2", + "resolved": "https://repo.micord.ru/repository/npm-all/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://repo.micord.ru/repository/npm-all/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "easy-extender": { + "version": "2.3.4", + "resolved": "https://repo.micord.ru/repository/npm-all/easy-extender/-/easy-extender-2.3.4.tgz", + "integrity": "sha512-8cAwm6md1YTiPpOvDULYJL4ZS6WfM5/cTeVVh4JsvyYZAoqlRVUpHL9Gr5Fy7HA6xcSZicUia3DeAgO3Us8E+Q==", + "dev": true, + "requires": { + "lodash": "^4.17.10" + } + }, + "eazy-logger": { + "version": "4.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/eazy-logger/-/eazy-logger-4.0.1.tgz", + "integrity": "sha512-2GSFtnnC6U4IEKhEI7+PvdxrmjJ04mdsj3wHZTFiw0tUtG4HCWzTr13ZYTk8XOGnA1xQMaDljoBOYlk3D/MMSw==", + "dev": true, + "requires": { + "chalk": "4.1.2" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://repo.micord.ru/repository/npm-all/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://repo.micord.ru/repository/npm-all/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://repo.micord.ru/repository/npm-all/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://repo.micord.ru/repository/npm-all/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://repo.micord.ru/repository/npm-all/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "ejs": { + "version": "2.7.4", + "resolved": "https://repo.micord.ru/repository/npm-all/ejs/-/ejs-2.7.4.tgz", + "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.4.810", + "resolved": "https://repo.micord.ru/repository/npm-all/electron-to-chromium/-/electron-to-chromium-1.4.810.tgz", + "integrity": "sha512-Kaxhu4T7SJGpRQx99tq216gCq2nMxJo+uuT6uzz9l8TVN2stL7M06MIIXAtr9jsrLs2Glflgf2vMQRepxawOdQ==", + "dev": true + }, + "elliptic": { + "version": "6.5.5", + "resolved": "https://repo.micord.ru/repository/npm-all/elliptic/-/elliptic-6.5.5.tgz", + "integrity": "sha512-7EjbcmUm17NQFu4Pmgmq2olYMj8nwMnpcddByChSUjArp8F5DQWcIcpriwO4ZToLNAJig0yiyjswfyGNje/ixw==", + "dev": true, + "requires": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://repo.micord.ru/repository/npm-all/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://repo.micord.ru/repository/npm-all/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha512-knHEZMgs8BB+MInokmNTg/OyPlAddghe1YBgNwJBc5zsJi/uyIcXoSDsL/W9ymOsBoBGdPIHXYJ9+qKFwRwDng==", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://repo.micord.ru/repository/npm-all/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true + }, + "encoding": { + "version": "0.1.13", + "resolved": "https://repo.micord.ru/repository/npm-all/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dev": true, + "requires": { + "iconv-lite": "^0.6.2" + } + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://repo.micord.ru/repository/npm-all/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "engine.io": { + "version": "6.5.5", + "resolved": "https://repo.micord.ru/repository/npm-all/engine.io/-/engine.io-6.5.5.tgz", + "integrity": "sha512-C5Pn8Wk+1vKBoHghJODM63yk8MvrO9EWZUfkAt5HAqIgPE4/8FF0PEGHXtEd40l223+cE5ABWuPzm38PHFXfMA==", + "dev": true, + "requires": { + "@types/cookie": "^0.4.1", + "@types/cors": "^2.8.12", + "@types/node": ">=10.0.0", + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.4.1", + "cors": "~2.8.5", + "debug": "~4.3.1", + "engine.io-parser": "~5.2.1", + "ws": "~8.17.1" + }, + "dependencies": { + "@types/node": { + "version": "20.14.8", + "resolved": "https://repo.micord.ru/repository/npm-all/@types/node/-/node-20.14.8.tgz", + "integrity": "sha512-DO+2/jZinXfROG7j7WKFn/3C6nFwxy2lLpgLjEXJz+0XKphZlTLJ14mo8Vfg8X5BWN6XjyESXq+LcYdT7tR3bA==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "debug": { + "version": "4.3.5", + "resolved": "https://repo.micord.ru/repository/npm-all/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://repo.micord.ru/repository/npm-all/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "engine.io-client": { + "version": "6.5.4", + "resolved": "https://repo.micord.ru/repository/npm-all/engine.io-client/-/engine.io-client-6.5.4.tgz", + "integrity": "sha512-GeZeeRjpD2qf49cZQ0Wvh/8NJNfeXkXXcoGh+F77oEAgo9gUHwT1fCRxSNU+YEEaysOJTnsFHmM5oAcPy4ntvQ==", + "dev": true, + "requires": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1", + "engine.io-parser": "~5.2.1", + "ws": "~8.17.1", + "xmlhttprequest-ssl": "~2.0.0" + }, + "dependencies": { + "debug": { + "version": "4.3.5", + "resolved": "https://repo.micord.ru/repository/npm-all/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://repo.micord.ru/repository/npm-all/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "engine.io-parser": { + "version": "5.2.2", + "resolved": "https://repo.micord.ru/repository/npm-all/engine.io-parser/-/engine.io-parser-5.2.2.tgz", + "integrity": "sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw==", + "dev": true + }, + "enhanced-resolve": { + "version": "4.5.0", + "resolved": "https://repo.micord.ru/repository/npm-all/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", + "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + }, + "dependencies": { + "memory-fs": { + "version": "0.5.0", + "resolved": "https://repo.micord.ru/repository/npm-all/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + } + } + }, + "entities": { + "version": "2.2.0", + "resolved": "https://repo.micord.ru/repository/npm-all/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + }, + "eonasdan-bootstrap-datetimepicker": { + "version": "4.17.47-micord.4", + "resolved": "https://repo.micord.ru/repository/npm-all/eonasdan-bootstrap-datetimepicker/-/eonasdan-bootstrap-datetimepicker-4.17.47-micord.4.tgz", + "integrity": "sha512-zrlmECV38liU3NbpX9INRQjFQ1z6DkLQugxsMaQREA88DVjfOpMQ3GXEB+cDPJZaDx2QbKy+CngZyKv9WLyqWQ==", + "requires": { + "bootstrap": "^3.3", + "jquery": "^1.8.3 || ^2.0 || ^3.0", + "moment": "^2.10", + "moment-timezone": "^0.4.0" + }, + "dependencies": { + "bootstrap": { + "version": "3.4.1", + "resolved": "https://repo.micord.ru/repository/npm-all/bootstrap/-/bootstrap-3.4.1.tgz", + "integrity": "sha512-yN5oZVmRCwe5aKwzRj6736nSmKDX7pLYwsXiCj/EYmo16hODaBiT4En5btW/jhBF/seV+XMx3aYwukYC3A49DA==" + }, + "moment-timezone": { + "version": "0.4.1", + "resolved": "https://repo.micord.ru/repository/npm-all/moment-timezone/-/moment-timezone-0.4.1.tgz", + "integrity": "sha512-5cNPVUwaVJDCe9JM8m/qz17f9SkaI8rpnRUyDJi2K5HAd6EwhuQ3n5nLclZkNC/qJnomKgQH2TIu70Gy2dxFKA==", + "requires": { + "moment": ">= 2.6.0" + } + } + } + }, + "err-code": { + "version": "1.1.2", + "resolved": "https://repo.micord.ru/repository/npm-all/err-code/-/err-code-1.1.2.tgz", + "integrity": "sha512-CJAN+O0/yA1CKfRn9SXOGctSpEM7DCon/r/5r2eXFMY2zCCJBasFhcM5I+1kh3Ap11FsQCX+vGHceNPvpWKhoA==", + "dev": true + }, + "errno": { + "version": "0.1.8", + "resolved": "https://repo.micord.ru/repository/npm-all/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://repo.micord.ru/repository/npm-all/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.23.3", + "resolved": "https://repo.micord.ru/repository/npm-all/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "dev": true, + "requires": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.3", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.15" + } + }, + "es-array-method-boxes-properly": { + "version": "1.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", + "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", + "dev": true + }, + "es-define-property": { + "version": "1.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, + "requires": { + "get-intrinsic": "^1.2.4" + } + }, + "es-errors": { + "version": "1.3.0", + "resolved": "https://repo.micord.ru/repository/npm-all/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true + }, + "es-object-atoms": { + "version": "1.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dev": true, + "requires": { + "es-errors": "^1.3.0" + } + }, + "es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://repo.micord.ru/repository/npm-all/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "dev": true, + "requires": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://repo.micord.ru/repository/npm-all/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es6-promise": { + "version": "4.2.8", + "resolved": "https://repo.micord.ru/repository/npm-all/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", + "dev": true + }, + "es6-promisify": { + "version": "5.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==", + "dev": true, + "requires": { + "es6-promise": "^4.0.3" + } + }, + "escalade": { + "version": "3.1.2", + "resolved": "https://repo.micord.ru/repository/npm-all/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "dev": true + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://repo.micord.ru/repository/npm-all/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://repo.micord.ru/repository/npm-all/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://repo.micord.ru/repository/npm-all/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "esmarttokenjs": { + "version": "2.2.1-cg", + "resolved": "https://repo.micord.ru/repository/npm-all/esmarttokenjs/-/esmarttokenjs-2.2.1-cg.tgz", + "integrity": "sha512-H48OuXYP8v/CAdxD5QWgfmg/6IXmnPG4uaS3Lmx6FR64NJjK46fLK4zDd3VF/52l/5WRxnIqNPGb5krLPviPuQ==" + }, + "esprima": { + "version": "3.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/esprima/-/esprima-3.0.0.tgz", + "integrity": "sha512-xoBq/MIShSydNZOkjkoCEjqod963yHNXTLC40ypBhop6yPqflPz/vTinmCfSrGcywVLnSftRf6a0kJLdFdzemw==" + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://repo.micord.ru/repository/npm-all/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://repo.micord.ru/repository/npm-all/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://repo.micord.ru/repository/npm-all/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://repo.micord.ru/repository/npm-all/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://repo.micord.ru/repository/npm-all/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://repo.micord.ru/repository/npm-all/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "events": { + "version": "3.3.0", + "resolved": "https://repo.micord.ru/repository/npm-all/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://repo.micord.ru/repository/npm-all/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://repo.micord.ru/repository/npm-all/execa/-/execa-0.7.0.tgz", + "integrity": "sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==", + "dev": true, + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "dependencies": { + "get-stream": { + "version": "3.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", + "dev": true + } + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://repo.micord.ru/repository/npm-all/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://repo.micord.ru/repository/npm-all/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://repo.micord.ru/repository/npm-all/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "express": { + "version": "4.19.2", + "resolved": "https://repo.micord.ru/repository/npm-all/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "dev": true, + "requires": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.6.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "cookie": { + "version": "0.6.0", + "resolved": "https://repo.micord.ru/repository/npm-all/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "dev": true + }, + "destroy": { + "version": "1.2.0", + "resolved": "https://repo.micord.ru/repository/npm-all/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true + }, + "finalhandler": { + "version": "1.2.0", + "resolved": "https://repo.micord.ru/repository/npm-all/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://repo.micord.ru/repository/npm-all/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "ms": { + "version": "2.1.3", + "resolved": "https://repo.micord.ru/repository/npm-all/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "on-finished": { + "version": "2.4.1", + "resolved": "https://repo.micord.ru/repository/npm-all/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "qs": { + "version": "6.11.0", + "resolved": "https://repo.micord.ru/repository/npm-all/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://repo.micord.ru/repository/npm-all/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "send": { + "version": "0.18.0", + "resolved": "https://repo.micord.ru/repository/npm-all/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + } + }, + "serve-static": { + "version": "1.15.0", + "resolved": "https://repo.micord.ru/repository/npm-all/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + } + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true + } + } + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://repo.micord.ru/repository/npm-all/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://repo.micord.ru/repository/npm-all/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "dependencies": { + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://repo.micord.ru/repository/npm-all/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://repo.micord.ru/repository/npm-all/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-descriptor": { + "version": "1.0.3", + "resolved": "https://repo.micord.ru/repository/npm-all/is-descriptor/-/is-descriptor-1.0.3.tgz", + "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + } + } + } + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w==", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha512-eIgZvM9C3P05kg0qxfqaVU6Tma4QedCPIByQOcemV0vju8ot3cS2DpHi4m2G2JvbSMI152rjfLX0p1pkSdyPlQ==", + "dev": true + }, + "fastparse": { + "version": "1.1.2", + "resolved": "https://repo.micord.ru/repository/npm-all/fastparse/-/fastparse-1.1.2.tgz", + "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", + "dev": true + }, + "figgy-pudding": { + "version": "3.5.2", + "resolved": "https://repo.micord.ru/repository/npm-all/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", + "dev": true + }, + "figures": { + "version": "2.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/figures/-/figures-2.0.0.tgz", + "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-loader": { + "version": "3.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/file-loader/-/file-loader-3.0.1.tgz", + "integrity": "sha512-4sNIOXgtH/9WZq4NvlfU3Opn5ynUsqBwSLyM+I7UOwdGigTBYfVVQEwe/msZNX/j4pCJTIM14Fsw66Svo1oVrw==", + "dev": true, + "requires": { + "loader-utils": "^1.0.2", + "schema-utils": "^1.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "1.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true + }, + "filesize": { + "version": "3.6.1", + "resolved": "https://repo.micord.ru/repository/npm-all/filesize/-/filesize-3.6.1.tgz", + "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==", + "dev": true + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "finalhandler": { + "version": "1.1.0", + "resolved": "https://repo.micord.ru/repository/npm-all/finalhandler/-/finalhandler-1.1.0.tgz", + "integrity": "sha512-ejnvM9ZXYzp6PUPUyQBMBf0Co5VX2gr5H2VQe2Ui2jWXNlxv+PYZo8wpAymJNJdLsG1R4p+M4aynF8KuoUEwRw==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.1", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "statuses": "~1.3.1", + "unpipe": "~1.0.0" + } + }, + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://repo.micord.ru/repository/npm-all/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://repo.micord.ru/repository/npm-all/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "findup-sync": { + "version": "2.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/findup-sync/-/findup-sync-2.0.0.tgz", + "integrity": "sha512-vs+3unmJT45eczmcAZ6zMJtxN3l/QXeccaXQx5cu/MeJMhewVfoWZqibRkOxPnmoR59+Zy5hjabfQc6JLSah4g==", + "dev": true, + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^3.1.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://repo.micord.ru/repository/npm-all/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://repo.micord.ru/repository/npm-all/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "follow-redirects": { + "version": "1.15.6", + "resolved": "https://repo.micord.ru/repository/npm-all/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "dev": true + }, + "font-awesome": { + "version": "4.7.0", + "resolved": "https://repo.micord.ru/repository/npm-all/font-awesome/-/font-awesome-4.7.0.tgz", + "integrity": "sha512-U6kGnykA/6bFmg1M/oT9EkFeIYv7JlX3bozwQJWiiLz6L0w3F5vBVPxHlwyX/vtNq1ckcpRKOB9f2Qal/VtFpg==" + }, + "for-each": { + "version": "0.3.3", + "resolved": "https://repo.micord.ru/repository/npm-all/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "requires": { + "is-callable": "^1.1.3" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://repo.micord.ru/repository/npm-all/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", + "dev": true + }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://repo.micord.ru/repository/npm-all/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://repo.micord.ru/repository/npm-all/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://repo.micord.ru/repository/npm-all/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true + }, + "from2": { + "version": "2.3.0", + "resolved": "https://repo.micord.ru/repository/npm-all/from2/-/from2-2.3.0.tgz", + "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "fs-extra": { + "version": "3.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/fs-extra/-/fs-extra-3.0.1.tgz", + "integrity": "sha512-V3Z3WZWVUYd8hoCL5xfXJCaHWYzmtwW5XWYSlLgERi8PWd8bx1kUHUk8L1BT57e49oKnDDD180mjfrHc1yA9rg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^3.0.0", + "universalify": "^0.1.0" + } + }, + "fs-minipass": { + "version": "1.2.7", + "resolved": "https://repo.micord.ru/repository/npm-all/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "dev": true, + "requires": { + "minipass": "^2.6.0" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://repo.micord.ru/repository/npm-all/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://repo.micord.ru/repository/npm-all/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, + "function-bind": { + "version": "1.1.2", + "resolved": "https://repo.micord.ru/repository/npm-all/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true + }, + "function.prototype.name": { + "version": "1.1.6", + "resolved": "https://repo.micord.ru/repository/npm-all/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + } + }, + "functions-have-names": { + "version": "1.2.3", + "resolved": "https://repo.micord.ru/repository/npm-all/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true + }, + "genfun": { + "version": "5.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/genfun/-/genfun-5.0.0.tgz", + "integrity": "sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA==", + "dev": true + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://repo.micord.ru/repository/npm-all/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://repo.micord.ru/repository/npm-all/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "get-intrinsic": { + "version": "1.2.4", + "resolved": "https://repo.micord.ru/repository/npm-all/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dev": true, + "requires": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://repo.micord.ru/repository/npm-all/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "get-symbol-description": { + "version": "1.0.2", + "resolved": "https://repo.micord.ru/repository/npm-all/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "dev": true, + "requires": { + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://repo.micord.ru/repository/npm-all/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", + "dev": true + }, + "glob": { + "version": "7.2.3", + "resolved": "https://repo.micord.ru/repository/npm-all/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://repo.micord.ru/repository/npm-all/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://repo.micord.ru/repository/npm-all/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "global-modules": { + "version": "1.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://repo.micord.ru/repository/npm-all/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://repo.micord.ru/repository/npm-all/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "globalthis": { + "version": "1.0.4", + "resolved": "https://repo.micord.ru/repository/npm-all/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "requires": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + } + }, + "globby": { + "version": "7.1.1", + "resolved": "https://repo.micord.ru/repository/npm-all/globby/-/globby-7.1.1.tgz", + "integrity": "sha512-yANWAN2DUcBtuus5Cpd+SKROzXHs2iVXFZt/Ykrfz6SAXqacLX25NZpltE+39ceMexYF4TtEadjuSTw8+3wX4g==", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true + } + } + }, + "google-libphonenumber": { + "version": "3.0.9", + "resolved": "https://repo.micord.ru/repository/npm-all/google-libphonenumber/-/google-libphonenumber-3.0.9.tgz", + "integrity": "sha512-sXrkMbVvS7lgCBFm2ndNrkUJbXXvRlO4xmjIxM6/ljE2Ue1D611aler51vPvvm2bL1faTqkOV7R28tS5c/vDyA==" + }, + "gopd": { + "version": "1.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.3" + } + }, + "graceful-fs": { + "version": "4.2.11", + "resolved": "https://repo.micord.ru/repository/npm-all/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "gzip-size": { + "version": "5.1.1", + "resolved": "https://repo.micord.ru/repository/npm-all/gzip-size/-/gzip-size-5.1.1.tgz", + "integrity": "sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==", + "dev": true, + "requires": { + "duplexer": "^0.1.1", + "pify": "^4.0.1" + }, + "dependencies": { + "pify": { + "version": "4.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + } + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://repo.micord.ru/repository/npm-all/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true + } + } + }, + "has-bigints": { + "version": "1.0.2", + "resolved": "https://repo.micord.ru/repository/npm-all/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://repo.micord.ru/repository/npm-all/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "requires": { + "es-define-property": "^1.0.0" + } + }, + "has-proto": { + "version": "1.0.3", + "resolved": "https://repo.micord.ru/repository/npm-all/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "dev": true + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://repo.micord.ru/repository/npm-all/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true + }, + "has-tostringtag": { + "version": "1.0.2", + "resolved": "https://repo.micord.ru/repository/npm-all/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "requires": { + "has-symbols": "^1.0.3" + } + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.1.0", + "resolved": "https://repo.micord.ru/repository/npm-all/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.2", + "resolved": "https://repo.micord.ru/repository/npm-all/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://repo.micord.ru/repository/npm-all/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://repo.micord.ru/repository/npm-all/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "hasown": { + "version": "2.0.2", + "resolved": "https://repo.micord.ru/repository/npm-all/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "requires": { + "function-bind": "^1.1.2" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://repo.micord.ru/repository/npm-all/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://repo.micord.ru/repository/npm-all/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dev": true, + "requires": { + "parse-passwd": "^1.0.0" + } + }, + "hoopy": { + "version": "0.1.4", + "resolved": "https://repo.micord.ru/repository/npm-all/hoopy/-/hoopy-0.1.4.tgz", + "integrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==", + "dev": true + }, + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://repo.micord.ru/repository/npm-all/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "html-minifier-terser": { + "version": "5.1.1", + "resolved": "https://repo.micord.ru/repository/npm-all/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz", + "integrity": "sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==", + "dev": true, + "requires": { + "camel-case": "^4.1.1", + "clean-css": "^4.2.3", + "commander": "^4.1.1", + "he": "^1.2.0", + "param-case": "^3.0.3", + "relateurl": "^0.2.7", + "terser": "^4.6.3" + }, + "dependencies": { + "commander": { + "version": "4.1.1", + "resolved": "https://repo.micord.ru/repository/npm-all/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true + } + } + }, + "html-webpack-plugin": { + "version": "4.5.2", + "resolved": "https://repo.micord.ru/repository/npm-all/html-webpack-plugin/-/html-webpack-plugin-4.5.2.tgz", + "integrity": "sha512-q5oYdzjKUIPQVjOosjgvCHQOv9Ett9CYYHlgvJeXG0qQvdSojnBq4vAdQBwn1+yGveAwHCoe/rMR86ozX3+c2A==", + "dev": true, + "requires": { + "@types/html-minifier-terser": "^5.0.0", + "@types/tapable": "^1.0.5", + "@types/webpack": "^4.41.8", + "html-minifier-terser": "^5.0.1", + "loader-utils": "^1.2.3", + "lodash": "^4.17.20", + "pretty-error": "^2.1.1", + "tapable": "^1.1.3", + "util.promisify": "1.0.0" + } + }, + "htmlparser2": { + "version": "6.1.0", + "resolved": "https://repo.micord.ru/repository/npm-all/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "http-cache-semantics": { + "version": "3.8.1", + "resolved": "https://repo.micord.ru/repository/npm-all/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", + "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==", + "dev": true + }, + "http-errors": { + "version": "2.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "dependencies": { + "statuses": { + "version": "2.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true + } + } + }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://repo.micord.ru/repository/npm-all/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-agent": { + "version": "2.1.0", + "resolved": "https://repo.micord.ru/repository/npm-all/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", + "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", + "dev": true, + "requires": { + "agent-base": "4", + "debug": "3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://repo.micord.ru/repository/npm-all/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", + "dev": true + }, + "https-proxy-agent": { + "version": "2.2.4", + "resolved": "https://repo.micord.ru/repository/npm-all/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", + "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", + "dev": true, + "requires": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://repo.micord.ru/repository/npm-all/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://repo.micord.ru/repository/npm-all/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + } + } + }, + "humanize": { + "version": "0.0.9", + "resolved": "https://repo.micord.ru/repository/npm-all/humanize/-/humanize-0.0.9.tgz", + "integrity": "sha512-bvZZ7vXpr1RKoImjuQ45hJb5OvE2oJafHysiD/AL3nkqTZH2hFCjQ3YZfCd63FefDitbJze/ispUPP0gfDsT2Q==" + }, + "humanize-ms": { + "version": "1.2.1", + "resolved": "https://repo.micord.ru/repository/npm-all/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "dev": true, + "requires": { + "ms": "^2.0.0" + } + }, + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://repo.micord.ru/repository/npm-all/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + }, + "icss-replace-symbols": { + "version": "1.1.0", + "resolved": "https://repo.micord.ru/repository/npm-all/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", + "integrity": "sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg==", + "dev": true + }, + "icss-utils": { + "version": "4.1.1", + "resolved": "https://repo.micord.ru/repository/npm-all/icss-utils/-/icss-utils-4.1.1.tgz", + "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==", + "dev": true, + "requires": { + "postcss": "^7.0.14" + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://repo.micord.ru/repository/npm-all/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://repo.micord.ru/repository/npm-all/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==", + "dev": true + }, + "ignore": { + "version": "3.3.10", + "resolved": "https://repo.micord.ru/repository/npm-all/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "dev": true + }, + "ignore-walk": { + "version": "3.0.4", + "resolved": "https://repo.micord.ru/repository/npm-all/ignore-walk/-/ignore-walk-3.0.4.tgz", + "integrity": "sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==", + "dev": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "immutable": { + "version": "3.8.2", + "resolved": "https://repo.micord.ru/repository/npm-all/immutable/-/immutable-3.8.2.tgz", + "integrity": "sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==", + "dev": true + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "dev": true, + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://repo.micord.ru/repository/npm-all/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://repo.micord.ru/repository/npm-all/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://repo.micord.ru/repository/npm-all/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "ini": { + "version": "1.3.5", + "resolved": "https://repo.micord.ru/repository/npm-all/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "inputmask": { + "version": "5.0.5-cg.2", + "resolved": "https://repo.micord.ru/repository/npm-all/inputmask/-/inputmask-5.0.5-cg.2.tgz", + "integrity": "sha512-gd2NTwPedZNdZ97Gxcsm3xjpJnuo0blPczOdvi9p/OyKisx2byMultQrWvi9bF3pmRH0a8uC/5tt5wxPjXyTDw==" + }, + "inquirer": { + "version": "6.2.1", + "resolved": "https://repo.micord.ru/repository/npm-all/inquirer/-/inquirer-6.2.1.tgz", + "integrity": "sha512-088kl3DRT2dLU5riVMKKr1DlImd6X7smDhpXUCkJDCKvTEJeRiXh0G132HG9u5a+6Ylw9plFRY7RuTnwohYSpg==", + "dev": true, + "requires": { + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.0", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.0", + "figures": "^2.0.0", + "lodash": "^4.17.10", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^6.1.0", + "string-width": "^2.1.0", + "strip-ansi": "^5.0.0", + "through": "^2.3.6" + } + }, + "internal-slot": { + "version": "1.0.7", + "resolved": "https://repo.micord.ru/repository/npm-all/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "dev": true, + "requires": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + } + }, + "interpret": { + "version": "1.4.0", + "resolved": "https://repo.micord.ru/repository/npm-all/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "dev": true + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://repo.micord.ru/repository/npm-all/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==", + "dev": true + }, + "ip": { + "version": "1.1.5", + "resolved": "https://repo.micord.ru/repository/npm-all/ip/-/ip-1.1.5.tgz", + "integrity": "sha512-rBtCAQAJm8A110nbwn6YdveUnuZH3WrC36IwkRXxDnq53JvXA2NVQvB7IHyKomxK1MJ4VDNw3UtFDdXQ+AvLYA==", + "dev": true + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://repo.micord.ru/repository/npm-all/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true + }, + "is-accessor-descriptor": { + "version": "1.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/is-accessor-descriptor/-/is-accessor-descriptor-1.0.1.tgz", + "integrity": "sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==", + "dev": true, + "requires": { + "hasown": "^2.0.0" + } + }, + "is-array-buffer": { + "version": "3.0.4", + "resolved": "https://repo.micord.ru/repository/npm-all/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://repo.micord.ru/repository/npm-all/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "is-bigint": { + "version": "1.0.4", + "resolved": "https://repo.micord.ru/repository/npm-all/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "requires": { + "has-bigints": "^1.0.1" + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-boolean-object": { + "version": "1.1.2", + "resolved": "https://repo.micord.ru/repository/npm-all/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://repo.micord.ru/repository/npm-all/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-callable": { + "version": "1.2.7", + "resolved": "https://repo.micord.ru/repository/npm-all/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true + }, + "is-core-module": { + "version": "2.14.0", + "resolved": "https://repo.micord.ru/repository/npm-all/is-core-module/-/is-core-module-2.14.0.tgz", + "integrity": "sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==", + "dev": true, + "requires": { + "hasown": "^2.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/is-data-descriptor/-/is-data-descriptor-1.0.1.tgz", + "integrity": "sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==", + "dev": true, + "requires": { + "hasown": "^2.0.0" + } + }, + "is-data-view": { + "version": "1.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "dev": true, + "requires": { + "is-typed-array": "^1.1.13" + } + }, + "is-date-object": { + "version": "1.0.5", + "resolved": "https://repo.micord.ru/repository/npm-all/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-descriptor": { + "version": "0.1.7", + "resolved": "https://repo.micord.ru/repository/npm-all/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://repo.micord.ru/repository/npm-all/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://repo.micord.ru/repository/npm-all/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://repo.micord.ru/repository/npm-all/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-negative-zero": { + "version": "2.0.3", + "resolved": "https://repo.micord.ru/repository/npm-all/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://repo.micord.ru/repository/npm-all/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-number-like": { + "version": "1.0.8", + "resolved": "https://repo.micord.ru/repository/npm-all/is-number-like/-/is-number-like-1.0.8.tgz", + "integrity": "sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA==", + "dev": true, + "requires": { + "lodash.isfinite": "^3.3.2" + } + }, + "is-number-object": { + "version": "1.0.7", + "resolved": "https://repo.micord.ru/repository/npm-all/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha512-cnS56eR9SPAscL77ik76ATVqoPARTqPIVkMDVxRaWH06zT+6+CzIroYRJ0VVvm0Z1zfAvxvz9i/D3Ppjaqt5Nw==", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", + "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", + "dev": true, + "requires": { + "is-path-inside": "^1.0.0" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha512-qhsCR/Esx4U4hg/9I19OVUAJkGWtjRYHMRgUMZE2TDdj+Ag+kttZanLupfddNyglzz50cUlmWzUaI37GDfNx/g==", + "dev": true, + "requires": { + "path-is-inside": "^1.0.1" + } + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://repo.micord.ru/repository/npm-all/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://repo.micord.ru/repository/npm-all/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://repo.micord.ru/repository/npm-all/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-shared-array-buffer": { + "version": "1.0.3", + "resolved": "https://repo.micord.ru/repository/npm-all/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "dev": true, + "requires": { + "call-bind": "^1.0.7" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://repo.micord.ru/repository/npm-all/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "dev": true + }, + "is-string": { + "version": "1.0.7", + "resolved": "https://repo.micord.ru/repository/npm-all/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-symbol": { + "version": "1.0.4", + "resolved": "https://repo.micord.ru/repository/npm-all/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "is-typed-array": { + "version": "1.1.13", + "resolved": "https://repo.micord.ru/repository/npm-all/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "dev": true, + "requires": { + "which-typed-array": "^1.1.14" + } + }, + "is-weakref": { + "version": "1.0.2", + "resolved": "https://repo.micord.ru/repository/npm-all/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://repo.micord.ru/repository/npm-all/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://repo.micord.ru/repository/npm-all/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true + }, + "jquery": { + "version": "3.3.1", + "resolved": "https://repo.micord.ru/repository/npm-all/jquery/-/jquery-3.3.1.tgz", + "integrity": "sha512-Ubldcmxp5np52/ENotGxlLe6aGMvmF4R8S6tZjsP6Knsaxd/xp3Zrh50cG93lR6nPXyUFwzN3ZSOQI0wRJNdGg==" + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://repo.micord.ru/repository/npm-all/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "dependencies": { + "esprima": { + "version": "4.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + } + } + }, + "js-year-calendar": { + "version": "1.0.0-cg.2", + "resolved": "https://repo.micord.ru/repository/npm-all/js-year-calendar/-/js-year-calendar-1.0.0-cg.2.tgz", + "integrity": "sha512-7ciaNehZAHVxJrcn2t4jsU4i+nVsk25lKaFmv1hTNrERy9XPoT6ElyPRUkIpLYkIG3vQrf78uZbRqE5BcUPMfA==" + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://repo.micord.ru/repository/npm-all/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "jsgantt-improved": { + "version": "2.0.10-cg", + "resolved": "https://repo.micord.ru/repository/npm-all/jsgantt-improved/-/jsgantt-improved-2.0.10-cg.tgz", + "integrity": "sha1-apCGdd6vnqyZ3KdOgn3wEZkqGcQ=" + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://repo.micord.ru/repository/npm-all/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://repo.micord.ru/repository/npm-all/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json5": { + "version": "1.0.2", + "resolved": "https://repo.micord.ru/repository/npm-all/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.8", + "resolved": "https://repo.micord.ru/repository/npm-all/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true + } + } + }, + "jsonfile": { + "version": "3.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/jsonfile/-/jsonfile-3.0.1.tgz", + "integrity": "sha512-oBko6ZHlubVB5mRFkur5vgYR1UyqX+S6Y/oCfLhqNdcc2fYFlDpIoNc7AfKS1KOGcnNAkvsr0grLck9ANM815w==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsonparse": { + "version": "1.3.1", + "resolved": "https://repo.micord.ru/repository/npm-all/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", + "dev": true + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://repo.micord.ru/repository/npm-all/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==", + "dev": true, + "requires": { + "invert-kv": "^1.0.0" + } + }, + "leven": { + "version": "3.1.0", + "resolved": "https://repo.micord.ru/repository/npm-all/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true + }, + "levenary": { + "version": "1.1.1", + "resolved": "https://repo.micord.ru/repository/npm-all/levenary/-/levenary-1.1.1.tgz", + "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==", + "dev": true, + "requires": { + "leven": "^3.1.0" + } + }, + "limiter": { + "version": "1.1.5", + "resolved": "https://repo.micord.ru/repository/npm-all/limiter/-/limiter-1.1.5.tgz", + "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==", + "dev": true + }, + "lite-server": { + "version": "2.3.0", + "resolved": "https://repo.micord.ru/repository/npm-all/lite-server/-/lite-server-2.3.0.tgz", + "integrity": "sha512-EAx+mEn0Vus38VoXxAvQOtQfedTM8onF0fnLZak90XZ3q+1hsqTQX0vnRtfHMZ+9D1OYYUy3VKeUMEMk23N61Q==", + "dev": true, + "requires": { + "browser-sync": "^2.18.5", + "connect-history-api-fallback": "^1.2.0", + "connect-logger": "0.0.1", + "lodash": "^4.11.1", + "minimist": "1.2.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://repo.micord.ru/repository/npm-all/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha512-7Wl+Jz+IGWuSdgsQEJ4JunV0si/iMhg42MnQQG6h1R6TNeVenp4U9x5CC5v/gYqz/fENLQITAWXidNtVL0NNbw==", + "dev": true + } + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha512-3p6ZOGNbiX4CdvEd1VcE6yi78UrGNpjHO33noGwHCnT/o2fyllJDepsm8+mFFv/DvtwFHht5HIHSyOy5a+ChVQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + } + }, + "loader-runner": { + "version": "2.4.0", + "resolved": "https://repo.micord.ru/repository/npm-all/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "dev": true + }, + "loader-utils": { + "version": "1.2.3", + "resolved": "https://repo.micord.ru/repository/npm-all/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + } + }, + "localtunnel": { + "version": "2.0.2", + "resolved": "https://repo.micord.ru/repository/npm-all/localtunnel/-/localtunnel-2.0.2.tgz", + "integrity": "sha512-n418Cn5ynvJd7m/N1d9WVJISLJF/ellZnfsLnx8WBWGzxv/ntNcFkJ1o6se5quUhCplfLGBNL5tYHiq5WF3Nug==", + "dev": true, + "requires": { + "axios": "0.21.4", + "debug": "4.3.2", + "openurl": "1.1.1", + "yargs": "17.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://repo.micord.ru/repository/npm-all/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://repo.micord.ru/repository/npm-all/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://repo.micord.ru/repository/npm-all/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "debug": { + "version": "4.3.2", + "resolved": "https://repo.micord.ru/repository/npm-all/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://repo.micord.ru/repository/npm-all/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://repo.micord.ru/repository/npm-all/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://repo.micord.ru/repository/npm-all/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://repo.micord.ru/repository/npm-all/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yargs": { + "version": "17.1.1", + "resolved": "https://repo.micord.ru/repository/npm-all/yargs/-/yargs-17.1.1.tgz", + "integrity": "sha512-c2k48R0PwKIqKhPMWjeiF6y2xY/gPMUlro0sgxqXpbOIohWiLNXWslsootttv7E1e73QPAMQSg5FeySbVcpsPQ==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://repo.micord.ru/repository/npm-all/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true + } + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://repo.micord.ru/repository/npm-all/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "lodash-es": { + "version": "4.17.21", + "resolved": "https://repo.micord.ru/repository/npm-all/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", + "dev": true + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://repo.micord.ru/repository/npm-all/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true + }, + "lodash.isfinite": { + "version": "3.3.2", + "resolved": "https://repo.micord.ru/repository/npm-all/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz", + "integrity": "sha512-7FGG40uhC8Mm633uKW1r58aElFlBlxCrg9JfSi3P6aYiWmfiWF0PgMd86ZUsxE5GwWPdHoS2+48bwTh2VPkIQA==", + "dev": true + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://repo.micord.ru/repository/npm-all/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "lower-case": { + "version": "2.0.2", + "resolved": "https://repo.micord.ru/repository/npm-all/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "requires": { + "tslib": "^2.0.3" + }, + "dependencies": { + "tslib": { + "version": "2.6.3", + "resolved": "https://repo.micord.ru/repository/npm-all/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "dev": true + } + } + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://repo.micord.ru/repository/npm-all/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "magic-string": { + "version": "0.25.9", + "resolved": "https://repo.micord.ru/repository/npm-all/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.8" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://repo.micord.ru/repository/npm-all/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "dependencies": { + "pify": { + "version": "4.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + } + } + }, + "make-fetch-happen": { + "version": "4.0.2", + "resolved": "https://repo.micord.ru/repository/npm-all/make-fetch-happen/-/make-fetch-happen-4.0.2.tgz", + "integrity": "sha512-YMJrAjHSb/BordlsDEcVcPyTbiJKkzqMf48N8dAJZT9Zjctrkb6Yg4TY9Sq2AwSIQJFn5qBBKVTYt3vP5FMIHA==", + "dev": true, + "requires": { + "agentkeepalive": "^3.4.1", + "cacache": "^11.3.3", + "http-cache-semantics": "^3.8.1", + "http-proxy-agent": "^2.1.0", + "https-proxy-agent": "^2.2.1", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "node-fetch-npm": "^2.0.2", + "promise-retry": "^1.1.1", + "socks-proxy-agent": "^4.0.0", + "ssri": "^6.0.0" + } + }, + "mamacro": { + "version": "0.0.3", + "resolved": "https://repo.micord.ru/repository/npm-all/mamacro/-/mamacro-0.0.3.tgz", + "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==", + "dev": true + }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://repo.micord.ru/repository/npm-all/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, + "requires": { + "p-defer": "^1.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://repo.micord.ru/repository/npm-all/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://repo.micord.ru/repository/npm-all/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://repo.micord.ru/repository/npm-all/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true + }, + "mem": { + "version": "1.1.0", + "resolved": "https://repo.micord.ru/repository/npm-all/mem/-/mem-1.1.0.tgz", + "integrity": "sha512-nOBDrc/wgpkd3X/JOhMqYR+/eLqlfLP4oQfoBA6QExIxEl+GU01oyEkwWyueyO8110pUKijtiHGhEmYoOn88oQ==", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://repo.micord.ru/repository/npm-all/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://repo.micord.ru/repository/npm-all/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://repo.micord.ru/repository/npm-all/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "microplugin": { + "version": "0.0.3", + "resolved": "https://repo.micord.ru/repository/npm-all/microplugin/-/microplugin-0.0.3.tgz", + "integrity": "sha512-3wKXex4/iyALV0GX2juow66J9dabkEMgHeZAihdLTaRTzm0N+RubXioNPpfIQDPuBRxr3JbjNt7B0Lr/3yE9yQ==" + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://repo.micord.ru/repository/npm-all/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "mime": { + "version": "1.4.1", + "resolved": "https://repo.micord.ru/repository/npm-all/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", + "dev": true + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://repo.micord.ru/repository/npm-all/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://repo.micord.ru/repository/npm-all/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "requires": { + "mime-db": "1.52.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://repo.micord.ru/repository/npm-all/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "mini-css-extract-plugin": { + "version": "0.6.0", + "resolved": "https://repo.micord.ru/repository/npm-all/mini-css-extract-plugin/-/mini-css-extract-plugin-0.6.0.tgz", + "integrity": "sha512-79q5P7YGI6rdnVyIAV4NXpBQJFWdkzJxCim3Kog4078fM0piAaFlwocqbejdWtLW1cEzCexPrh6EdyFsPgVdAw==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "normalize-url": "^2.0.1", + "schema-utils": "^1.0.0", + "webpack-sources": "^1.1.0" + }, + "dependencies": { + "schema-utils": { + "version": "1.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", + "dev": true + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://repo.micord.ru/repository/npm-all/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.10", + "resolved": "https://repo.micord.ru/repository/npm-all/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha512-iotkTvxc+TwOm5Ieim8VnSNvCDjCK9S8G3scJ50ZthspSxa7jx50jkhYduuAtAjvfDUwSgOwf8+If99AlOEhyw==" + }, + "minipass": { + "version": "2.9.0", + "resolved": "https://repo.micord.ru/repository/npm-all/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "resolved": "https://repo.micord.ru/repository/npm-all/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "dev": true, + "requires": { + "minipass": "^2.9.0" + } + }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "dev": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "mitt": { + "version": "1.2.0", + "resolved": "https://repo.micord.ru/repository/npm-all/mitt/-/mitt-1.2.0.tgz", + "integrity": "sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw==", + "dev": true + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://repo.micord.ru/repository/npm-all/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://repo.micord.ru/repository/npm-all/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha512-SknJC52obPfGQPnjIkXbmA6+5H15E+fR+E4iR2oQ3zzCLbd7/ONua69R/Gw7AgkTLsRG+r5fzksYwWe1AgTyWA==", + "dev": true, + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://repo.micord.ru/repository/npm-all/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha512-miQKw5Hv4NS1Psg2517mV4e4dYNaO3++hjAvLOAzKqZ61rH8NS1SK+vbfBWZ5PY/Me/bEWhUwqMghEW5Fb9T7Q==", + "dev": true + } + } + }, + "moment": { + "version": "2.17.1", + "resolved": "https://repo.micord.ru/repository/npm-all/moment/-/moment-2.17.1.tgz", + "integrity": "sha512-FmIqcMMT72OcLqks+4iWx30Tv8gwIZBJvimtnGjT/9c0GeTe28xNxNRrzJQ4xxp/2aD43b8FgImx3ATko9s/qw==" + }, + "moment-timezone": { + "version": "0.5.11", + "resolved": "https://repo.micord.ru/repository/npm-all/moment-timezone/-/moment-timezone-0.5.11.tgz", + "integrity": "sha512-lQS0O0Iv2DZ/W/4jVe/lBgAJF1tsYcJVVWzQusR3te1XFCG1olmA9yNFg4KH5bYssS9i1ncGaQTZfme1ekb2FA==", + "requires": { + "moment": ">= 2.6.0" + } + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://repo.micord.ru/repository/npm-all/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==", + "dev": true + }, + "nan": { + "version": "2.20.0", + "resolved": "https://repo.micord.ru/repository/npm-all/nan/-/nan-2.20.0.tgz", + "integrity": "sha512-bk3gXBZDGILuuo/6sKtr0DQmSThYHLtNCdSdXk9YkxD/jK6X2vmCyyXBBxyqZ4XcnzTyYEAThfX3DCEnLf6igw==", + "dev": true, + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://repo.micord.ru/repository/npm-all/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://repo.micord.ru/repository/npm-all/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://repo.micord.ru/repository/npm-all/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "ngx-cookie": { + "version": "3.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/ngx-cookie/-/ngx-cookie-3.0.1.tgz", + "integrity": "sha512-TR/4lDHYUenVkXkwS28FgTTrvVNRTt9DvT2Sa3t1CluHXtY41j4DPsLZGHmTyiKcUv0uYVU/usdTUsIzSwK7Og==" + }, + "ngx-international-phone-number": { + "version": "1.0.6", + "resolved": "https://repo.micord.ru/repository/npm-all/ngx-international-phone-number/-/ngx-international-phone-number-1.0.6.tgz", + "integrity": "sha512-2wffmviAjkwDo9TuA/acll+EtWjturFAg7VE/ki3UBbX4CODuoC4FblvatZ3Bnnq7WQ2nSeOH4FjJmd0HE0Tog==" + }, + "ngx-toastr": { + "version": "10.2.0-cg", + "resolved": "https://repo.micord.ru/repository/npm-all/ngx-toastr/-/ngx-toastr-10.2.0-cg.tgz", + "integrity": "sha512-p6abaeYWi8Ayc+cmr/FLQ18/TrXxpcflvbZe+kVNu6x0MtanJUejBRbOBpVhM5HgmCZavx81lFoZA80q4hac6w==", + "requires": { + "tslib": "^1.9.0" + } + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://repo.micord.ru/repository/npm-all/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "no-case": { + "version": "3.0.4", + "resolved": "https://repo.micord.ru/repository/npm-all/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "requires": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + }, + "dependencies": { + "tslib": { + "version": "2.6.3", + "resolved": "https://repo.micord.ru/repository/npm-all/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "dev": true + } + } + }, + "node-fetch-npm": { + "version": "2.0.4", + "resolved": "https://repo.micord.ru/repository/npm-all/node-fetch-npm/-/node-fetch-npm-2.0.4.tgz", + "integrity": "sha512-iOuIQDWDyjhv9qSDrj9aq/klt6F9z1p2otB3AV7v3zBDcL/x+OfGsvGQZZCcMZbUf4Ujw1xGNQkjvGnVT22cKg==", + "dev": true, + "requires": { + "encoding": "^0.1.11", + "json-parse-better-errors": "^1.0.0", + "safe-buffer": "^5.1.1" + } + }, + "node-libs-browser": { + "version": "2.2.1", + "resolved": "https://repo.micord.ru/repository/npm-all/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "dev": true, + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://repo.micord.ru/repository/npm-all/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "dev": true + } + } + }, + "node-releases": { + "version": "2.0.14", + "resolved": "https://repo.micord.ru/repository/npm-all/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://repo.micord.ru/repository/npm-all/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://repo.micord.ru/repository/npm-all/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "normalize-url": { + "version": "2.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/normalize-url/-/normalize-url-2.0.1.tgz", + "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", + "dev": true, + "requires": { + "prepend-http": "^2.0.0", + "query-string": "^5.0.1", + "sort-keys": "^2.0.0" + } + }, + "npm-bundled": { + "version": "1.1.2", + "resolved": "https://repo.micord.ru/repository/npm-all/npm-bundled/-/npm-bundled-1.1.2.tgz", + "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", + "dev": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "dev": true + }, + "npm-package-arg": { + "version": "6.1.0", + "resolved": "https://repo.micord.ru/repository/npm-all/npm-package-arg/-/npm-package-arg-6.1.0.tgz", + "integrity": "sha512-zYbhP2k9DbJhA0Z3HKUePUgdB1x7MfIfKssC+WLPFMKTBZKpZh5m13PgexJjCq6KW7j17r0jHWcCpxEqnnncSA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.6.0", + "osenv": "^0.1.5", + "semver": "^5.5.0", + "validate-npm-package-name": "^3.0.0" + } + }, + "npm-packlist": { + "version": "1.4.8", + "resolved": "https://repo.micord.ru/repository/npm-all/npm-packlist/-/npm-packlist-1.4.8.tgz", + "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==", + "dev": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-pick-manifest": { + "version": "2.2.3", + "resolved": "https://repo.micord.ru/repository/npm-all/npm-pick-manifest/-/npm-pick-manifest-2.2.3.tgz", + "integrity": "sha512-+IluBC5K201+gRU85vFlUwX3PFShZAbAgDNp2ewJdWMVSppdo/Zih0ul2Ecky/X7b51J7LrrUAP+XOmOCvYZqA==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1", + "npm-package-arg": "^6.0.0", + "semver": "^5.4.1" + } + }, + "npm-registry-fetch": { + "version": "3.9.1", + "resolved": "https://repo.micord.ru/repository/npm-all/npm-registry-fetch/-/npm-registry-fetch-3.9.1.tgz", + "integrity": "sha512-VQCEZlydXw4AwLROAXWUR7QDfe2Y8Id/vpAgp6TI1/H78a4SiQ1kQrKZALm5/zxM5n4HIi+aYb+idUAV/RuY0Q==", + "dev": true, + "requires": { + "JSONStream": "^1.3.4", + "bluebird": "^3.5.1", + "figgy-pudding": "^3.4.1", + "lru-cache": "^5.1.1", + "make-fetch-happen": "^4.0.2", + "npm-package-arg": "^6.1.0" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://repo.micord.ru/repository/npm-all/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "nth-check": { + "version": "2.1.1", + "resolved": "https://repo.micord.ru/repository/npm-all/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "requires": { + "boolbase": "^1.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://repo.micord.ru/repository/npm-all/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://repo.micord.ru/repository/npm-all/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://repo.micord.ru/repository/npm-all/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://repo.micord.ru/repository/npm-all/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-inspect": { + "version": "1.13.2", + "resolved": "https://repo.micord.ru/repository/npm-all/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://repo.micord.ru/repository/npm-all/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.5", + "resolved": "https://repo.micord.ru/repository/npm-all/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.8", + "resolved": "https://repo.micord.ru/repository/npm-all/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.8.tgz", + "integrity": "sha512-qkHIGe4q0lSYMv0XI4SsBTJz3WaURhLvd0lKSgtVuOsJ2krg4SgMw3PIRQFMp07yi++UR3se2mkcLqsBNpBb/A==", + "dev": true, + "requires": { + "array.prototype.reduce": "^1.0.6", + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "gopd": "^1.0.1", + "safe-array-concat": "^1.1.2" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://repo.micord.ru/repository/npm-all/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://repo.micord.ru/repository/npm-all/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://repo.micord.ru/repository/npm-all/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "open": { + "version": "6.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/open/-/open-6.0.0.tgz", + "integrity": "sha512-/yb5mVZBz7mHLySMiSj2DcLtMBbFPJk5JBKEkHVZFxZAPzeg3L026O0T+lbdz1B2nyDnkClRSwRQJdeVUIF7zw==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "opener": { + "version": "1.5.2", + "resolved": "https://repo.micord.ru/repository/npm-all/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "dev": true + }, + "openurl": { + "version": "1.1.1", + "resolved": "https://repo.micord.ru/repository/npm-all/openurl/-/openurl-1.1.1.tgz", + "integrity": "sha512-d/gTkTb1i1GKz5k3XE3XFV/PxQ1k45zDqGP2OA7YhgsaLoqm6qRvARAZOFer1fcXritWlGBRCu/UgeS4HAnXAA==", + "dev": true + }, + "opn": { + "version": "5.3.0", + "resolved": "https://repo.micord.ru/repository/npm-all/opn/-/opn-5.3.0.tgz", + "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://repo.micord.ru/repository/npm-all/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha512-snN4O4TkigujZphWLN0E//nQmm7790RYaE53DdL7ZYwee2D8DDo9/EyYiKUfN3rneWUjhJnueija3G9I2i0h3g==", + "requires": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://repo.micord.ru/repository/npm-all/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", + "dev": true + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://repo.micord.ru/repository/npm-all/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", + "dev": true + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://repo.micord.ru/repository/npm-all/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "dev": true, + "requires": { + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://repo.micord.ru/repository/npm-all/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://repo.micord.ru/repository/npm-all/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "dev": true + }, + "p-is-promise": { + "version": "2.1.0", + "resolved": "https://repo.micord.ru/repository/npm-all/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", + "dev": true + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://repo.micord.ru/repository/npm-all/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "dev": true + }, + "pacote": { + "version": "9.4.0", + "resolved": "https://repo.micord.ru/repository/npm-all/pacote/-/pacote-9.4.0.tgz", + "integrity": "sha512-WQ1KL/phGMkedYEQx9ODsjj7xvwLSpdFJJdEXrLyw5SILMxcTNt5DTxT2Z93fXuLFYJBlZJdnwdalrQdB/rX5w==", + "dev": true, + "requires": { + "bluebird": "^3.5.3", + "cacache": "^11.3.2", + "figgy-pudding": "^3.5.1", + "get-stream": "^4.1.0", + "glob": "^7.1.3", + "lru-cache": "^5.1.1", + "make-fetch-happen": "^4.0.1", + "minimatch": "^3.0.4", + "minipass": "^2.3.5", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "normalize-package-data": "^2.4.0", + "npm-package-arg": "^6.1.0", + "npm-packlist": "^1.1.12", + "npm-pick-manifest": "^2.2.3", + "npm-registry-fetch": "^3.8.0", + "osenv": "^0.1.5", + "promise-inflight": "^1.0.1", + "promise-retry": "^1.1.1", + "protoduck": "^5.0.1", + "rimraf": "^2.6.2", + "safe-buffer": "^5.1.2", + "semver": "^5.6.0", + "ssri": "^6.0.1", + "tar": "^4.4.8", + "unique-filename": "^1.1.1", + "which": "^1.3.1" + } + }, + "pako": { + "version": "1.0.11", + "resolved": "https://repo.micord.ru/repository/npm-all/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, + "parallel-transform": { + "version": "1.2.0", + "resolved": "https://repo.micord.ru/repository/npm-all/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", + "dev": true, + "requires": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "param-case": { + "version": "3.0.4", + "resolved": "https://repo.micord.ru/repository/npm-all/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dev": true, + "requires": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + }, + "dependencies": { + "tslib": { + "version": "2.6.3", + "resolved": "https://repo.micord.ru/repository/npm-all/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "dev": true + } + } + }, + "parse-asn1": { + "version": "5.1.7", + "resolved": "https://repo.micord.ru/repository/npm-all/parse-asn1/-/parse-asn1-5.1.7.tgz", + "integrity": "sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg==", + "dev": true, + "requires": { + "asn1.js": "^4.10.1", + "browserify-aes": "^1.2.0", + "evp_bytestokey": "^1.0.3", + "hash-base": "~3.0", + "pbkdf2": "^3.1.2", + "safe-buffer": "^5.2.1" + }, + "dependencies": { + "hash-base": { + "version": "3.0.4", + "resolved": "https://repo.micord.ru/repository/npm-all/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha512-EeeoJKjTyt868liAlVmcv2ZsUfGHlE3Q+BICOXcZiwN3osr5Q/zFGYmTJpoIzuaSTAwndFy+GqhEwlU4L3j4Ow==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://repo.micord.ru/repository/npm-all/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://repo.micord.ru/repository/npm-all/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", + "dev": true + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://repo.micord.ru/repository/npm-all/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "pascal-case": { + "version": "3.1.2", + "resolved": "https://repo.micord.ru/repository/npm-all/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dev": true, + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + }, + "dependencies": { + "tslib": { + "version": "2.6.3", + "resolved": "https://repo.micord.ru/repository/npm-all/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "dev": true + } + } + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://repo.micord.ru/repository/npm-all/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", + "dev": true + }, + "path-browserify": { + "version": "0.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://repo.micord.ru/repository/npm-all/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://repo.micord.ru/repository/npm-all/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://repo.micord.ru/repository/npm-all/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://repo.micord.ru/repository/npm-all/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha512-dUnb5dXUf+kzhC/W/F4e5/SkluXIFf5VUHolW1Eg1irn1hGWjPGdsRcvYJ1nD6lhk8Ir7VM0bHJKsYTx8Jx9OQ==", + "dev": true, + "requires": { + "pify": "^2.0.0" + } + }, + "pbkdf2": { + "version": "3.1.2", + "resolved": "https://repo.micord.ru/repository/npm-all/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "picocolors": { + "version": "1.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", + "dev": true + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://repo.micord.ru/repository/npm-all/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://repo.micord.ru/repository/npm-all/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://repo.micord.ru/repository/npm-all/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://repo.micord.ru/repository/npm-all/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://repo.micord.ru/repository/npm-all/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + } + } + }, + "popper.js": { + "version": "1.14.7", + "resolved": "https://repo.micord.ru/repository/npm-all/popper.js/-/popper.js-1.14.7.tgz", + "integrity": "sha512-4q1hNvoUre/8srWsH7hnoSJ5xVmIL4qgz+s4qf2TnJIMyZFUFMGH+9vE7mXynAlHSZ/NdTmmow86muD0myUkVQ==" + }, + "portscanner": { + "version": "2.2.0", + "resolved": "https://repo.micord.ru/repository/npm-all/portscanner/-/portscanner-2.2.0.tgz", + "integrity": "sha512-IFroCz/59Lqa2uBvzK3bKDbDDIEaAY8XJ1jFxcLWTqosrsc32//P4VuSB2vZXoHiHqOmx8B5L5hnKOxL/7FlPw==", + "dev": true, + "requires": { + "async": "^2.6.0", + "is-number-like": "^1.0.3" + } + }, + "positioning": { + "version": "2.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/positioning/-/positioning-2.0.1.tgz", + "integrity": "sha512-DsAgM42kV/ObuwlRpAzDTjH9E8fGKkMDJHWFX+kfNXSxh7UCCQxEmdjv/Ws5Ft1XDnt3JT8fIDYeKNSE2TbttA==" + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://repo.micord.ru/repository/npm-all/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", + "dev": true + }, + "possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://repo.micord.ru/repository/npm-all/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://repo.micord.ru/repository/npm-all/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://repo.micord.ru/repository/npm-all/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "postcss-modules-extract-imports": { + "version": "2.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz", + "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==", + "dev": true, + "requires": { + "postcss": "^7.0.5" + } + }, + "postcss-modules-local-by-default": { + "version": "2.0.6", + "resolved": "https://repo.micord.ru/repository/npm-all/postcss-modules-local-by-default/-/postcss-modules-local-by-default-2.0.6.tgz", + "integrity": "sha512-oLUV5YNkeIBa0yQl7EYnxMgy4N6noxmiwZStaEJUSe2xPMcdNc8WmBQuQCx18H5psYbVxz8zoHk0RAAYZXP9gA==", + "dev": true, + "requires": { + "postcss": "^7.0.6", + "postcss-selector-parser": "^6.0.0", + "postcss-value-parser": "^3.3.1" + } + }, + "postcss-modules-scope": { + "version": "2.2.0", + "resolved": "https://repo.micord.ru/repository/npm-all/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz", + "integrity": "sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==", + "dev": true, + "requires": { + "postcss": "^7.0.6", + "postcss-selector-parser": "^6.0.0" + } + }, + "postcss-modules-values": { + "version": "2.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/postcss-modules-values/-/postcss-modules-values-2.0.0.tgz", + "integrity": "sha512-Ki7JZa7ff1N3EIMlPnGTZfUMe69FFwiQPnVSXC9mnn3jozCRBYIxiZd44yJOV2AmabOo4qFf8s0dC/+lweG7+w==", + "dev": true, + "requires": { + "icss-replace-symbols": "^1.1.0", + "postcss": "^7.0.6" + } + }, + "postcss-selector-parser": { + "version": "6.1.0", + "resolved": "https://repo.micord.ru/repository/npm-all/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz", + "integrity": "sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://repo.micord.ru/repository/npm-all/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", + "dev": true + }, + "pretty-error": { + "version": "2.1.2", + "resolved": "https://repo.micord.ru/repository/npm-all/pretty-error/-/pretty-error-2.1.2.tgz", + "integrity": "sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==", + "dev": true, + "requires": { + "lodash": "^4.17.20", + "renderkid": "^2.0.4" + } + }, + "process": { + "version": "0.11.10", + "resolved": "https://repo.micord.ru/repository/npm-all/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "dev": true + }, + "promise-retry": { + "version": "1.1.1", + "resolved": "https://repo.micord.ru/repository/npm-all/promise-retry/-/promise-retry-1.1.1.tgz", + "integrity": "sha512-StEy2osPr28o17bIW776GtwO6+Q+M9zPiZkYfosciUUMYqjhU/ffwRAH0zN2+uvGyUsn8/YICIHRzLbPacpZGw==", + "dev": true, + "requires": { + "err-code": "^1.0.0", + "retry": "^0.10.0" + } + }, + "protoduck": { + "version": "5.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/protoduck/-/protoduck-5.0.1.tgz", + "integrity": "sha512-WxoCeDCoCBY55BMvj4cAEjdVUFGRWed9ZxPlqTKYyw1nDDTQ4pqmnIMAGfJlg7Dx35uB/M+PHJPTmGOvaCaPTg==", + "dev": true, + "requires": { + "genfun": "^5.0.0" + } + }, + "proxy-addr": { + "version": "2.0.7", + "resolved": "https://repo.micord.ru/repository/npm-all/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://repo.micord.ru/repository/npm-all/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", + "dev": true + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://repo.micord.ru/repository/npm-all/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://repo.micord.ru/repository/npm-all/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://repo.micord.ru/repository/npm-all/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "punycode": { + "version": "2.3.1", + "resolved": "https://repo.micord.ru/repository/npm-all/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true + }, + "qs": { + "version": "6.12.1", + "resolved": "https://repo.micord.ru/repository/npm-all/qs/-/qs-6.12.1.tgz", + "integrity": "sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==", + "dev": true, + "requires": { + "side-channel": "^1.0.6" + } + }, + "query-string": { + "version": "5.1.1", + "resolved": "https://repo.micord.ru/repository/npm-all/query-string/-/query-string-5.1.1.tgz", + "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", + "dev": true, + "requires": { + "decode-uri-component": "^0.2.0", + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://repo.micord.ru/repository/npm-all/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://repo.micord.ru/repository/npm-all/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://repo.micord.ru/repository/npm-all/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://repo.micord.ru/repository/npm-all/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "raw-body": { + "version": "2.5.2", + "resolved": "https://repo.micord.ru/repository/npm-all/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "dependencies": { + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://repo.micord.ru/repository/npm-all/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + } + } + }, + "raw-loader": { + "version": "1.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/raw-loader/-/raw-loader-1.0.0.tgz", + "integrity": "sha512-Uqy5AqELpytJTRxYT4fhltcKPj0TyaEpzJDcGz7DFJi+pQOOi3GjR/DOdxTkTsF+NzhnldIoG6TORaBlInUuqA==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "schema-utils": "^1.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "1.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha512-eFIBOPW7FGjzBuk3hdXEuNSiTZS/xEMlH49HxMyzb0hyPfu4EhVjT2DH32K1hSSmVq4sebAWnZuuY5auISUTGA==", + "dev": true, + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha512-1orxQfbWGUiTn9XsPlChs6rLie/AV9jwZTGmu2NZw/CUDJQchXJFYE0Fq5j7+n558T1JhDWLdhyd1Zj+wLY//w==", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + } + }, + "readable-stream": { + "version": "2.3.8", + "resolved": "https://repo.micord.ru/repository/npm-all/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://repo.micord.ru/repository/npm-all/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://repo.micord.ru/repository/npm-all/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "dev": true, + "requires": { + "resolve": "^1.1.6" + } + }, + "redeyed": { + "version": "1.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/redeyed/-/redeyed-1.0.1.tgz", + "integrity": "sha512-8eEWsNCkV2rvwKLS1Cvp5agNjMhwRe2um+y32B2+3LqOzg4C9BBPs6vzAfV16Ivb8B9HPNKIqd8OrdBws8kNlQ==", + "requires": { + "esprima": "~3.0.0" + } + }, + "reflect-metadata": { + "version": "0.1.13", + "resolved": "https://repo.micord.ru/repository/npm-all/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" + }, + "regenerate": { + "version": "1.4.2", + "resolved": "https://repo.micord.ru/repository/npm-all/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "10.1.1", + "resolved": "https://repo.micord.ru/repository/npm-all/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", + "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", + "dev": true, + "requires": { + "regenerate": "^1.4.2" + } + }, + "regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://repo.micord.ru/repository/npm-all/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "dev": true + }, + "regenerator-transform": { + "version": "0.15.2", + "resolved": "https://repo.micord.ru/repository/npm-all/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://repo.micord.ru/repository/npm-all/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexp.prototype.flags": { + "version": "1.5.2", + "resolved": "https://repo.micord.ru/repository/npm-all/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "dev": true, + "requires": { + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" + } + }, + "regexpu-core": { + "version": "5.3.2", + "resolved": "https://repo.micord.ru/repository/npm-all/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "dev": true, + "requires": { + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + } + }, + "regjsparser": { + "version": "0.9.1", + "resolved": "https://repo.micord.ru/repository/npm-all/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://repo.micord.ru/repository/npm-all/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true + } + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://repo.micord.ru/repository/npm-all/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "dev": true + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://repo.micord.ru/repository/npm-all/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", + "dev": true + }, + "renderkid": { + "version": "2.0.7", + "resolved": "https://repo.micord.ru/repository/npm-all/renderkid/-/renderkid-2.0.7.tgz", + "integrity": "sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ==", + "dev": true, + "requires": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://repo.micord.ru/repository/npm-all/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "repeat-element": { + "version": "1.1.4", + "resolved": "https://repo.micord.ru/repository/npm-all/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://repo.micord.ru/repository/npm-all/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "dev": true + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://repo.micord.ru/repository/npm-all/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "resolve": { + "version": "1.22.8", + "resolved": "https://repo.micord.ru/repository/npm-all/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "requires": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg==", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", + "dev": true, + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://repo.micord.ru/repository/npm-all/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", + "dev": true + }, + "resp-modifier": { + "version": "6.0.2", + "resolved": "https://repo.micord.ru/repository/npm-all/resp-modifier/-/resp-modifier-6.0.2.tgz", + "integrity": "sha512-U1+0kWC/+4ncRFYqQWTx/3qkfE6a4B/h3XXgmXypfa0SPZ3t7cbbaFk297PjQS/yov24R18h6OZe6iZwj3NSLw==", + "dev": true, + "requires": { + "debug": "^2.2.0", + "minimatch": "^3.0.2" + } + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://repo.micord.ru/repository/npm-all/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "retry": { + "version": "0.10.1", + "resolved": "https://repo.micord.ru/repository/npm-all/retry/-/retry-0.10.1.tgz", + "integrity": "sha512-ZXUSQYTHdl3uS7IuCehYfMzKyIDBNoAuUblvy5oGO5UJSUTmStUUVPXbA9Qxd173Bgre53yCQczQuHgRWAdvJQ==", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://repo.micord.ru/repository/npm-all/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://repo.micord.ru/repository/npm-all/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "run-async": { + "version": "2.4.1", + "resolved": "https://repo.micord.ru/repository/npm-all/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://repo.micord.ru/repository/npm-all/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==", + "dev": true, + "requires": { + "aproba": "^1.1.1" + } + }, + "rx": { + "version": "4.1.0", + "resolved": "https://repo.micord.ru/repository/npm-all/rx/-/rx-4.1.0.tgz", + "integrity": "sha512-CiaiuN6gapkdl+cZUr67W6I8jquN4lkak3vtIsIWCl4XIPP8ffsoyN6/+PuGXnQy8Cu8W2y9Xxh31Rq4M6wUug==", + "dev": true + }, + "rxjs": { + "version": "6.4.0", + "resolved": "https://repo.micord.ru/repository/npm-all/rxjs/-/rxjs-6.4.0.tgz", + "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", + "requires": { + "tslib": "^1.9.0" + } + }, + "rxjs-compat": { + "version": "6.4.0", + "resolved": "https://repo.micord.ru/repository/npm-all/rxjs-compat/-/rxjs-compat-6.4.0.tgz", + "integrity": "sha512-eo/O8RS83hJdJukCtA+IF6qnqa8FPOuVo+OPCzgVi+dbTle9KCdNv97IcQO0WwNVik7DJLKmf0F8uwzc0q40vw==" + }, + "safe-array-concat": { + "version": "1.1.2", + "resolved": "https://repo.micord.ru/repository/npm-all/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://repo.micord.ru/repository/npm-all/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + } + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://repo.micord.ru/repository/npm-all/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://repo.micord.ru/repository/npm-all/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safe-regex-test": { + "version": "1.0.3", + "resolved": "https://repo.micord.ru/repository/npm-all/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "dev": true, + "requires": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-regex": "^1.1.4" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://repo.micord.ru/repository/npm-all/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "schema-utils": { + "version": "2.7.1", + "resolved": "https://repo.micord.ru/repository/npm-all/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://repo.micord.ru/repository/npm-all/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://repo.micord.ru/repository/npm-all/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + } + } + }, + "selectize": { + "version": "0.12.4-cg.10", + "resolved": "https://repo.micord.ru/repository/npm-all/selectize/-/selectize-0.12.4-cg.10.tgz", + "integrity": "sha512-hv6kGmsFfXzG40fOinr1hRmqXsSNQyir0U7VRLHUMUdOxegY9G6vMRGemvXpN2e72jelKdwhARwQIJ7BQhXZkQ==", + "requires": { + "microplugin": "0.0.3", + "sifter": "^0.5.1" + } + }, + "semver": { + "version": "5.6.0", + "resolved": "https://repo.micord.ru/repository/npm-all/semver/-/semver-5.6.0.tgz", + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", + "dev": true + }, + "semver-dsl": { + "version": "1.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/semver-dsl/-/semver-dsl-1.0.1.tgz", + "integrity": "sha512-e8BOaTo007E3dMuQQTnPdalbKTABKNS7UxoBIDnwOqRa+QwMrCPjynB8zAlPF6xlqUfdLPPLIJ13hJNmhtq8Ng==", + "dev": true, + "requires": { + "semver": "^5.3.0" + } + }, + "semver-intersect": { + "version": "1.4.0", + "resolved": "https://repo.micord.ru/repository/npm-all/semver-intersect/-/semver-intersect-1.4.0.tgz", + "integrity": "sha512-d8fvGg5ycKAq0+I6nfWeCx6ffaWJCsBYU0H2Rq56+/zFePYfT8mXkB3tWBSjR5BerkHNZ5eTPIk1/LBYas35xQ==", + "dev": true, + "requires": { + "semver": "^5.0.0" + } + }, + "send": { + "version": "0.16.2", + "resolved": "https://repo.micord.ru/repository/npm-all/send/-/send-0.16.2.tgz", + "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.6.2", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "~2.3.0", + "range-parser": "~1.2.0", + "statuses": "~1.4.0" + }, + "dependencies": { + "depd": { + "version": "1.1.2", + "resolved": "https://repo.micord.ru/repository/npm-all/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://repo.micord.ru/repository/npm-all/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://repo.micord.ru/repository/npm-all/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://repo.micord.ru/repository/npm-all/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "statuses": { + "version": "1.4.0", + "resolved": "https://repo.micord.ru/repository/npm-all/statuses/-/statuses-1.4.0.tgz", + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", + "dev": true + } + } + }, + "serialize-javascript": { + "version": "1.9.1", + "resolved": "https://repo.micord.ru/repository/npm-all/serialize-javascript/-/serialize-javascript-1.9.1.tgz", + "integrity": "sha512-0Vb/54WJ6k5v8sSWN09S0ora+Hnr+cX40r9F170nT+mSkaxltoE/7R3OrIdBSUv1OoiobH1QoWQbCnAO+e8J1A==", + "dev": true + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://repo.micord.ru/repository/npm-all/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "dependencies": { + "depd": { + "version": "1.1.2", + "resolved": "https://repo.micord.ru/repository/npm-all/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://repo.micord.ru/repository/npm-all/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://repo.micord.ru/repository/npm-all/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://repo.micord.ru/repository/npm-all/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://repo.micord.ru/repository/npm-all/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true + } + } + }, + "serve-static": { + "version": "1.13.2", + "resolved": "https://repo.micord.ru/repository/npm-all/serve-static/-/serve-static-1.13.2.tgz", + "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.2", + "send": "0.16.2" + } + }, + "server-destroy": { + "version": "1.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/server-destroy/-/server-destroy-1.0.1.tgz", + "integrity": "sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==", + "dev": true + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, + "set-function-length": { + "version": "1.2.2", + "resolved": "https://repo.micord.ru/repository/npm-all/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "requires": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + } + }, + "set-function-name": { + "version": "2.0.2", + "resolved": "https://repo.micord.ru/repository/npm-all/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "requires": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + } + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://repo.micord.ru/repository/npm-all/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://repo.micord.ru/repository/npm-all/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://repo.micord.ru/repository/npm-all/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://repo.micord.ru/repository/npm-all/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true + }, + "shelljs": { + "version": "0.8.5", + "resolved": "https://repo.micord.ru/repository/npm-all/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", + "dev": true, + "requires": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + } + }, + "side-channel": { + "version": "1.0.6", + "resolved": "https://repo.micord.ru/repository/npm-all/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + } + }, + "sifter": { + "version": "0.5.4", + "resolved": "https://repo.micord.ru/repository/npm-all/sifter/-/sifter-0.5.4.tgz", + "integrity": "sha512-t2yxTi/MM/ESup7XH5oMu8PUcttlekt269RqxARgnvS+7D/oP6RyA1x3M/5w8dG9OgkOyQ8hNRWelQ8Rj4TAQQ==", + "requires": { + "async": "^2.6.0", + "cardinal": "^1.0.0", + "csv-parse": "^4.6.5", + "humanize": "^0.0.9", + "optimist": "^0.6.1" + } + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://repo.micord.ru/repository/npm-all/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "slash": { + "version": "1.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/slash/-/slash-1.0.0.tgz", + "integrity": "sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==", + "dev": true + }, + "smart-buffer": { + "version": "4.2.0", + "resolved": "https://repo.micord.ru/repository/npm-all/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://repo.micord.ru/repository/npm-all/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://repo.micord.ru/repository/npm-all/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://repo.micord.ru/repository/npm-all/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-descriptor": { + "version": "1.0.3", + "resolved": "https://repo.micord.ru/repository/npm-all/is-descriptor/-/is-descriptor-1.0.3.tgz", + "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://repo.micord.ru/repository/npm-all/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "socket.io": { + "version": "4.7.5", + "resolved": "https://repo.micord.ru/repository/npm-all/socket.io/-/socket.io-4.7.5.tgz", + "integrity": "sha512-DmeAkF6cwM9jSfmp6Dr/5/mfMwb5Z5qRrSXLpo3Fq5SqyU8CMF15jIN4ZhfSwu35ksM1qmHZDQ/DK5XTccSTvA==", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "cors": "~2.8.5", + "debug": "~4.3.2", + "engine.io": "~6.5.2", + "socket.io-adapter": "~2.5.2", + "socket.io-parser": "~4.2.4" + }, + "dependencies": { + "debug": { + "version": "4.3.5", + "resolved": "https://repo.micord.ru/repository/npm-all/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://repo.micord.ru/repository/npm-all/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "socket.io-adapter": { + "version": "2.5.5", + "resolved": "https://repo.micord.ru/repository/npm-all/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz", + "integrity": "sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==", + "dev": true, + "requires": { + "debug": "~4.3.4", + "ws": "~8.17.1" + }, + "dependencies": { + "debug": { + "version": "4.3.5", + "resolved": "https://repo.micord.ru/repository/npm-all/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://repo.micord.ru/repository/npm-all/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "socket.io-client": { + "version": "4.7.5", + "resolved": "https://repo.micord.ru/repository/npm-all/socket.io-client/-/socket.io-client-4.7.5.tgz", + "integrity": "sha512-sJ/tqHOCe7Z50JCBCXrsY3I2k03iOiUe+tj1OmKeD2lXPiGH/RUCdTZFoqVyN7l1MnpIzPrGtLcijffmeouNlQ==", + "dev": true, + "requires": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.2", + "engine.io-client": "~6.5.2", + "socket.io-parser": "~4.2.4" + }, + "dependencies": { + "debug": { + "version": "4.3.5", + "resolved": "https://repo.micord.ru/repository/npm-all/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://repo.micord.ru/repository/npm-all/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "socket.io-parser": { + "version": "4.2.4", + "resolved": "https://repo.micord.ru/repository/npm-all/socket.io-parser/-/socket.io-parser-4.2.4.tgz", + "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", + "dev": true, + "requires": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" + }, + "dependencies": { + "debug": { + "version": "4.3.5", + "resolved": "https://repo.micord.ru/repository/npm-all/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://repo.micord.ru/repository/npm-all/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "socks": { + "version": "2.3.3", + "resolved": "https://repo.micord.ru/repository/npm-all/socks/-/socks-2.3.3.tgz", + "integrity": "sha512-o5t52PCNtVdiOvzMry7wU4aOqYWL0PeCXRWBEiJow4/i/wr+wpsJQ9awEu1EonLIqsfGd5qSgDdxEOvCdmBEpA==", + "dev": true, + "requires": { + "ip": "1.1.5", + "smart-buffer": "^4.1.0" + } + }, + "socks-proxy-agent": { + "version": "4.0.2", + "resolved": "https://repo.micord.ru/repository/npm-all/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz", + "integrity": "sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg==", + "dev": true, + "requires": { + "agent-base": "~4.2.1", + "socks": "~2.3.2" + }, + "dependencies": { + "agent-base": { + "version": "4.2.1", + "resolved": "https://repo.micord.ru/repository/npm-all/agent-base/-/agent-base-4.2.1.tgz", + "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==", + "dev": true, + "requires": { + "es6-promisify": "^5.0.0" + } + } + } + }, + "sort-keys": { + "version": "2.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/sort-keys/-/sort-keys-2.0.0.tgz", + "integrity": "sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==", + "dev": true, + "requires": { + "is-plain-obj": "^1.0.0" + } + }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true + }, + "source-map": { + "version": "0.5.6", + "resolved": "https://repo.micord.ru/repository/npm-all/source-map/-/source-map-0.5.6.tgz", + "integrity": "sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://repo.micord.ru/repository/npm-all/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://repo.micord.ru/repository/npm-all/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://repo.micord.ru/repository/npm-all/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "source-map-url": { + "version": "0.4.1", + "resolved": "https://repo.micord.ru/repository/npm-all/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "dev": true + }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://repo.micord.ru/repository/npm-all/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "spdx-correct": { + "version": "3.2.0", + "resolved": "https://repo.micord.ru/repository/npm-all/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://repo.micord.ru/repository/npm-all/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.18", + "resolved": "https://repo.micord.ru/repository/npm-all/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz", + "integrity": "sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==", + "dev": true + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://repo.micord.ru/repository/npm-all/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.1.3", + "resolved": "https://repo.micord.ru/repository/npm-all/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "dev": true + }, + "ssri": { + "version": "6.0.2", + "resolved": "https://repo.micord.ru/repository/npm-all/ssri/-/ssri-6.0.2.tgz", + "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://repo.micord.ru/repository/npm-all/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://repo.micord.ru/repository/npm-all/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "statuses": { + "version": "1.3.1", + "resolved": "https://repo.micord.ru/repository/npm-all/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha512-wuTCPGlJONk/a1kqZ4fQM2+908lC7fa7nPYpTC1EhnvqLX/IICbeP1OZGDtA374trpSq68YubKUMo8oRhN46yg==", + "dev": true + }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://repo.micord.ru/repository/npm-all/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-each": { + "version": "1.2.3", + "resolved": "https://repo.micord.ru/repository/npm-all/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://repo.micord.ru/repository/npm-all/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "stream-shift": { + "version": "1.0.3", + "resolved": "https://repo.micord.ru/repository/npm-all/stream-shift/-/stream-shift-1.0.3.tgz", + "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==", + "dev": true + }, + "stream-throttle": { + "version": "0.1.3", + "resolved": "https://repo.micord.ru/repository/npm-all/stream-throttle/-/stream-throttle-0.1.3.tgz", + "integrity": "sha512-889+B9vN9dq7/vLbGyuHeZ6/ctf5sNuGWsDy89uNxkFTAgzy0eK7+w5fL3KLNRTkLle7EgZGvHUphZW0Q26MnQ==", + "dev": true, + "requires": { + "commander": "^2.2.0", + "limiter": "^1.0.5" + } + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://repo.micord.ru/repository/npm-all/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://repo.micord.ru/repository/npm-all/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "string.prototype.trim": { + "version": "1.2.9", + "resolved": "https://repo.micord.ru/repository/npm-all/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" + } + }, + "string.prototype.trimend": { + "version": "1.0.8", + "resolved": "https://repo.micord.ru/repository/npm-all/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + } + }, + "string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://repo.micord.ru/repository/npm-all/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://repo.micord.ru/repository/npm-all/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://repo.micord.ru/repository/npm-all/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://repo.micord.ru/repository/npm-all/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + } + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", + "dev": true + }, + "style-loader": { + "version": "0.23.1", + "resolved": "https://repo.micord.ru/repository/npm-all/style-loader/-/style-loader-0.23.1.tgz", + "integrity": "sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "schema-utils": "^1.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "1.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://repo.micord.ru/repository/npm-all/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, + "symbol-observable": { + "version": "1.2.0", + "resolved": "https://repo.micord.ru/repository/npm-all/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", + "dev": true + }, + "systemjs": { + "version": "0.21.4", + "resolved": "https://repo.micord.ru/repository/npm-all/systemjs/-/systemjs-0.21.4.tgz", + "integrity": "sha512-l1O8boHjAIY5UG74Xk4B63LK9QbFxv/FkQa//GGGWaTeQoMhTsWnFrYwPWBScSF4xQFMO/+v9QB4i633h8Oytw==" + }, + "systemjs-plugin-babel": { + "version": "0.0.25", + "resolved": "https://repo.micord.ru/repository/npm-all/systemjs-plugin-babel/-/systemjs-plugin-babel-0.0.25.tgz", + "integrity": "sha512-RMKSizWWlw4+IpDB385ugxn7Owd9W+HEtjYDQ6yO1FpsnER/vk6FbXRweUF+mvRi6EHgk8vDdUdtui7ReDwX3w==" + }, + "tapable": { + "version": "1.1.3", + "resolved": "https://repo.micord.ru/repository/npm-all/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "dev": true + }, + "tar": { + "version": "4.4.19", + "resolved": "https://repo.micord.ru/repository/npm-all/tar/-/tar-4.4.19.tgz", + "integrity": "sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==", + "dev": true, + "requires": { + "chownr": "^1.1.4", + "fs-minipass": "^1.2.7", + "minipass": "^2.9.0", + "minizlib": "^1.3.3", + "mkdirp": "^0.5.5", + "safe-buffer": "^5.2.1", + "yallist": "^3.1.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.8", + "resolved": "https://repo.micord.ru/repository/npm-all/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://repo.micord.ru/repository/npm-all/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://repo.micord.ru/repository/npm-all/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "terser": { + "version": "4.8.1", + "resolved": "https://repo.micord.ru/repository/npm-all/terser/-/terser-4.8.1.tgz", + "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://repo.micord.ru/repository/npm-all/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "terser-webpack-plugin": { + "version": "1.2.4", + "resolved": "https://repo.micord.ru/repository/npm-all/terser-webpack-plugin/-/terser-webpack-plugin-1.2.4.tgz", + "integrity": "sha512-64IiILNQlACWZLzFlpzNaG0bpQ4ytaB7fwOsbpsdIV70AfLUmIGGeuKL0YV2WmtcrURjE2aOvHD4/lrFV3Rg+Q==", + "dev": true, + "requires": { + "cacache": "^11.3.2", + "find-cache-dir": "^2.0.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^1.7.0", + "source-map": "^0.6.1", + "terser": "^3.17.0", + "webpack-sources": "^1.3.0", + "worker-farm": "^1.7.0" + }, + "dependencies": { + "schema-utils": { + "version": "1.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://repo.micord.ru/repository/npm-all/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "terser": { + "version": "3.17.0", + "resolved": "https://repo.micord.ru/repository/npm-all/terser/-/terser-3.17.0.tgz", + "integrity": "sha512-/FQzzPJmCpjAH9Xvk2paiWrFq+5M6aVOf+2KRbwhByISDX/EujxsK+BAvrhb6H+2rtrLCHK9N01wO014vrIwVQ==", + "dev": true, + "requires": { + "commander": "^2.19.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.10" + } + } + } + }, + "through": { + "version": "2.3.8", + "resolved": "https://repo.micord.ru/repository/npm-all/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "through2": { + "version": "2.0.5", + "resolved": "https://repo.micord.ru/repository/npm-all/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "timers-browserify": { + "version": "2.0.12", + "resolved": "https://repo.micord.ru/repository/npm-all/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", + "dev": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://repo.micord.ru/repository/npm-all/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://repo.micord.ru/repository/npm-all/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://repo.micord.ru/repository/npm-all/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://repo.micord.ru/repository/npm-all/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://repo.micord.ru/repository/npm-all/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true + }, + "tryer": { + "version": "1.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/tryer/-/tryer-1.0.1.tgz", + "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==", + "dev": true + }, + "tslib": { + "version": "1.9.3", + "resolved": "https://repo.micord.ru/repository/npm-all/tslib/-/tslib-1.9.3.tgz", + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" + }, + "tslint": { + "version": "5.13.1", + "resolved": "https://repo.micord.ru/repository/npm-all/tslint/-/tslint-5.13.1.tgz", + "integrity": "sha512-fplQqb2miLbcPhyHoMV4FU9PtNRbgmm/zI5d3SZwwmJQM6V0eodju+hplpyfhLWpmwrDNfNYU57uYRb8s0zZoQ==", + "dev": true, + "requires": { + "babel-code-frame": "^6.22.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^3.2.0", + "glob": "^7.1.1", + "js-yaml": "^3.7.0", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.8.0", + "tsutils": "^2.27.2" + } + }, + "tsutils": { + "version": "2.29.0", + "resolved": "https://repo.micord.ru/repository/npm-all/tsutils/-/tsutils-2.29.0.tgz", + "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://repo.micord.ru/repository/npm-all/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://repo.micord.ru/repository/npm-all/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + } + }, + "typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + } + }, + "typed-array-byte-offset": { + "version": "1.0.2", + "resolved": "https://repo.micord.ru/repository/npm-all/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + } + }, + "typed-array-length": { + "version": "1.0.6", + "resolved": "https://repo.micord.ru/repository/npm-all/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://repo.micord.ru/repository/npm-all/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "dev": true + }, + "typescript": { + "version": "3.2.4", + "resolved": "https://repo.micord.ru/repository/npm-all/typescript/-/typescript-3.2.4.tgz", + "integrity": "sha512-0RNDbSdEokBeEAkgNbxJ+BLwSManFy9TeXz8uW+48j/xhEXv1ePME60olyzw2XzUqUBNAYFeJadIqAgNqIACwg==", + "dev": true + }, + "typescript-parser": { + "version": "2.6.1-cg-fork", + "resolved": "https://repo.micord.ru/repository/npm-all/typescript-parser/-/typescript-parser-2.6.1-cg-fork.tgz", + "integrity": "sha1-Ia5YavQLprglaFhMGtwsgcehjlw=", + "dev": true, + "requires": { + "lodash": "^4.17.10", + "lodash-es": "^4.17.10", + "tslib": "^1.9.3", + "typescript": "3.2.4" + } + }, + "ua-parser-js": { + "version": "1.0.38", + "resolved": "https://repo.micord.ru/repository/npm-all/ua-parser-js/-/ua-parser-js-1.0.38.tgz", + "integrity": "sha512-Aq5ppTOfvrCMgAPneW1HfWj66Xi7XL+/mIy996R1/CLS/rcyJQm6QZdsKrUeivDFQ+Oc9Wyuwor8Ze8peEoUoQ==", + "dev": true + }, + "unbox-primitive": { + "version": "1.0.2", + "resolved": "https://repo.micord.ru/repository/npm-all/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + } + }, + "undici-types": { + "version": "5.26.5", + "resolved": "https://repo.micord.ru/repository/npm-all/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, + "unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://repo.micord.ru/repository/npm-all/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://repo.micord.ru/repository/npm-all/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "dev": true + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://repo.micord.ru/repository/npm-all/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "resolved": "https://repo.micord.ru/repository/npm-all/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://repo.micord.ru/repository/npm-all/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://repo.micord.ru/repository/npm-all/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://repo.micord.ru/repository/npm-all/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://repo.micord.ru/repository/npm-all/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", + "dev": true + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://repo.micord.ru/repository/npm-all/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true + }, + "update-browserslist-db": { + "version": "1.0.16", + "resolved": "https://repo.micord.ru/repository/npm-all/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", + "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", + "dev": true, + "requires": { + "escalade": "^3.1.2", + "picocolors": "^1.0.1" + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://repo.micord.ru/repository/npm-all/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://repo.micord.ru/repository/npm-all/urix/-/urix-0.1.0.tgz", + "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", + "dev": true + }, + "url": { + "version": "0.11.3", + "resolved": "https://repo.micord.ru/repository/npm-all/url/-/url-0.11.3.tgz", + "integrity": "sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==", + "dev": true, + "requires": { + "punycode": "^1.4.1", + "qs": "^6.11.2" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://repo.micord.ru/repository/npm-all/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "dev": true + } + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://repo.micord.ru/repository/npm-all/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "util": { + "version": "0.11.1", + "resolved": "https://repo.micord.ru/repository/npm-all/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dev": true, + "requires": { + "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://repo.micord.ru/repository/npm-all/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://repo.micord.ru/repository/npm-all/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "util.promisify": { + "version": "1.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/util.promisify/-/util.promisify-1.0.0.tgz", + "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" + } + }, + "utila": { + "version": "0.4.0", + "resolved": "https://repo.micord.ru/repository/npm-all/utila/-/utila-0.4.0.tgz", + "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://repo.micord.ru/repository/npm-all/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + }, + "v8-compile-cache": { + "version": "2.4.0", + "resolved": "https://repo.micord.ru/repository/npm-all/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz", + "integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://repo.micord.ru/repository/npm-all/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "validate-npm-package-name": { + "version": "3.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==", + "dev": true, + "requires": { + "builtins": "^1.0.3" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://repo.micord.ru/repository/npm-all/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true + }, + "vm-browserify": { + "version": "1.1.2", + "resolved": "https://repo.micord.ru/repository/npm-all/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true + }, + "watchpack": { + "version": "1.7.5", + "resolved": "https://repo.micord.ru/repository/npm-all/watchpack/-/watchpack-1.7.5.tgz", + "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", + "dev": true, + "requires": { + "chokidar": "^3.4.1", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0", + "watchpack-chokidar2": "^2.0.1" + }, + "dependencies": { + "anymatch": { + "version": "3.1.3", + "resolved": "https://repo.micord.ru/repository/npm-all/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "optional": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "binary-extensions": { + "version": "2.3.0", + "resolved": "https://repo.micord.ru/repository/npm-all/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "optional": true + }, + "braces": { + "version": "3.0.3", + "resolved": "https://repo.micord.ru/repository/npm-all/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "optional": true, + "requires": { + "fill-range": "^7.1.1" + } + }, + "chokidar": { + "version": "3.6.0", + "resolved": "https://repo.micord.ru/repository/npm-all/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "optional": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "fill-range": { + "version": "7.1.1", + "resolved": "https://repo.micord.ru/repository/npm-all/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "optional": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "fsevents": { + "version": "2.3.3", + "resolved": "https://repo.micord.ru/repository/npm-all/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "optional": true + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://repo.micord.ru/repository/npm-all/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "optional": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://repo.micord.ru/repository/npm-all/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "optional": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "optional": true + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "optional": true + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://repo.micord.ru/repository/npm-all/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "optional": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "optional": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "watchpack-chokidar2": { + "version": "2.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz", + "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==", + "dev": true, + "optional": true, + "requires": { + "chokidar": "^2.1.8" + }, + "dependencies": { + "chokidar": { + "version": "2.1.8", + "resolved": "https://repo.micord.ru/repository/npm-all/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "optional": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "optional": true + } + } + }, + "webpack": { + "version": "4.32.2", + "resolved": "https://repo.micord.ru/repository/npm-all/webpack/-/webpack-4.32.2.tgz", + "integrity": "sha512-F+H2Aa1TprTQrpodRAWUMJn7A8MgDx82yQiNvYMaj3d1nv3HetKU0oqEulL9huj8enirKi8KvEXQ3QtuHF89Zg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-module-context": "1.8.5", + "@webassemblyjs/wasm-edit": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5", + "acorn": "^6.0.5", + "acorn-dynamic-import": "^4.0.0", + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0", + "chrome-trace-event": "^1.0.0", + "enhanced-resolve": "^4.1.0", + "eslint-scope": "^4.0.0", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.3.0", + "loader-utils": "^1.1.0", + "memory-fs": "~0.4.1", + "micromatch": "^3.1.8", + "mkdirp": "~0.5.0", + "neo-async": "^2.5.0", + "node-libs-browser": "^2.0.0", + "schema-utils": "^1.0.0", + "tapable": "^1.1.0", + "terser-webpack-plugin": "^1.1.0", + "watchpack": "^1.5.0", + "webpack-sources": "^1.3.0" + }, + "dependencies": { + "schema-utils": { + "version": "1.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "webpack-bundle-analyzer": { + "version": "3.3.2", + "resolved": "https://repo.micord.ru/repository/npm-all/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.3.2.tgz", + "integrity": "sha512-7qvJLPKB4rRWZGjVp5U1KEjwutbDHSKboAl0IfafnrdXMrgC0tOtZbQD6Rw0u4cmpgRN4O02Fc0t8eAT+FgGzA==", + "dev": true, + "requires": { + "acorn": "^6.0.7", + "acorn-walk": "^6.1.1", + "bfj": "^6.1.1", + "chalk": "^2.4.1", + "commander": "^2.18.0", + "ejs": "^2.6.1", + "express": "^4.16.3", + "filesize": "^3.6.1", + "gzip-size": "^5.0.0", + "lodash": "^4.17.10", + "mkdirp": "^0.5.1", + "opener": "^1.5.1", + "ws": "^6.0.0" + }, + "dependencies": { + "ws": { + "version": "6.2.3", + "resolved": "https://repo.micord.ru/repository/npm-all/ws/-/ws-6.2.3.tgz", + "integrity": "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + } + } + }, + "webpack-cli": { + "version": "3.3.2", + "resolved": "https://repo.micord.ru/repository/npm-all/webpack-cli/-/webpack-cli-3.3.2.tgz", + "integrity": "sha512-FLkobnaJJ+03j5eplxlI0TUxhGCOdfewspIGuvDVtpOlrAuKMFC57K42Ukxqs1tn8947/PM6tP95gQc0DCzRYA==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "cross-spawn": "^6.0.5", + "enhanced-resolve": "^4.1.0", + "findup-sync": "^2.0.0", + "global-modules": "^1.0.0", + "import-local": "^2.0.0", + "interpret": "^1.1.0", + "loader-utils": "^1.1.0", + "supports-color": "^5.5.0", + "v8-compile-cache": "^2.0.2", + "yargs": "^12.0.5" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://repo.micord.ru/repository/npm-all/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://repo.micord.ru/repository/npm-all/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://repo.micord.ru/repository/npm-all/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, + "requires": { + "invert-kv": "^2.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "mem": { + "version": "4.3.0", + "resolved": "https://repo.micord.ru/repository/npm-all/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "dev": true, + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://repo.micord.ru/repository/npm-all/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "os-locale": { + "version": "3.1.0", + "resolved": "https://repo.micord.ru/repository/npm-all/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://repo.micord.ru/repository/npm-all/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://repo.micord.ru/repository/npm-all/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "yargs": { + "version": "12.0.5", + "resolved": "https://repo.micord.ru/repository/npm-all/yargs/-/yargs-12.0.5.tgz", + "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" + } + }, + "yargs-parser": { + "version": "11.1.1", + "resolved": "https://repo.micord.ru/repository/npm-all/yargs-parser/-/yargs-parser-11.1.1.tgz", + "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "webpack-log": { + "version": "2.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/webpack-log/-/webpack-log-2.0.0.tgz", + "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", + "dev": true, + "requires": { + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" + } + }, + "webpack-sources": { + "version": "1.3.0", + "resolved": "https://repo.micord.ru/repository/npm-all/webpack-sources/-/webpack-sources-1.3.0.tgz", + "integrity": "sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA==", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://repo.micord.ru/repository/npm-all/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://repo.micord.ru/repository/npm-all/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://repo.micord.ru/repository/npm-all/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "which-module": { + "version": "2.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", + "dev": true + }, + "which-typed-array": { + "version": "1.1.15", + "resolved": "https://repo.micord.ru/repository/npm-all/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + } + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://repo.micord.ru/repository/npm-all/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha512-1tMA907+V4QmxV7dbRvb4/8MaRALK6q9Abid3ndMYnbyo8piisCmeONVqVSXqQA3KaP4SLt5b7ud6E2sqP8TFw==" + }, + "worker-farm": { + "version": "1.7.0", + "resolved": "https://repo.micord.ru/repository/npm-all/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", + "dev": true, + "requires": { + "errno": "~0.1.7" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://repo.micord.ru/repository/npm-all/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://repo.micord.ru/repository/npm-all/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://repo.micord.ru/repository/npm-all/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://repo.micord.ru/repository/npm-all/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "ws": { + "version": "8.17.1", + "resolved": "https://repo.micord.ru/repository/npm-all/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "dev": true + }, + "xhr2": { + "version": "0.1.4", + "resolved": "https://repo.micord.ru/repository/npm-all/xhr2/-/xhr2-0.1.4.tgz", + "integrity": "sha512-3QGhDryRzTbIDj+waTRvMBe8SyPhW79kz3YnNb+HQt/6LPYQT3zT3Jt0Y8pBofZqQX26x8Ecfv0FXR72uH5VpA==", + "dev": true + }, + "xmlhttprequest-ssl": { + "version": "2.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", + "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==", + "dev": true + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://repo.micord.ru/repository/npm-all/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://repo.micord.ru/repository/npm-all/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://repo.micord.ru/repository/npm-all/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "yargs": { + "version": "9.0.1", + "resolved": "https://repo.micord.ru/repository/npm-all/yargs/-/yargs-9.0.1.tgz", + "integrity": "sha512-XS0NJoM9Iz0azh1cdgfLF5VFK6BSWfrrqA0V2tIx3fV6aGrWCseVDwOkIBg746ev0hes59od5ZvQAfdET4H0pw==", + "dev": true, + "requires": { + "camelcase": "^4.1.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "read-pkg-up": "^2.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^7.0.0" + }, + "dependencies": { + "y18n": { + "version": "3.2.2", + "resolved": "https://repo.micord.ru/repository/npm-all/y18n/-/y18n-3.2.2.tgz", + "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", + "dev": true + } + } + }, + "yargs-parser": { + "version": "7.0.0", + "resolved": "https://repo.micord.ru/repository/npm-all/yargs-parser/-/yargs-parser-7.0.0.tgz", + "integrity": "sha512-WhzC+xgstid9MbVUktco/bf+KJG+Uu6vMX0LN1sLJvwmbCQVxb4D8LzogobonKycNasCZLdOzTAk1SK7+K7swg==", + "dev": true, + "requires": { + "camelcase": "^4.1.0" + } + }, + "zone.js": { + "version": "0.8.29", + "resolved": "https://repo.micord.ru/repository/npm-all/zone.js/-/zone.js-0.8.29.tgz", + "integrity": "sha512-mla2acNCMkWXBD+c+yeUrBUrzOxYMNFdQ6FGfigGGtEVBPJx07BQeJekjt9DmH1FtZek4E9rE1eRR9qQpxACOQ==" + } + } +} diff --git a/frontend/package.json b/frontend/package.json new file mode 100644 index 0000000..c3ac1ab --- /dev/null +++ b/frontend/package.json @@ -0,0 +1,101 @@ +{ + "name": "webbpm-frontend", + "version": "1.0.0", + "scripts": { + "lite": "node ./node_modules/lite-server/bin/lite-server", + "cleanup": "npm run cleanup-ngc && node ./node_modules/rimraf/bin ./build ./dist", + "cleanup-ngc": "node ./node_modules/rimraf/bin ./src/ts/**/*.js ./src/ts/**/*.json ./src/ts/page.routing.ts", + "cleanup-and-ngc": "npm run cleanup && npm run ngc", + "ngc": "node --max-old-space-size=14336 ./node_modules/@angular/compiler-cli/src/main -p tsconfig.aot.json", + "build-webpack": "node --max-old-space-size=14336 ./node_modules/webpack/bin/webpack --config webpack.aot.config.js --progress --profile", + "save-ts-metadata": "node save.ts.metadata.js", + "tsc": "node ./node_modules/typescript/bin/tsc", + "tsc-watch": "node ./node_modules/typescript/bin/tsc --watch", + "ts-watch": "node node_modules/cross-env/dist/bin/cross-env.js TSC_NONPOLLING_WATCHER=true npm run tsc-watch", + "ts": "npm install && npm run tsc", + "compile": "npm run ts-watch", + "install-compile": "npm install && npm run ts-watch" + }, + "dependencies": { + "@angular/animations": "7.2.15", + "@angular/common": "7.2.15", + "@angular/compiler": "7.2.15", + "@angular/core": "7.2.15", + "@angular/forms": "7.2.15", + "@angular/http": "7.2.15", + "@angular/platform-browser": "7.2.15", + "@angular/platform-browser-dynamic": "7.2.15", + "@angular/router": "7.2.15", + "@ng-bootstrap/ng-bootstrap": "4.1.1", + "@webbpm/base-package": "3.177.2", + "ag-grid-angular": "29.0.0-micord.4", + "ag-grid-community": "29.0.0-micord.4", + "angular-calendar": "0.28.28", + "autonumeric": "4.5.10-cg", + "bootstrap": "4.3.1", + "bootstrap-icons": "1.10.3", + "cadesplugin_api": "2.0.4-micord.1", + "chart.js": "3.8.0-cg.1", + "chartjs-adapter-moment": "1.0.0", + "core-js": "2.4.1", + "date-fns": "2.29.3", + "downloadjs": "1.4.8", + "eonasdan-bootstrap-datetimepicker": "4.17.47-micord.4", + "esmarttokenjs": "2.2.1-cg", + "font-awesome": "4.7.0", + "google-libphonenumber": "3.0.9", + "inputmask": "5.0.5-cg.2", + "jquery": "3.3.1", + "js-year-calendar": "1.0.0-cg.2", + "jsgantt-improved": "2.0.10-cg", + "moment": "2.17.1", + "moment-timezone": "0.5.11", + "ngx-cookie": "3.0.1", + "ngx-international-phone-number": "1.0.6", + "ngx-toastr": "10.2.0-cg", + "popper.js": "1.14.7", + "reflect-metadata": "0.1.13", + "rxjs": "6.4.0", + "rxjs-compat": "6.4.0", + "selectize": "0.12.4-cg.10", + "systemjs": "0.21.4", + "systemjs-plugin-babel": "0.0.25", + "tslib": "1.9.3", + "zone.js": "0.8.29" + }, + "devDependencies": { + "@angular-devkit/build-optimizer": "0.13.9", + "@angular-devkit/core": "7.3.9", + "@angular/cli": "7.3.9", + "@angular/compiler-cli": "7.2.15", + "@angular/platform-server": "7.2.15", + "@babel/core": "7.9.6", + "@babel/preset-env": "7.9.6", + "@types/bootstrap": "3.3.39", + "@types/jquery": "2.0.49", + "@types/node": "7.0.5", + "@types/selectize": "0.12.33", + "angular-router-loader": "0.8.5", + "angular2-template-loader": "0.6.2", + "babel-loader": "8.1.0", + "codelyzer": "5.2.1", + "copy-webpack-plugin": "5.0.3", + "cross-env": "5.2.1", + "css-loader": "2.1.0", + "del": "2.2.2", + "file-loader": "3.0.1", + "html-webpack-plugin": "4.5.2", + "lite-server": "2.3.0", + "mini-css-extract-plugin": "0.6.0", + "mkdirp": "0.5.1", + "raw-loader": "1.0.0", + "style-loader": "0.23.1", + "terser-webpack-plugin": "1.2.4", + "tslint": "5.13.1", + "typescript": "3.2.4", + "typescript-parser": "2.6.1-cg-fork", + "webpack": "4.32.2", + "webpack-bundle-analyzer": "3.3.2", + "webpack-cli": "3.3.2" + } +} diff --git a/frontend/pom.xml b/frontend/pom.xml new file mode 100644 index 0000000..e805c67 --- /dev/null +++ b/frontend/pom.xml @@ -0,0 +1,113 @@ + + + 4.0.0 + + ru.micord.ervu + dashboard + 1.0.0-SNAPSHOT + + + ru.micord.ervu.dashboard + frontend + war + + + + + com.google.code.maven-replacer-plugin + replacer + 1.5.3 + + + replace-version-in-url + process-resources + + replace + + + + + + ${basedir}/src/resources/app-config.json + ${basedir}/dist/src/resources/app-config.json + ${basedir}/src/resources/app.version + ${basedir}/dist/src/resources/app.version + + + + %project.version% + ${project.version} + + + %enable.version.in.url% + ${enable.version.in.url} + + + + + + + + + + dev + + true + + + + + org.apache.maven.plugins + maven-war-plugin + + false + + + ${basedir} + + src/resources/**/* + build_dev/**/* + node_modules/**/* + index.html + systemjs.config.js + + + + + + + + + + compile-ts + + false + + + + prod + + + + org.apache.maven.plugins + maven-war-plugin + + false + + + ${basedir}/dist + + + + + + + + + enable-version-in-url + + true + + + + diff --git a/frontend/preview.html b/frontend/preview.html new file mode 100644 index 0000000..4bd5c4b --- /dev/null +++ b/frontend/preview.html @@ -0,0 +1,24 @@ + + + + Web BPM + + + + + + + + + + + + + +
+ + diff --git a/frontend/save.ts.metadata.js b/frontend/save.ts.metadata.js new file mode 100644 index 0000000..3e193d0 --- /dev/null +++ b/frontend/save.ts.metadata.js @@ -0,0 +1,72 @@ +#!/usr/bin/env node +var tsp = require("typescript-parser"); +var fs = require('fs'); +var path = require('path'); +var ts = require("typescript"); + +var parser = new tsp.TypescriptParser(); +var excludedDirs = [ + 'generated-sources' +]; + +var walkFileTree = function (dir, action) { + if (typeof action !== "function") { + return; + } + + fs.readdirSync(dir).forEach(function (file) { + var path = dir + "/" + file; + var stat = fs.statSync(path); + var extension = ".ts"; + if (stat && stat.isDirectory() && excludedDirs.indexOf(file) === -1) { + walkFileTree(path, action); + } + else if (path.indexOf(extension, path.length - extension.length) !== -1) { + action(null, path); + } + }); +}; + +var dateInLong = Date.now(); +var arr = []; + +var basePath = path.resolve(__dirname, "src/ts/"); +walkFileTree(basePath, function (err, file) { + var content = fs.readFileSync(file).toString(); + var jsonStructure = parser.parseTypescript(ts.createSourceFile( + file, + content, + ts.ScriptTarget.Latest, + true, + ts.ScriptKind.TS + ), + '/'); + jsonStructure['packageName'] = path.relative(path.resolve(__dirname, "src/ts/"),jsonStructure['filePath']); + jsonStructure['imports'].forEach( function (val) { + if (val.libraryName.startsWith(".")) { + val['libraryName'] = path.resolve(path.dirname(jsonStructure['filePath']), val['libraryName']); + val['libraryName'] = path.relative(path.resolve(__dirname, "src/ts/"), val['libraryName']); + val['libraryName'] = path.dirname(val['libraryName']).split(path.sep).join("."); + } + }); + delete jsonStructure['filePath']; + jsonStructure['packageName'] = path.dirname(jsonStructure['packageName']).split(path.sep).join( "."); + arr.push(jsonStructure); +}); +var cache = []; + +fs.writeFileSync("./../.studio/typescript.metadata.json", + JSON.stringify(arr, function (key, value) { + if (typeof value === 'object' && value !== null) { + if (cache.indexOf(value) !== -1) { + // Circular reference found, discard key + return; + } + // Store value in our collection + cache.push(value); + } + return value; + })); + +cache = null; +console.log("typescript parse time = " + (Date.now() - dateInLong)); \ No newline at end of file diff --git a/frontend/src/resources/app-config.json b/frontend/src/resources/app-config.json new file mode 100644 index 0000000..8e55c6d --- /dev/null +++ b/frontend/src/resources/app-config.json @@ -0,0 +1,20 @@ +{ + "electronic_sign.esmart_extension_url": "", + "electronic_sign.tsp_address": "", + "filter_cleanup_interval_hours": 720, + "filter_cleanup_check_period_minutes": 30, + "auth_method": "form", + "enable.version.in.url": "false", + "backend.context": "dashboard", + "guard.confirm_exit": false, + "message_service_error_timeout": "", + "message_service_warning_timeout": "", + "message_service_success_timeout": "", + "message_service_info_timeout": "", + "jivo_chat_widget_api_url": "https://code.jivo.ru/widget/{ID}", + "jivo_chat_widget_enabled": false, + "password_pattern": "^((?=(.*\\d){1,})(?=.*[a-zа-яё])(?=.*[A-ZА-ЯЁ]).{8,})$", + "password_pattern_error": "Пароль должен содержать заглавные или прописные буквы и как минимум 1 цифру", + "show.client.errors": false, + "available_task.single_fetch": true +} diff --git a/frontend/src/resources/app.version b/frontend/src/resources/app.version new file mode 100644 index 0000000..5deada8 --- /dev/null +++ b/frontend/src/resources/app.version @@ -0,0 +1 @@ +1.0.0-SNAPSHOT \ No newline at end of file diff --git a/frontend/src/resources/css/components-app.css b/frontend/src/resources/css/components-app.css new file mode 100644 index 0000000..a5815c2 --- /dev/null +++ b/frontend/src/resources/css/components-app.css @@ -0,0 +1,1584 @@ +@charset "utf-8"; + +.webbpm div[id="page"], +.webbpm div[id="page"] > div, +.webbpm div[id="page"] > div > div { + display: flex; + flex-direction: column; + height: 100%; +} + +.webbpm [id="page"] > div > div > [page-object]:first-child { + padding-top: 15px; +} + +.webbpm [id="page"] > div > div > [page-object] { + display: inherit; + margin-bottom: 10px; + padding: 0 40px; +} + +.webbpm #dashboard { + padding: 15px 40px 0 40px; +} + +.webbpm .title { + font-size: 24px; + font-family: 'SegoeSB'; + padding: 10px 0 0 0; +} + +.webbpm .sub-header { + color: var(--white); + font-weight: normal; + padding: 0 20px; + margin-top: 10px; + border-radius: 20px; + background: var(--bg-secondary); + + & > .form-group { + padding: 10px 0; + margin-bottom: 0; + } + + & > div > div:last-of-type { + font-size: 18px; + padding: 0; + } +} + +.webbpm .form-signup input.ng-invalid.ng-touched, +.webbpm .form-signup input.ng-invalid.ng-touched ~ .input-group-append > .input-group-text, +.webbpm .form-signup input.ng-invalid.ng-dirty, +.webbpm .form-signup input.ng-invalid.ng-dirty ~ .input-group-append > .input-group-text { + border-color: var(--color-link) !important; +} + +.webbpm .form-signup .msg-alert { + color: var(--color-link); +} + +.webbpm input[type="text"], +.webbpm input[type="date"], +.webbpm input[type="email"], +.webbpm input[type="password"], +.webbpm input[type="number"], +.webbpm input.form-control, +.webbpm textarea, +.webbpm select, +.webbpm .selectize-control.single .selectize-input, +.webbpm .multi.plugin-remove_button .selectize-input { + color: var(--color-text-primary); + font-size: var(--size-text-primary); + min-height: 38px; + padding: 6px 8px; + border: 1px solid var(--border-light); + border-radius: 8px; + background-color: var(--white); + background-image: none; + box-shadow: none; +} + +.webbpm .wb-touched.wb-invalid .form-control, +.webbpm .wb-touched.wb-invalid .form-control:focus, +.webbpm .wb-touched.wb-invalid input.form-control, +.webbpm .wb-touched.wb-invalid input.form-control:focus, +.webbpm .wb-touched.wb-invalid .input-group-addon, +.webbpm .wb-touched.wb-invalid .input-group-addon:focus, +.webbpm .wb-touched.wb-invalid .selectize-input, +.webbpm .wb-touched.wb-invalid .selectize-input:focus { + border-color: var(--color-link) !important; + box-shadow: none !important; +} + +.webbpm select option:checked { + color: var(--color-link); +} + +.webbpm .input-group input[name="password"], +.webbpm .input-group input[name="confirmPassword"], +.webbpm .date input[type="text"] { + border-right: 0 ; + border-top-right-radius: 0; + border-bottom-right-radius: 0 ; +} + +.webbpm .input-group input[name="password"] ~ .input-group-append > .input-group-text, +.webbpm .input-group input[name="confirmPassword"] ~ .input-group-append > .input-group-text, +.webbpm .date input ~ .input-group-addon { + color: var(--color-text-primary); + border-color: var(--border-light); + border-radius: 8px; + border-top-left-radius: 0; + border-bottom-left-radius: 0; + background-color: transparent; +} + +.webbpm .input-group input[name="password"] ~ .input-group-append > .input-group-text, +.webbpm .input-group input[name="confirmPassword"] ~ .input-group-append > .input-group-text, +.webbpm .date input ~ .input-group-addon { + color: var(--color-text-primary); + border-color: var(--border-light); + border-radius: 8px; + border-top-left-radius: 0; + border-bottom-left-radius: 0; + background-color: transparent; +} + +.webbpm international-phone-number .input-group-addon.flagInput { + border: 0; + background-color: transparent; + + .btn { + border: 1px solid var(--border-light); + border-right: 0; + border-radius: 10px; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } + + & ~ input { + border-right: 1px solid var(--border-light); + border-radius: 10px; + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } +} + +.webbpm .selectize-dropdown { + box-shadow: none; +} + +.webbpm .selectize-dropdown-content { + border: 1px solid var(--border-light); + border-radius: 10px; + background-color: var(--white); + box-shadow: 0 8px 12px rgb(77 72 91 / 5%), 0 6px 10px rgb(77 72 91 / 0%); +} + +.webbpm .selectize-dropdown .active { + color: var(--color-link); + background-color: transparent; +} + +.webbpm .form-group > label, +.webbpm .form-group > div { + display: inline-block; + vertical-align: top; +} +.webbpm .width-full .form-group > label, +.webbpm .width-full .form-group > div { + display: table-cell; +} + +.webbpm .form-control { + background-color: inherit; +} + +.webbpm .form-control[disabled], +.webbpm .form-control[readonly], +.webbpm .date .form-control[disabled] ~ .input-group-addon, +.webbpm .date .form-control[readonly] ~ .input-group-addon, +.webbpm fieldset[disabled] .form-control, +.webbpm .selectize-control .selectize-input.disabled { + background-color: var(--bg-light); +} + +.webbpm .selectize-control.form-control { + min-height: 38px; +} + +.webbpm .selectize-control.single .selectize-input > .item { + line-height: normal; +} + +.webbpm .selectize-control.single .selectize-input input { + line-height: normal !important; + border-radius: 0; +} + +.webbpm drop-down-button .dropdown-menu.show { + border: 1px solid var(--border-light); + border-radius: 10px; + background-color: var(--white); + box-shadow: 0 8px 12px rgb(77 72 91 / 5%), 0 6px 10px rgb(77 72 91 / 0%); +} + +.webbpm drop-down-button .dropdown-menu.show .btn { + padding-top: 4px; + padding-bottom: 4px; + border: 0; + box-shadow: none; +} + +.webbpm .selectize-dropdown-content { + font-size: var(--size-text-primary); +} + +.webbpm .selectize-dropdown .more_values { + color: var(--color-text-primary); + background-color: #f0f7fd; +} + +/*----------------- Button ---------------- */ +.webbpm .btn { + font-size: var(--size-text-primary); + font-family: 'SegoeSB'; + padding: 6px 14px; + margin-bottom: 0; + border-radius: 20px; +} + +.webbpm .btn:focus, +.webbpm .btn:active:focus { + box-shadow: none !important; +} + +.webbpm .btn-main { + border-color: transparent !important; + background: transparent !important; +} + +.webbpm .btn-main > * > .btn, +.webbpm .btn-primary { + color: var(--white) !important; + border-color: var(--color-link); + background: var(--color-link); + box-shadow: 0px 0px 6px 2px rgb(77 72 91 / 6%); +} +.webbpm .btn-main > * > .btn:not(:disabled):not(.disabled):hover, +.webbpm .btn-main > * > .btn:not(:disabled):not(.disabled):active, +.webbpm .btn-primary:hover, +.webbpm .btn-primary:active { + border-color: #1b84d2; + background: #1b84d2; +} +.webbpm .btn-main > * > .btn:not(:disabled):not(.disabled):focus, +.webbpm .btn-primary:focus { + border-color: #1b84d2; + background: #1b84d2; + box-shadow: none; +} + +.webbpm .btn-secondary, +.webbpm .btn-default { + color: var(--color-text-primary); + border: 1px solid var(--border-light); + background: var(--white); + box-shadow: 0px 0px 6px 2px rgb(77 72 91 / 6%); +} +.webbpm .btn-secondary:not(:disabled):not(.disabled):hover, +.webbpm .btn-secondary:not(:disabled):not(.disabled):active, +.webbpm .btn-default:not(:disabled):not(.disabled):hover, +.webbpm .btn-default:not(:disabled):not(.disabled):active { + color: var(--color-link); + border-color: var(--border-light); + background-color: var(--white); +} +.webbpm .btn-secondary:not(:disabled):not(.disabled):focus, +.webbpm .btn-default:not(:disabled):not(.disabled):focus { + border-color: var(--border-light); + background-color: var(--white); + box-shadow: none; +} + +.webbpm .btn.disabled, +.webbpm .btn:disabled { + color: #666; + border-color: #f3f3f3; + background-color: #f3f3f3; + box-shadow: none; +} + +.webbpm .btn.btn-primary.disabled, +.webbpm .btn.btn-primary:disabled, +.webbpm .btn-main .btn.disabled, +.webbpm .btn-main .btn:disabled { + color: rgba(255, 255, 255, 0.8) !important; + border-color: var(--color-link); + background-color: var(--color-link); + box-shadow: none; +} + +.webbpm ag-grid-angular .state-btn-edit, +.webbpm ag-grid-angular .state-btn-delete { + color: var(--color-link) !important; + border: 0; + background: transparent; + box-shadow: none; +} + +.webbpm button.close { + outline: none; +} +/*---------------- end - Button -------------- */ + +/*----------------- Bread-crumb -------------- */ +.webbpm bread-crumb { + display: flex; + flex-direction: column; + max-width: 800px; + margin-top: 20px; + + .status_bar { + position: relative; + display: flex; + flex-direction: row; + justify-content: stretch; + + .crumb-element { + color: var(--white); + font-size: var(--size-text-secondary); + padding: 4px 15px; + background-color: var(--bg-secondary); + border-radius: 20px; + z-index: 1; + } + + & > div + div { + position: relative; + display: flex; + justify-content: end; + flex: 1; + + &::before { + content: ""; + position: absolute; + left: 0; + right: 0; + top: 50%; + height: 2px; + background-color: var(--bg-secondary); + } + } + + & > div.active ~ div::before { + background-color: var(--border-light); + } + + & > div.active .crumb-element { + background-color: var(--color-link); + } + + & > div.active ~ div .crumb-element { + color: #989fa8; + background-color: var(--border-light); + } + } +} +/*--------------- end Bread-crumb ------------ */ + +.webbpm grid-v2-with-project-defined-sidebar, +.webbpm in-memory-route-param-filter-grid { + display: flex; + flex-direction: column; + flex: 1 1 auto; +} + +.webbpm .container-inside > div > div > grid, +.webbpm .container-inside > div > div > grid-v2-with-project-defined-sidebar{ + height: auto !important; + flex: 1 1 auto; + overflow: hidden; +} + +.webbpm ag-grid-angular .ag-body-viewport, +.webbpm ag-grid-angular .ag-row-odd, +.webbpm ag-grid-angular .ag-row-even { + background-color: transparent; +} + +.webbpm ag-grid-angular .ag-side-bar { + border: 0; + background-color: transparent; +} + +.webbpm ag-grid-angular .ag-header-cell { + line-height: 40px; + padding: 0 10px; + border: 0; +} +.webbpm ag-grid-angular .ag-header-cell::after, +.webbpm ag-grid-angular .ag-header-group-cell::after { + border-color: transparent; +} + +.webbpm ag-grid-angular { + font-family: 'Segoe'; + font-weight: normal; +} + +.webbpm ag-grid-angular .ag-header { + border: 0; + border-radius: 12px; + background: var(--bg-light); +} + +.webbpm ag-grid-angular .ag-header-row { + color: var(--color-text-primary); + font-family: 'SegoeSB'; + font-size: var(--size-text-secondary); + font-weight: normal; +} + +.webbpm ag-grid-angular .grid-filter-hide .ag-floating-filter-body, +.webbpm ag-grid-angular .grid-filter-hide .ag-floating-filter-button { + display: none; +} + +.webbpm ag-grid-angular .ag-header-group-cell { + font-family: 'SegoeB'; + font-size: var(--size-text-primary); +} + +.webbpm ag-grid-angular .ag-header-cell>.ag-cell-label-container>.ag-header-cell-label>.ag-header-cell-text { + white-space: nowrap; +} + +.webbpm ag-grid-angular .ag-header .ag-floating-filter-body input { + font-family: 'Segoe'; + font-size: var(--size-text-secondary); + min-height: 20px; + padding: 2px; + border: 1px solid var(--border-light); + border-radius: 4px; + background: transparent; +} + +.webbpm ag-grid-angular :is(.ag-root, .ag-header-row) { + border: 0; +} + +.webbpm ag-grid-angular .ag-root { + position: static; +} + +.webbpm ag-grid-angular .ag-row { + border-color: var(--border-light); +} +.webbpm ag-grid-angular .ag-row::before { + display: none; +} + +.webbpm ag-grid-angular .ag-row:not(.ag-row-first) { + border-width: 1px 0 0; + border-style: solid; +} +.webbpm ag-grid-angular .ag-row-last:not(.ag-row-first) { + border-width: 1px 0; +} + +.webbpm ag-grid-angular :is(.ag-row.ag-row-odd, .ag-row.ag-row-selected) { + background-color: inherit !important; +} + +.webbpm ag-grid-angular .ag-row.ag-row-selected .ag-cell { + color: var(--color-link); +} + +.webbpm ag-grid-angular .ag-body-viewport .ag-row.ag-row-hover { + border-radius: 10px; +} +.webbpm ag-grid-angular .ag-body-viewport .ag-row.ag-row-hover, +.webbpm ag-grid-angular .ag-body-viewport .ag-row.ag-row-hover .ag-cell { + background-color: #f9f9f9 !important; +} + +.webbpm ag-grid-angular .ag-body-viewport .ag-row.ag-row-hover:not(.ag-full-width-row)::before, +.webbpm ag-grid-angular .ag-body-viewport .ag-row.ag-row-hover.ag-full-width-row.ag-row-group::before { + background-color: transparent; +} + +.webbpm ag-grid-angular .ag-row.ag-row-hover, +.webbpm ag-grid-angular .ag-row.ag-row-hover + .ag-row { + border-color: transparent; +} + +.webbpm ag-grid-angular .ag-row .ag-cell { + display: inline-flex; + color: var(--color-text-primary); + font-size: var(--size-text-primary); + padding: 0 10px; + border: 1px solid transparent; +} + +.webbpm ag-grid-angular .ag-row .ag-cell.webbpm-checkbox-grid-column { + justify-content: center; +} + +.webbpm ag-grid-angular .ag-row .ag-cell .ag-cell-wrapper { + flex: 1 1 auto; + overflow: hidden; +} + +.webbpm ag-grid-angular .ag-row .ag-cell.ag-cell-last-left-pinned:not(.ag-cell-range-right):not(.ag-cell-range-single-cell) { + border-right: 0; +} + +.webbpm ag-grid-angular .ag-pinned-left-floating-bottom:not(.ag-hidden) .ag-row, +.webbpm ag-grid-angular .ag-pinned-left-floating-bottom:not(.ag-hidden) ~ .ag-floating-bottom-viewport { + border: 0; + border-radius: 12px; + background: #f0f7fd; + overflow-y: auto !important; +} + +.webbpm ag-grid-angular .ag-pinned-left-floating-bottom:not(.ag-hidden) .ag-row { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.webbpm ag-grid-angular .ag-pinned-left-floating-bottom:not(.ag-hidden) ~ .ag-floating-bottom-viewport { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.webbpm ag-grid-angular .ag-floating-bottom-container .ag-row { + border: 0; + border-radius: 12px; + background: #f0f7fd; + overflow-y: auto !important; +} + +.webbpm ag-grid-angular .ag-cell.ag-cell-focus.ag-cell-inline-editing { + height: 100%; +} + +.webbpm ag-grid-angular .ag-cell.ag-cell-focus.ag-cell-inline-editing input { + font-size: var(--size-text-primary); + padding: 0; + border: 0; + background: transparent; + box-shadow: none; +} + +.webbpm ag-grid-angular .ag-paging-panel { + color: var(--color-text-primary); + font-size: var(--size-text-secondary); + border: 0; + border-radius: 12px; + background: var(--bg-light); + + .ag-paging-button { + display: flex; + width: 32px; + height: 32px; + border: 1px solid var(--border-light); + border-radius: 16px; + box-shadow: 0px 0px 6px 2px rgb(77 72 91 / 6%); + + &:not(:disabled) { + opacity: 1; + } + + & > span { + display: flex; + align-items: center; + justify-content: center; + width: 100%; + } + + & + .ag-paging-button { + margin-left: 8px; + } + + &[ref="btPrevious"] { + margin-right: 16px; + } + &[ref="btNext"]{ + margin-left: 16px; + } + } +} + +.webbpm ag-grid-angular .ag-floating-bottom { + border-top: 0; + overflow-y: auto !important; +} + +.webbpm ag-grid-angular .ag-floating-bottom-container .ag-cell { + display: flex; + align-items: center; +} + +.webbpm ag-grid-angular .ag-floating-bottom-container input { + color: var(--color-text-primary); + font-family: 'SegoeSB'; + font-size: var(--size-text-primary); + height: 20px; + padding: 0; + border: 0; + background: transparent; + box-shadow: none; +} + +.webbpm ag-grid-angular .ag-header-cell-menu-button .ag-icon-menu { + height: 25px; +} + +.webbpm .grid-setting-icon { + width: 16px; + height: 25px; + right: 12px; + padding: 0; + background-position: center; +} + +.webbpm .grid-mtm { + width: 46%; + & + .many-to-many-move-buttons { + width: 8%; + & button.btn { + width: 100%; + } + } +} + +.webbpm ag-grid-angular .ag-overlay-loading-center { + border: 1px solid var(--border-light); + box-shadow: 0px 0px 6px 2px rgb(77 72 91 / 6%); +} + +.webbpm editable-grid ag-grid-angular .ag-pinned-left-cols-container:not(.ag-hidden) > .ag-row.ag-row-selected, +.webbpm editable-grid ag-grid-angular .ag-pinned-left-cols-container:not(.ag-hidden) > .ag-row.ag-row-hover { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.webbpm editable-grid ag-grid-angular .ag-pinned-left-cols-container:not(.ag-hidden) + .ag-center-cols-clipper > div > div > .ag-row.ag-row-selected, +.webbpm editable-grid ag-grid-angular .ag-pinned-left-cols-container:not(.ag-hidden) + .ag-center-cols-clipper > div > div > .ag-row.ag-row-hover { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.webbpm editable-grid ag-grid-angular .ag-pinned-left-cols-container:not(.ag-hidden) > .ag-row.ag-row-first, +.webbpm editable-grid ag-grid-angular .ag-pinned-left-cols-container:not(.ag-hidden) + .ag-center-cols-clipper > div > div > .ag-row.ag-row-first { + border-width: 1px 0 0 0; +} + + +.webbpm editable-grid ag-grid-angular .ag-pinned-left-cols-container:not(.ag-hidden) > .ag-row:not(.ag-row-first), +.webbpm editable-grid ag-grid-angular .ag-pinned-left-cols-container:not(.ag-hidden) + .ag-center-cols-clipper > div > div > .ag-row:not(.ag-row-first) { + border-width: 1px 0 0 0; +} + +.webbpm editable-grid ag-grid-angular .ag-floating-bottom .ag-row, +.webbpm editable-grid ag-grid-angular .ag-pinned-left-cols-container:not(.ag-hidden) > .ag-row-hover, +.webbpm editable-grid ag-grid-angular .ag-pinned-left-cols-container:not(.ag-hidden) + .ag-center-cols-clipper > div > div > .ag-row-hover { + border-color: transparent; +} + +.webbpm editable-grid ag-grid-angular .ag-floating-bottom { + margin-top: 2px; + border: 0; + border-radius: 10px; + background-color: #f0f7fd; +} + +.webbpm editable-grid ag-grid-angular .ag-cell-wrapper { + height: 100%; +} + +.webbpm editable-grid ag-grid-angular .ag-row.ag-row-first { + border-style: solid; + border-width: 0; + border-color: transparent; +} + +.webbpm editable-grid ag-grid-angular .ag-cell input { + padding: 0; + border-color: transparent !important; + background-color: transparent; + box-shadow: none; +} +.webbpm editable-grid ag-grid-angular .ag-cell input:focus { + border-color: transparent !important; + box-shadow: none !important; +} +.webbpm editable-grid ag-grid-angular .ag-cell.ag-cell-value.wb-invalid { + border-color: transparent; +} + +.webbpm editable-grid ag-grid-angular .ag-cell-inline-editing { + background-color: transparent; +} + +.webbpm editable-grid ag-grid-angular check-box-grid-editor .form-group { + margin-bottom: 0; +} + +.webbpm editable-grid ag-grid-angular check-box-grid-editor .form-group > label { + display: flex; + align-items: center; + padding-top: 0; +} + +.webbpm editable-grid ag-grid-angular .ag-body-viewport .ag-row .ag-cell.ag-cell-inline-editing { + border: 0 !important; + background-color: #f0f7fd !important; +} + +.webbpm editable-grid ag-grid-angular .ag-popup-editor { + padding: 0 !important; + border: 0 !important; + border-radius: 0 !important; + background-color: transparent; + box-shadow: none !important; +} + +.webbpm editable-grid ag-grid-angular .ag-popup-editor .form-group, +.webbpm editable-grid ag-grid-angular number-field-grid-editor .form-group, +.webbpm editable-grid ag-grid-angular text-field-grid-editor .form-group { + margin-bottom: 0; +} + +.webbpm editable-grid ag-grid-angular text-area-grid-editor .form-control { + font-size: var(--size-text-primary); + min-height: 100px; + border: 0; + background-color: #f0f7fd; +} +.webbpm editable-grid ag-grid-angular text-area-grid-editor .form-control:focus { + box-shadow: none; +} + +.webbpm editable-grid ag-grid-angular .ag-popup-editor one-to-many-grid-editor > div, +.webbpm editable-grid ag-grid-angular .ag-popup-editor auto-complete-grid-editor > div, +.webbpm editable-grid ag-grid-angular .ag-popup-editor combo-box-grid-editor > div, +.webbpm editable-grid ag-grid-angular .ag-popup-editor static-combo-box-grid-editor > div { + align-items: center; + margin-top: -1px; +} + +.webbpm editable-grid ag-grid-angular .ag-header .alarm, +.webbpm editable-grid ag-grid-angular .ag-overlay-loading-center, +.webbpm editable-grid ag-grid-angular .ag-popup-editor one-to-may-auto-complete-grid-editor label, +.webbpm editable-grid ag-grid-angular number-field-grid-editor label { + display: none; +} + +.webbpm editable-grid ag-grid-angular .ag-popup-editor one-to-may-auto-complete-grid-editor { + flex: 1; + height: 100%; + padding: 0; +} + +.webbpm editable-grid ag-grid-angular .ag-popup-editor one-to-may-auto-complete-grid-editor .form-group { + display: flex; + height: 100%; +} + +.webbpm editable-grid ag-grid-angular .ag-popup-editor one-to-may-auto-complete-grid-editor .component-float { + flex: 1; + width: auto; +} + +.webbpm editable-grid ag-grid-angular .ag-popup-editor one-to-may-auto-complete-grid-editor .selectize-control, +.webbpm editable-grid ag-grid-angular .ag-popup-editor auto-complete-grid-editor .selectize-control, +.webbpm editable-grid ag-grid-angular .ag-popup-editor combo-box-grid-editor .selectize-control, +.webbpm editable-grid ag-grid-angular .ag-popup-editor static-combo-box-grid-editor .selectize-control, +.webbpm editable-grid ag-grid-angular .ag-popup-editor .date > div, +.webbpm editable-grid ag-grid-angular .ag-popup-editor .date .input-group { + height: 100%; + min-height: auto; + width: 100%; +} + +.webbpm editable-grid ag-grid-angular .ag-popup-editor one-to-may-auto-complete-grid-editor .selectize-control.single .selectize-input, +.webbpm editable-grid ag-grid-angular .ag-popup-editor auto-complete-grid-editor .selectize-control.single .selectize-input, +.webbpm editable-grid ag-grid-angular .ag-popup-editor combo-box-grid-editor .selectize-control.single .selectize-input, +.webbpm editable-grid ag-grid-angular .ag-popup-editor static-combo-box-grid-editor .selectize-control.single .selectize-input, +.webbpm editable-grid ag-grid-angular .ag-popup-editor .date input, +.webbpm editable-grid ag-grid-angular .ag-popup-editor .date .input-group-addon { + display: inline-flex; + align-items: center; + height: 100%; + min-height: auto; + padding: 0 10px 1px 11px; + border: 0; + border-radius: 0; + background: #f0f7fd; + box-shadow: none; +} +.webbpm editable-grid ag-grid-angular .ag-popup-editor .date input { + padding-right: 0; +} + +.webbpm editable-grid ag-grid-angular .ag-popup-editor one-to-may-auto-complete-grid-editor .selectize-control.single .selectize-input.dropdown-active { + padding-right: 3px; +} +.webbpm editable-grid ag-grid-angular .ag-popup-editor one-to-may-auto-complete-grid-editor .selectize-control.single .selectize-input.dropdown-active::before, +.webbpm editable-grid ag-grid-angular .ag-popup-editor one-to-may-auto-complete-grid-editor .selectize-control.single .selectize-input::after { + display: none; +} + +.webbpm editable-grid ag-grid-angular .ag-popup-editor one-to-may-auto-complete-grid-editor input { + padding-left: 5px !important; +} + +.webbpm editable-grid ag-grid-angular .ag-popup-editor one-to-may-auto-complete-grid-editor + button-component { + height: 100%; + background: #f0f7fd; +} + +.webbpm editable-grid ag-grid-angular .ag-popup-editor one-to-may-auto-complete-grid-editor + button-component .btn { + color: var(--color-text-primary) !important; + white-space: nowrap; + padding: 0; + background-color: transparent !important; + border: 0 !important; + box-shadow: none !important; +} + +/*---------------- Table Header Menu --------------- */ +.webbpm ag-grid-angular .ag-menu { + padding: 6px; + border: 1px solid #f5f5f5; + border-radius: 12px; + background-color: var(--white); + box-shadow: 0px 100px 80px rgb(0 0 0 / 7%), 0px 40px 30px rgb(0 0 0 / 5%), 0px 22px 18px rgb(0 0 0 / 4%), 0px 12.5px 10px rgb(0 0 0 / 4%), 0px 6.5px 5px rgb(0 0 0 / 3%), 0px 2.5px 2px rgb(0 0 0 / 2%); +} + +.webbpm ag-grid-angular .ag-tab-header { + border: 0; + background-color: var(--white); +} + +.webbpm ag-grid-angular .ag-tab-header .ag-tab { + margin: 0 6px 6px 0; +} + +.webbpm ag-grid-angular .ag-tab-header .ag-tab.ag-tab-selected { + border-color: transparent; + border-radius: 6px; + background-color: #f2f2f2; +} + +.webbpm ag-grid-angular .ag-pinned-left-header { + border-right: 0; +} + +.webbpm ag-grid-angular .ag-header-checkbox-container .ag-icon-checkbox-checked, +.webbpm ag-grid-angular .ag-header-checkbox-container .ag-icon-checkbox-unchecked { + margin-top: 5px; +} + +.webbpm ag-grid-angular .ag-tab-body { + color: var(--color-text-primary); + font-size: var(--size-text-secondary); + padding: 0; +} + +.webbpm ag-grid-angular .ag-menu > .ag-menu-list { + margin: 0px; +} + +.webbpm ag-grid-angular .ag-menu .ag-menu-option { + color: var(--color-text-primary); + font-size: var(--size-text-secondary); +} + +.webbpm ag-grid-angular .ag-menu .ag-menu-option-active { + background-color: #f5f5f5; +} +.webbpm ag-grid-angular .ag-menu .ag-menu-option-active > *:first-child { + border-top-left-radius: 8px; + border-bottom-left-radius: 8px; +} +.webbpm ag-grid-angular .ag-menu .ag-menu-option-active > *:last-child { + border-top-right-radius: 8px; + border-bottom-right-radius: 8px; +} + +.webbpm ag-grid-angular .ag-menu .ag-menu-separator > span { + height: 9px; + background-image: url("data:image/svg+xml;utf8,"); +} + +/*---------------- Side-bar --------------- */ +.webbpm ag-grid-angular .ag-status-bar, +.webbpm ag-grid-angular .ag-side-bar, +.webbpm ag-grid-angular .ag-side-bar .ag-side-buttons, +.webbpm ag-grid-angular .ag-tool-panel-wrapper .ag-column-select-panel { + border: 0; +} +.webbpm ag-grid-angular .ag-side-bar { + background: transparent; +} + +.webbpm ag-grid-angular .ag-side-bar .ag-tool-panel-wrapper { + width: 300px; + border: 1px solid #efefef; + border-radius: 12px 0 0 12px; + background: var(--white); + box-shadow: -2px 0px 12px -6px rgb(0 0 0 / 20%); +} + +.webbpm ag-grid-angular .ag-side-bar .ag-tool-panel-wrapper, +.webbpm ag-grid-angular .ag-side-bar .ag-tool-panel-wrapper .ag-filter-toolpanel-header { + color: var(--color-text-primary); + font-size: var(--size-text-primary); + font-weight: normal; + background: transparent; +} + +.webbpm ag-grid-angular .ag-side-bar .ag-tool-panel-wrapper .ag-filter-panel .ag-filter-air { + padding: 0; + border: 0; +} + +.webbpm ag-grid-angular .ag-side-bar .ag-side-buttons { + width: 30px; + padding-top: 0; +} + +.webbpm ag-grid-angular .ag-side-bar .ag-side-buttons .ag-side-button { + padding-left: 4px; + +} + +.webbpm ag-grid-angular .ag-side-bar .ag-side-buttons .ag-side-button button { + color: var(--color-text-primary); + font-family: 'Segoe'; + font-size: var(--size-text-secondary); + border: 0; + border-radius: 10px; +} +.webbpm ag-grid-angular .ag-side-bar .ag-side-buttons .ag-side-button button:hover { + color: #eb5757; +} + +.webbpm ag-grid-angular .ag-side-bar .ag-side-buttons .ag-side-button.ag-selected button { + color: #eb5757; + background: #f2f2f2; +} + +.webbpm ag-grid-angular .ag-primary-cols-header-panel, +.webbpm ag-grid-angular .ag-filter-toolpanel-search { + align-items: center; + height: 50px; + padding-top: 0; + border-bottom: 1px solid #efefef; +} + +.webbpm ag-grid-angular .ag-tool-panel-wrapper .ag-column-panel-column-select { + border: 0; +} + +.webbpm ag-grid-angular .ag-tool-panel-wrapper .ag-column-select-panel .ag-column-tool-panel-column-group, +.webbpm ag-grid-angular .ag-tool-panel-wrapper .ag-column-select-panel .ag-column-tool-panel-column { + height: 30px; + line-height: 30px; + margin-left: 6px; + margin-right: 6px; + border-radius: 8px; +} +.webbpm ag-grid-angular .ag-tool-panel-wrapper .ag-column-select-panel .ag-column-tool-panel-column-group:hover, +.webbpm ag-grid-angular .ag-tool-panel-wrapper .ag-column-select-panel .ag-column-tool-panel-column:hover { + background: #f5f5f5; + cursor: pointer; +} + +.webbpm ag-grid-angular .ag-tool-panel-wrapper .ag-column-select-panel .ag-column-tool-panel-column-group { + font-family: 'SegoeSB'; +} + +.webbpm ag-grid-angular .ag-column-select-panel .ag-column-tool-panel-column.ag-toolpanel-add-group-indent { + padding-left: 44px; +} + +.webbpm ag-grid-angular .ag-icon-settings { + height: 10px; + width: 10px; + background: url('../img/icons/settings-sm.svg') center no-repeat; + opacity: 0.7; +} + +.webbpm ag-grid-angular .ag-side-bar .card { + border: 0; +} + +.webbpm ag-grid-angular .ag-side-bar .card-header { + text-align: left; + padding: 6px; + border: 0; + background: transparent; +} + +.webbpm ag-grid-angular .ag-side-bar .card-header i { + float: none; + font-size: var(--size-text-secondary); + text-align: center; + width: 16px; + margin: 0; +} +.webbpm ag-grid-angular .ag-side-bar .card-header i.fa-chevron-right::before { + content: "\f105"; +} +.webbpm ag-grid-angular .ag-side-bar .card-header i.fa-chevron-down::before { + content: "\f107"; +} + +.webbpm ag-grid-angular .ag-side-bar .card-block, +.webbpm ag-grid-angular.ag-side-bar .ag-filter-toolpanel-body { + margin: 0px 6px; +} + +.webbpm ag-grid-angular .ag-side-bar .card-block button { + color: var(--color-text-primary); + min-height: 35px; + margin-bottom: 6px; + border: 1px solid var(--border-light); + border-radius: 8px; + background: var(--white); + box-shadow: 0px 2px 3px -2px rgb(0 0 0 / 20%); +} + +.webbpm ag-grid-angular .ag-side-bar .ag-filter-body-wrapper > *, +.webbpm ag-grid-angular .ag-filter .ag-filter-body-wrapper > * { + margin-bottom: 6px; +} + +.webbpm ag-grid-angular .ag-side-bar .ag-filter-toolpanel .ag-group, +.webbpm ag-grid-angular .ag-side-bar .ag-filter-toolpanel .ag-group .ag-filter-toolpanel-instance-filter { + margin: 0; + border: 0; +} + +.webbpm ag-grid-angular .ag-column-drop-horizontal.ag-column-drop { + padding: 0; + border: 0; + background-color: transparent; +} + +.webbpm ag-grid-angular .ag-column-drop-horizontal.ag-column-drop > div:not(.ag-column-drop-list) { + display: none; +} + +.webbpm ag-grid-angular .ag-popup .ag-select-list-item { + font-size: var(--size-text-primary); + background: transparent; +} +.webbpm ag-grid-angular .ag-popup .ag-select-list-item.ag-active-item { + color: var(--color-link); +} + +.webbpm ag-grid-angular .ag-popup .ag-popup-child:not(.ag-tooltip-custom) { + padding: 6px 4px; + border: 0; + border-radius: 10px; + background-color: var(--white); + box-shadow: 0px 0px 6px 2px rgb(77 72 91 / 12%); +} + +.webbpm ag-grid-angular .ag-column-drag { + margin: 0 0 0 6px; + background: url('../img/icons/dots-six-vertical.svg') 0 0 no-repeat; +} + +.webbpm sales-grid .grid { + display: flex; + flex-direction: column; +} + +.webbpm sales-grid .grid > ag-grid-angular { + flex: 1; + overflow: hidden; +} + +.webbpm sales-grid .grid .ag-paging-panel { + display: flex; + flex-direction: row; +} + +.webbpm sales-grid .grid .table-panel-legend { + display: flex; + flex: 1; + justify-content: right; + margin: 0 80px 0 0; +} + +.webbpm sales-grid .grid .table-panel-legend > span { + position: relative; + margin-left: 48px; +} +.webbpm sales-grid .grid .table-panel-legend > span::before { + content: ""; + position: absolute; + width: 16px; + height: 16px; + left: -24px; + top: 0; + border: 1px solid var(--white); + border-radius: 8px; + box-shadow: 0px 1px 2px -1px rgb(0 0 0 / 45%); +} +.webbpm sales-grid .grid .table-panel-legend > .order-reject::before { + background: #feffee; +} +.webbpm sales-grid .grid .table-panel-legend > .order-return::before { + background: #fff1f1; +} +.webbpm sales-grid .grid .table-panel-legend > .order-self-redemption::before { + background: #edfcf8; +} + +.webbpm ag-grid-angular .ag-overlay-loading-center { + color: var(--color-text-primary); + font-size: var(--size-text-secondary); + padding: 20px; + border: 1px solid #f5f5f5; + border-radius: 12px; + background: var(--white); + box-shadow: 0px 100px 80px rgb(0 0 0 / 7%), 0px 40px 30px rgb(0 0 0 / 5%), 0px 22px 18px rgb(0 0 0 / 4%), 0px 12.5px 10px rgb(0 0 0 / 4%), 0px 6.5px 5px rgb(0 0 0 / 3%), 0px 2.5px 2px rgb(0 0 0 / 2%); +} + +.webbpm ag-grid-angular .ag-filter .ag-filter-header-container { + height: 32px; +} + +.webbpm ag-grid-angular .ag-filter .ag-filter-header-container:nth-child(2) { + margin-top: 8px; + border-bottom: 1px solid #e2e2e2; +} + +.webbpm ag-grid-angular .ag-virtual-list-item:hover { + border-radius: 8px; + background: #f5f5f5; +} + +.webbpm ag-grid-angular .ag-virtual-list-item:hover > label { + cursor: pointer; +} + +.webbpm ag-grid-angular .ag-filter label { + font-size: var(--size-text-primary); + width: auto; + margin: 0; +} + +.webbpm ag-grid-angular .ag-filter .ag-filter-checkbox { + margin-right: 6px; +} + +.webbpm .modal-content { + border: 0; + border-radius: 15px; + box-shadow: 0px 0px 30px 2px rgb(77 72 91 / 12%); + background-color: var(--white); +} + +.webbpm .modal-header { + border-bottom: 1px solid var(--border-light); +} + +/*-------------- Containers --------------- */ +.webbpm .block-content { + margin: 0; + border: 0; +} + +.webbpm .block-content, +.webbpm .block-content > div { + display: flex; + flex-direction: column; + height: 100%; +} + +.webbpm .nav-tabs { + width: max-content; + margin-bottom: 30px; + border: 0; + border-radius: 20px; + background-color: var(--border-light); +} + +.webbpm .nav-tabs .nav-item { + margin-bottom: 0; +} + +.webbpm .nav-tabs .nav-link { + color: var(--color-text-primary); + padding: 6px 14px; + border: 0; + background-color: transparent; +} + +.webbpm .nav-tabs .nav-link:hover, +.webbpm .nav-tabs .nav-link:focus, +.webbpm .nav-tabs .nav-link:active { + background-color: transparent; +} + +.webbpm .nav-tabs .active .nav-link { + color: var(--white); + border: 0; + border-radius: 20px; + background-color: var(--color-link); + box-shadow: 0px 0px 6px 2px rgb(77 72 91 / 24%); +} + +.webbpm tab-container .nav-tabs ~ .tab-active > .active { + flex-direction: column; + display: flex; + padding: 0; + border: 0; +} +/*------------- end Containers ------------ */ + +/*----------------- Filters ---------------- */ +.webbpm collapsible-panel:not(.grid-setting-panel):not(.column-states-panel):not(.filter-states-panel) .card, +.webbpm .fieldset { + border: 0; + border-radius: 8px; + background-color: var(--bg-light); +} + +.webbpm collapsible-panel:not(.grid-setting-panel):not(.column-states-panel):not(.filter-states-panel) .card-header, +.webbpm .fieldset > legend { + font-family: 'SegoeSB'; + font-size: 18px; + padding: 15px 20px; + border: 0; + background: transparent; +} + +.webbpm collapsible-panel:not(.grid-setting-panel):not(.column-states-panel):not(.filter-states-panel) .card-header .font-bold { + margin-top: 10px; +} + +.webbpm collapsible-panel:not(.grid-setting-panel):not(.column-states-panel):not(.filter-states-panel) .card-block { + padding: 0 20px 15px 20px; +} + +.webbpm .fieldset > .legend + div { + padding: 55px 20px 15px 20px; +} + +.webbpm collapsible-panel:not(.grid-setting-panel):not(.column-states-panel):not(.filter-states-panel) .card i { + float: none; + font-size: var(--size-text-secondary); + margin-right: 6px; + margin-left: 0; +} +/*-------------- end Filters -------------- */ + +/*-------------- Admin-pages -------------- */ +.webbpm [page-processinstance], +.webbpm #process-instance, +.webbpm #process-instance > vbox, +.webbpm #process-instance > vbox > div { + height: 100%; +} + +.webbpm [page-processinstance] #process-instance tab-container > div, +.webbpm [page-processinstance] #process-instance tab-container .tab-active { + display: flex !important; +} + +.webbpm [id^="user-management-"], +.webbpm #process-instance-list, +.webbpm #process-instance { + padding: 0 40px; +} + +.webbpm [id^="user-management-"] > vbox > div > *:not(.title), +.webbpm #process-instance-list > vbox > div > *:not(.title) { + margin-bottom: 20px; +} + +.webbpm [id^="user-management-"] .card label, +.webbpm #process-instance-list .card label { + display: inline-flex; +} + +.webbpm [id^="user-management-"] .card .width-full>div > label, +.webbpm #process-instance-list .card .width-full>div > label { + display: table-cell; + padding-top: 5px; +} + +.webbpm #user-management-authorities { + margin-top: 40px; +} + +.webbpm #process-instance-list static-column-grid { + margin-top: 20px; +} + +.webbpm #process-instance-list .radio-block .radio-content { + display: flex; + flex-direction: row; + align-items: flex-start; +} + +.webbpm #process-instance-list .radio-block .radio-content label.control-label { + padding-top: 0; +} + +.webbpm #process-instance bpmn-back-button { + margin: 20px 0; +} +/*----------- end Admin-pages ------------- */ + +/*---------------- Calendar --------------- */ +.webbpm .calendar .months-container { + display: flex !important; + flex-wrap: wrap; + width: 100%; +} + +.webbpm .calendar .month-container { + float: none; + height: max-content; + margin-bottom: 20px; +} + +.webbpm .calendar .month .day { + font-size: var(--size-text-secondary); +} + +.webbpm .calendar .month .day.day-start { + color: var(--white); + border-radius: 4px; + background-color: var(--color-link) !important; +} +.webbpm .calendar .month .day.day-start .day-content:hover { + color: var(--white); +} + +.webbpm .calendar .month .day .day-content:hover { + color: var(--color-link); + background-color: transparent; +} + +.webbpm .date .bootstrap-datetimepicker-widget { + color: var(--color-text-primary); + width: min-content; + padding: 10px; + margin: 0; + border: 1px solid var(--border-light); + + border-radius: 10px; + background-color: var(--white); + box-shadow: 0 8px 12px rgb(77 72 91 / 5%), 0 6px 10px rgb(77 72 91 / 0%); +} +.webbpm .date .bootstrap-datetimepicker-widget.dropdown-menu.bottom:before, +.webbpm .date .bootstrap-datetimepicker-widget.dropdown-menu.bottom:after, +.webbpm .date .bootstrap-datetimepicker-widget table td.today:before { + display: none; +} + +.webbpm .date .bootstrap-datetimepicker-widget table thead tr:first-child th:hover { + color: var(--color-link); + background-color: transparent; +} + +.webbpm .bootstrap-datetimepicker-widget table td.day:hover, +.webbpm .bootstrap-datetimepicker-widget table td.hour:hover, +.webbpm .bootstrap-datetimepicker-widget table td.minute:hover, +.webbpm .bootstrap-datetimepicker-widget table td.second:hover { + color: var(--color-link); + background-color: transparent; +} + +.webbpm .date .bootstrap-datetimepicker-widget table td.today, +.webbpm .date .bootstrap-datetimepicker-widget table td.today:hover { + color: var(--white) !important; + background-color: var(--color-link); +} + +.webbpm .date .bootstrap-datetimepicker-widget table td.active { + color: var(--color-text-primary) !important; + text-shadow: none; + background-color: #f9f9f9; +} + +.webbpm .btn-group-viewdate.btn-group .btn { + width: 38px; + height: 38px; + border-radius: 19px; + cursor: pointer; +} + +.webbpm .btn-group-viewperiod.btn-group .btn { + border-radius: 20px; + cursor: pointer; +} + +.webbpm .btn-group-viewperiod.btn-group .btn.active { + color: var(--white) !important; + border-color: var(--color-link) !important; + background: var(--color-link) !important; + box-shadow: 0px 0px 6px 2px rgb(77 72 91 / 6%); +} +.webbpm .btn-group-viewperiod.btn-group .btn.active:hover, +.webbpm .btn-group-viewperiod.btn-group .btn.active:active { + border-color: #1b84d2 !important; + background: #1b84d2 !important; +} +.webbpm .btn-group-viewperiod.btn-group .btn.active:focus { + border-color: #1b84d2 !important; + background: #1b84d2 !important; + box-shadow: none; +} + +.webbpm .btn-group-viewdate.btn-group .btn + .btn, +.webbpm .btn-group-viewperiod.btn-group .btn + .btn { + margin-left: 10px; +} + +.webbpm .cal-week-view .cal-header.cal-weekend span { + color: var(--color-link); + opacity: 0.7; +} + +.webbpm .cal-month-view .cal-day-badge { + height: 20px; + background-color: var(--color-link); +} + +.webbpm .cal-month-view .cal-open-day-events { + color: var(--color-text-primary); + background-color: #e6ebee; + box-shadow: none; +} + +.webbpm .cal-week-view .cal-event { + color: var(--color-link); +} +/*------------- Calendar - end ------------ */ + +/*---------- Block-dialog - end ----------- */ +.webbpm .block-dialog { + position: relative; + max-width: 800px; + padding: 60px 60px 50px 110px !important; + margin: 30px auto; + border: 0; + border-radius: 15px; + background-color: var(--white); + box-shadow: 0px 0px 30px 2px rgb(77 72 91 / 12%); + + &::before { + content: "\f332"; + position: absolute; + color: var(--color-link); + font-family: bootstrap-icons !important; + font-size: 30px; + top: 60px; + left: 60px; + } + + .title, + .title > div > div:last-of-type{ + padding: 0; + } +} +/*---------- Block-dialog - end ----------- */ + +/*------------------ Левое меню -------------------*/ +/* +.webbpm .task-container { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + margin: 0 !important; + padding: 0 !important; + overflow: hidden; +} + +.webbpm .task-left-menu { + float: none; + position: absolute; + top: 0; + left: 0; + bottom: 0; + width: 240px; + padding: 0; + margin: 0; + background: #eef2f4; + z-index: 1; + overflow: auto; +} + +.webbpm .task-right-content { + float: none; + position: absolute; + top: 0; + bottom: 0; + left: 240px; + right: 0; + padding: 0; + margin: 0; + overflow: auto; +} + +.webbpm .task-left-menu > div { + padding: 15px 10px 15px 15px; +} + +.webbpm .task-left-menu auto-complete .component-float { + width: 100%; +} + +.webbpm .task-right-content > div { + padding: 0 15px 15px; +} + +.webbpm .menu-group-title { + font-weight: normal; +} + +.webbpm .menu-element > li > div:first-child { + font-size: 15px; + width: 100%; +} + +.webbpm .menu-element > li > div:last-child { + padding: 2px 6px; + border-radius: 6px; +} + +.webbpm .menu-group-title + menu { + padding-left: 0; +} + +.webbpm .menu-group .menu-group { + padding-left: 15px; +} +*/ +/*----------------- end - Левое меню -----------------*/ + +/*-------------------- Диаграмма Ганта --------------------*/ +.webbpm .gmajorheading { + background-color: #e0e5e9; +} +.webbpm .gminorheading { + background-color: #f1f5f7; +} +.webbpm .gminorheadingwkend { + background-color: #cce9f4; +} +.webbpm .gtaskcellwkend { + background-color: #f9fafb; +} + +.webbpm .gitemhighlight td { + background-color: #bcedfc !important; +} +/*----------------- end - Диаграмма Ганта -----------------*/ + +.webbpm .modal-backdrop.show { + filter: alpha(opacity=25); + opacity: 0.25; + background-color: var(--black); +} + +/*------------------ FilePreview ------------------*/ +.webbpm .files-view { + width: auto; +} +/*--------------- end - FilePreview ---------------*/ diff --git a/frontend/src/resources/css/components-dashboard.css b/frontend/src/resources/css/components-dashboard.css new file mode 100644 index 0000000..0bb3f7a --- /dev/null +++ b/frontend/src/resources/css/components-dashboard.css @@ -0,0 +1,1262 @@ +@charset "utf-8"; + +.webbpm .horizontal-container > * { + padding-right: var(--indent-mini); +} + +.webbpm.ervu_dashboard .bread-crumb { + .form-group { + margin-bottom: 0; + } + label { + margin-right: 0; + } + .btn { + font-size: var(--size-text-primary); + padding: 0; + margin: 0; + border: 0; + background-color: transparent; + box-shadow: none !important; + } +} + +.webbpm.ervu_dashboard .top-btn-block { + margin: var(--indent-small) 0 var(--indent-mini) 0; + + .form-group { + margin-bottom: 0; + } + .component-float { + display: block; + } + :is(button-component, static-route-navigation-button) { + padding-right: 0; + border-radius: 20px; + + & + :is(button-component, static-route-navigation-button) { + margin-left: var(--indent-base); + } + .btn { + position: relative; + font-size: var(--size-text-primary); + line-height: 1.3; + padding: var(--indent-mini) var(--indent-xlarge) var(--indent-mini) var(--indent-xbase); + margin-bottom: 0; + border-radius: 100px; + border: 0; + background-color: var(--color-dark-20); + + &::after { + position: absolute; + content: "\f285"; + position: absolute; + font-family: bootstrap-icons !important; + font-weight: 800 !important; + font-size: var(--size-text-secondary); + top: 50%; + transform: translateY(-50%); + margin-left: var(--indent-small); + } + } + } + .selectize-control { + font-size: inherit; + background-color: transparent; + + .selectize-input { + display: flex; + min-height: max-content; + padding: var(--indent-mini) var(--indent-xlarge) var(--indent-mini) var(--indent-xbase); + border-radius: 100px; + border: 0; + background: var(--color-dark-20); + + &::after { + position: absolute; + content: "\f282"; + color: var(--color-text-primary); + font-family: bootstrap-icons !important; + font-weight: 800 !important; + font-size: var(--size-text-secondary); + top: calc((50% - var(--size-text-secondary)/ 2)); + right: var(--indent-base); + height: auto; + width: auto; + border: 0; + } + + &.dropdown-active { + background-color: var(--color-success); + + &::after { + transform: rotate(180deg); + } + } + .item, input { + color: var(--color-text-primary); + font-size: var(--size-text-primary); + line-height: 1.3 !important; + } + .item { + display: block; + } + input::-webkit-input-placeholder, input::placeholder { + color: var(--color-text-primary); + } + } + .selectize-dropdown-content { + background: var(--color-dark-20); + } + } +} + +.webbpm.ervu_dashboard .arrow-btn .btn { + position: relative; + display: grid; + place-items: center; + width: min(1.8vw, 2.25rem); /*36*/ + height: min(1.8vw, 2.25rem); /*36*/ + padding: 0; + margin: 0 calc(var(--indent-xmini)*(-1)) 0 var(--indent-mini); + border-radius: 100px; + border: 0; + background-color: var(--color-text-secondary); + + &::before { + position: absolute; + content: "\f285"; + position: absolute; + color: var(--color-dark); + font-family: bootstrap-icons !important; + font-weight: 800 !important; + font-size: var(--size-text-secondary); + top: 50%; + transform: translateY(-50%); + -webkit-text-stroke-width: thin; + } +} + +.webbpm.ervu_dashboard :is(.title, .subtitle) { + font-size: var(--size-text-title); + font-family: 'GilroyM'; + line-height: 1.1; + padding: 0; + + .form-group { + margin-bottom: 0; + } +} +.webbpm.ervu_dashboard .title { + font-size: var(--size-text-title); + margin-bottom: var(--indent-medium); +} +.webbpm.ervu_dashboard .subtitle { + font-size: var(--size-text-subtitle); + margin-bottom: var(--indent-base); +} + +.webbpm.ervu_dashboard .mute { + color: var(--color-text-mute); + font-family: 'GilroyM'; +} + +.webbpm.ervu_dashboard .success > div > div:last-of-type { + color: var(--color-success); +} +.webbpm.ervu_dashboard .error > div > div:last-of-type { + color: var(--color-error); +} + +.webbpm.ervu_dashboard .pull-bottom { + display: flex; + align-items: flex-end; +} + +.webbpm.ervu_dashboard .lined { + padding-top: var(--indent-xbase); + margin-top: var(--indent-xbase); + border-top: 1px solid var(--color-primary-20); +} + +.webbpm.ervu_dashboard .text-invert { + &.mute > div > div:last-of-type { + line-height: inherit !important; + font-size: inherit !important; + } + & > div { + flex-direction: row-reverse; + + label { + width: auto; + padding-left: 2px; + margin-right: 0; + } + & > div:last-of-type { + font-family: 'GilroyM'; + overflow: visible; + } + } +} + +.webbpm.ervu_dashboard [class*="btn-text-"] .btn { + position: relative; + color: var(--black); + font-family: 'GilroyM'; + font-size: var(--size-text-primary); + padding-left: var(--indent-xbase); + padding-right: var(--indent-xlarge); + margin-bottom: 0; + border: 0; + border-radius: 100px; + background-color: var(--color-text-secondary); + + &::after { + content: ""; + position: absolute; + font-family: bootstrap-icons !important; + font-weight: 800 !important; + font-size: var(--size-text-secondary); + top: 50%; + transform: translateY(-50%); + margin-left: var(--indent-small); + -webkit-text-stroke-width: thin; + } +} +.webbpm.ervu_dashboard .btn-text-arrow-r .btn::after { + content: "\f285"; +} +.webbpm.ervu_dashboard .btn-text-close .btn::after { + content: "\f659"; +} + +.webbpm.ervu_dashboard text { + &.num-addtitle { + & > div > div:first-child { + color: var(--color-text-secondary); + align-items: center; + } + & > div > div:last-child { + font-family: 'GilroySB'; + font-size: var(--size-num-primary); + line-height: normal; + } + } +} + +.webbpm.ervu_dashboard .selectize-dropdown { + background-color: transparent; + + .selectize-dropdown-content { + max-height: min-content; + border-radius: 24px; + border: 1px solid var(--color-text-secondary); + background: + linear-gradient(180deg, rgba(19, 46, 55, 0.5) 0%, rgba(19, 46, 55, 0.7) 100%), + linear-gradient(180deg, rgba(8, 131, 198, 0.5) 0%, rgba(8, 131, 198, 0.7) 100%); + backdrop-filter: var(--bg-blur-40); + box-shadow: var(--bg-shadow); + + .option { + color: var(--color-text-primary); + font-size: var(--size-text-primary); + padding: var(--indent-base) var(--indent-xbase); + + &.active { + background-color: transparent; + } + & + .option { + border-top: 1px solid rgba(244, 252, 255, 0.05); + } + } + } +} + +.webbpm.ervu_dashboard tab-container { + .nav-tabs { + border: 0; + + .nav-item + .nav-item { + margin-left: var(--indent-small); + } + .nav-link { + color: var(--color-text-mute); + padding: 0; + border: 0; + background-color: transparent; + } + .active .nav-link { + color: var(--color-success); + padding-bottom: var(--indent-xmini); + border-bottom: 2px solid var(--color-success); + background-color: transparent; + } + & ~ .tab-active > .active { + padding: 0; + margin: var(--indent-base) 0 0; + border: 0; + background-color: transparent; + } + } +} + +.webbpm.ervu_dashboard .brick-group { + color: var(--color-text-secondary); + line-height: 1; + padding: var(--indent-mini) var(--indent-base); + border-radius: 8px; + border: 1px solid var(--color-primary-20); + background-color: var(--bg-brick); + + text { + display: flex; + align-items: center; + + &:first-child { + flex: 1; + } + .form-group { + margin-bottom: 0; + & > div { + align-items: center; + white-space: nowrap; + } + } + &.text-invert .form-group > div:last-child { + color: var(--color-text-primary); + font-size: var(--size-text-subtitle); + } + } +} +.webbpm.ervu_dashboard .vertical-container > .brick-group + .brick-group { + margin-top: var(--indent-mini); +} +.webbpm.ervu_dashboard .horizontal-container > .brick-group + .brick-group { + margin-left: var(--indent-mini); +} + +.webbpm.ervu_dashboard .list-group { + padding: var(--indent-small) var(--indent-base); + border-radius: 8px; + border: 0; + background-color: var(--color-dark-20); + + & + .list-group { + margin-top: var(--indent-base); + } + & > div > * + text { + margin: var(--indent-base) 0 var(--indent-mini); + } + .list-group + .list-group { + margin-top: var(--indent-mini); + } + .horizontal-container { + align-items: center; + } + vbox:first-child { + flex: 1; + } + text .form-group { + align-items: baseline; + margin-bottom: 0; + } + .mute { + white-space: nowrap; + } +} + +.webbpm.ervu_dashboard .list-plain { + & > .vertical-container > hbox + hbox { + margin-top: var(--indent-xbase); + } + .horizontal-container > text { + flex: 1; + color: var(--color-text-secondary); + font-family: 'GilroyM'; + font-size: var(--size-text-subtitle); + line-height: normal; + + & + * { + flex: 1; + } + } + label { + width: auto; + margin-right: 0; + } + .form-group { + align-items: baseline; + margin-bottom: 0; + } + .text-invert:not(.mute) > div > div:first-of-type { + color: var(--color-text-secondary); + } + .text-invert > div > div:last-of-type { + font-family: 'GilroySB'; + font-size: var(--size-num-subtitle); + line-height: 1; + } + .mute { + white-space: nowrap; + } + &.list-plan-small { + .horizontal-container { + align-items: center; + + & > text { + color: var(--color-text-primary); + font-family: 'Gilroy'; + font-size: var(--size-text-primary); + padding-top: 0; + + & + * { + flex: 0 1 auto; + } + } + } + .text-invert > div > div:last-of-type { + font-size: var(--size-num-primary); + line-height: normal; + } + } +} +.webbpm.ervu_dashboard .list-common { + text { + label { + color: var(--color-text-secondary); + width: auto; + } + & > div > div:last-of-type { + flex: 1; + justify-content: end; + overflow: visible; + } + } +} + +.webbpm.ervu_dashboard .graph-chart .chart-content { + width: min(10vw, 12.5rem); + height: min(7vw, 9rem); +} +.webbpm.ervu_dashboard :is(.graph-donut, .graph-donut-large) { + display: flex; + justify-content: center; +} +.webbpm.ervu_dashboard .graph-donut .chart-content { + width: min(8vw, 11rem); + height: min(8vw, 11rem); +} +.webbpm.ervu_dashboard .graph-donut-medium .chart-content { + width: min(10vw, 13.5rem); + height: min(10vw, 13.5rem); +} +.webbpm.ervu_dashboard .graph-donut-large .chart-content { + width: min(14vw, 18.5rem); + height: min(14vw, 18.5rem); +} +.webbpm.ervu_dashboard .graph-legend { + .horizontal-container { + align-items: center; + + & > text { + flex: 1; + + &.text-invert:not(.mute) > div > div:last-of-type { + font-size: var(--size-num-primary); + } + } + } + .mute { + margin-top: var(--indent-small); + } + .lined { + padding-top: var(--indent-small); + margin-top: var(--indent-small); + } +} +.webbpm.ervu_dashboard .graph-legend-column { + & > .vertical-container { + & > * + * { + padding-top: var(--indent-small); + margin-top: var(--indent-small); + border-top: 1px solid var(--color-primary-20); + } + & > hbox { + [class*="legend-col"] { + margin-top: var(--indent-xmini); + } + } + & > vbox { + } + .text-invert { + &:not(.mute) { + font-size: var(--size-num-primary); + margin-top: var(--indent-xmini); + + label { + font-size: var(--size-text-primary); + color: var(--color-text-secondary); + } + } + & > div { + justify-content: flex-end; + } + } + } +} +.webbpm.ervu_dashboard .graph-legend-row { + & > .horizontal-container > vbox { + padding-right: 0; + + & + vbox { + padding-left: var(--indent-base); + margin-left: var(--indent-base); + border-left: 1px solid var(--color-primary-20); + } + & > .vertical-container { + height: 100%; + + [class*="legend-col"] { + padding-bottom: var(--indent-base); + margin-bottom: auto; + } + .text-invert:not(.mute) { + font-size: var(--size-num-primary); + label { + font-size: var(--size-text-primary); + color: var(--color-text-secondary); + } + } + } + } +} +.webbpm.ervu_dashboard .graph-legend-right { + color: var(--color-text-secondary); + + text > div { + justify-content: flex-end; + } + .text-invert > div > div:last-of-type { + color: var(--color-text-primary); + font-size: var(--size-num-primary); + } +} +.webbpm.ervu_dashboard [class*="graph-legend"] { + ervu-chart-v2 ~ hbox, + & > div > hbox { + margin-top: var(--indent-mini); + } + .form-group { + align-items: baseline; + line-height: normal; + margin-bottom: 0; + } + .mute { + white-space: nowrap; + } + [class*="legend-col"] { + position: relative; + padding-left: var(--indent-large); + + &::before { + content: ""; + position: absolute; + width: var(--indent-base); + height: var(--indent-base); + top: var(--indent-xmini); + left: 0; + border-radius: var(--indent-base); + } + } + .legend-col-green::before { + background-color: var(--color-success); + } + .legend-col-red::before { + background-color: var(--color-error); + } + .legend-col-yellow::before { + background-color: #ffc737; + } + .legend-col-blue-lt::before { + background-color: #00f0ff; + } + .legend-col-blue::before { + background-color: #17a8fa; + } + .legend-col-lila::before { + background-color: #e24fd4; + } + .legend-col-coral::before { + background-color: #ff4f5e; + } + .legend-col-orange::before { + background-color: #d98200; + } + .legend-col-orange-dk::before { + background-color: #d9af19; + } +} + +.webbpm.ervu_dashboard .pers-group .vertical-container { + & > text:first-child { + color: var(--color-text-secondary); + } + & > text:nth-child(2) { + font-family: 'GilroySB'; + font-size: var(--size-num-subtitle); + line-height: 1; + margin-top: var(--indent-mini); + } + .form-group { + margin-bottom: 0; + } +} + +.webbpm.ervu_dashboard .main-num-group > div { + &.horizontal-container { + align-items: flex-end; + } + text.title { + font-family: 'GilroySB'; + font-size: var(--size-num-title); + line-height: 1; + margin-bottom: 0; + + & + text.text-invert:not(.mute) { + color: var(--color-text-secondary); + font-size: var(--size-num-primary); + margin: 0 0 var(--indent-xmini) var(--indent-base); + } + } + .form-group { + margin-bottom: 0; + } +} + +.webbpm.ervu_dashboard .parent-block { + padding: var(--indent-mini); + border-radius: var(--indent-base); + border: 1px solid var(--border-dark); + background: var(--bg-block); + backdrop-filter: var(--bg-blur-40); + + & > .horizontal-container > * { + flex: 1; + &:not(.child-block) { + padding-right: 0; + } + } + & > .horizontal-container > * + *, + .horizontal-container > .child-block + .child-block { + margin-left: var(--indent-base); + } + .vertical-container > .child-block + *, + .vertical-container > .child-block + .child-block { + margin-top: var(--indent-base); + } + .child-block, + .child-block + * { + flex: 1; + } +} + +.webbpm.ervu_dashboard .bg-diamond { + background-image: url(../img/svg/bg-diamond.svg); + background-position: 100% 0; + background-repeat: no-repeat; +} + +.webbpm.ervu_dashboard .child-block { + padding: var(--indent-medium) var(--indent-large); + border-radius: var(--indent-xbase); + border: 1px solid var(--border-light); + background-color: var(--bg-group); + backdrop-filter: var(--bg-blur-20); +} + +.webbpm.ervu_dashboard .search-block { + .child-block { + padding: var(--indent-large) var(--indent-medium) var(--indent-medium); + + &:first-child { + min-width: min(20vw, 25rem); /*400*/ + flex: 0; + } + label { + display: flex; + color: var(--color-text-secondary); + font-family: 'GilroyM'; + width: auto; + padding: 0; + margin: 0 0 var(--indent-mini) var(--indent-small); + } + check-box { + label { + width: min-content; + span { + content: ""; + position: absolute; + top: 0; + left: 0; + width: min(1.4vw, 1.75rem); /*28*/ + height: min(1.4vw, 1.75rem); /*28*/ + padding: 2px; + margin: 0; + border-radius: 4px; + background-color: var(--color-dark-20); + } + input { + position: absolute; + z-index: -1; + opacity: 0; + } + } + &.wb-valid.wb-not-empty { + label span { + content: url('../img/svg/mark.svg'); + border: 1px solid var(--color-success); + background-color: var(--color-primary-5); + } + } + & + text { + color: var(--color-text-secondary); + margin-left: var(--indent-base) !important; + } + } + :is(.title, .nav-tabs, text) { + margin-left: var(--indent-small); + } + .filter-group { + .form-group, .component-float { + width: 100%; + } + } + } + .search-main-block { + width: 100%; + padding: 0; + + & > div { + height: 100%; + } + } + &.search-add-params { + .child-block:first-child { + min-width: 100%; + } + .search-main-block, .search-main-block ~ vbox { + width: 25%; + padding-right: var(--indent-large); + } + .search-main-block ~ vbox { + padding-left: var(--indent-large); + border-left: 1px solid var(--color-primary-20); + + &:last-child { + padding-right: 0; + } + } + } + .search-btn { + margin-top: auto; + + .btn { + color: var(--white); + font-size: var(--size-text-subtitle); + width: 100%; + min-height: min(3.6vw, 4.5rem); /*72*/ + margin: var(--indent-xbase) 0 0; + border-radius: 20px; + border: 1px solid var(--btn-border); + background: var(--btn-bg); + box-shadow: var(--btn-shadow); + } + } + .selectize-control { + height: 100%; + background-color: transparent; + } + :is(.selectize-input, input) { + color: var(--color-text-primary); + font-size: var(--size-text-primary); + min-height: max-content; + padding: var(--indent-small) var(--indent-xlarge) var(--indent-small) var(--indent-medium); + margin-bottom: 0; + border-radius: 100px; + border: 0; + background-color: var(--color-dark-20); + } + .selectize-input { + display: flex; + + &::after { + position: absolute; + content: "\f282"; + position: absolute; + font-family: bootstrap-icons !important; + font-weight: 800 !important; + font-size: var(--size-text-secondary); + top: calc((50% - var(--size-text-secondary)/ 2)); + right: var(--indent-base); + height: auto; + width: auto; + border: 0; + } + &::before { + display: none; + } + } + check-box label > span { + width: auto; + } +} + +.webbpm.ervu_dashboard .pers-block { + .child-block { + padding: var(--indent-large); + + &:first-child { + min-width: 400px; + flex: 0; + background-image: url(../img/svg/bg-pers.svg); + background-position: -40px 100%; + background-repeat: no-repeat; + } + text > div { + display: flex; + flex-direction: column; + + label { + color: var(--color-text-secondary); + width: auto; + } + } + .title ~ .title { + margin-top: var(--indent-huge); + } + } +} + +.webbpm.ervu_dashboard grid-v2 { + flex: 1; + height: auto; +} +.webbpm.ervu_dashboard ag-grid-angular :is(.ag-root-wrapper, .ag-header-viewport, .ag-header-container, .ag-header) { + background-color: transparent; +} +.webbpm.ervu_dashboard ag-grid-angular .ag-header { + margin-bottom: var(--indent-mini); + border: 0; + + .ag-header-row { + border-bottom: 1px solid var(--color-primary-5); + } + .ag-header-cell { + color: var(--color-text-secondary); + font-size: var(--size-text-primary); + font-family: 'Gilroy'; + font-weight: 400; + padding-left: var(--indent-small); + padding-right: var(--indent-small); + + &::after { + background-color: var(--color-primary-5); + } + &:first-child { + padding-left: var(--indent-base); + } + &:last-child { + padding-right: var(--indent-base); + } + } +} +.webbpm.ervu_dashboard ag-grid-angular .ag-root { + border: 0; + + .ag-row { + color: var(--color-text-primary); + font-size: var(--size-text-addprimary); + font-family: 'GilroyM'; + border-radius: 8px; + border: 1px solid var(--color-primary-20); + background-color: var(--bg-brick); + + &.ag-row-selected, &.ag-row-hover { + background-color: var(--bg-brick) !important; + + &:before { + border-radius: 8px; + background-color: var(--bg-brick) !important; + } + } + } + .ag-cell { + display: flex; + + &.ag-cell-not-inline-editing { + padding-left: 12px; + padding-right: 12px; + + &:first-child { + padding-left: var(--indent-base); + } + &:last-child { + padding-right: var(--indent-base); + } + } + &.ag-cell-focus { + border-color: transparent; + } + &.cell-font-big { + font-size: var(--size-text-subtitle); + } + &[class*="cell-font-narrow"] { + color: var(--color-text-secondary); + font-family: 'Gilroy'; + + } + &.cell-font-narrow-small { + font-size: var(--size-text-primary); + } + &[class*="cell-score"] { + justify-content: end; + font-size: var(--size-num-subtitle); + + .ag-cell-value { + overflow: visible; + } + } + &.cell-score-success { + color: var(--color-success); + } + &.cell-score-alarm { + color: var(--color-error); + } + .ag-cell-wrapper { + overflow: hidden; + } + } +} +.webbpm.ervu_dashboard grid-v2.grid-rating ag-grid-angular { + .ag-row { + font-size: var(--size-text-subtitle); + border: 0; + background-color: var(--color-dark-20); + + &.ag-row-selected, &.ag-row-hover { + background-color: var(--color-dark-20) !important; + + &:before { + background-color: var(--color-dark-20) !important; + } + } + } +} +.webbpm.ervu_dashboard grid-v2.grid-rating-small ag-grid-angular { + .ag-cell[class*="cell-score"] { + font-size: var(--size-num-primary); + } +} +.webbpm.ervu_dashboard grid-v2.grid-header-free { + margin-top: var(--indent-xlarge); + + .ag-header { + display: none; + } +} +.webbpm.ervu_dashboard ag-grid-angular .ag-paging-panel { + color: var(--color-text-primary); + font-size: var(--size-text-addprimary); + font-family: 'GilroyM'; + min-height: 60px; + margin-top: var(--indent-medium); + border: 0; + + .ag-paging-row-summary-panel { + margin-right: var(--indent-xlarge); + } + .ag-paging-page-summary-panel { + margin: 0; + + .ag-paging-description { + margin: 0 64px; + } + } + .ag-paging-button { + display: flex; + align-items: center; + justify-content: center; + width: min(2.9vw, 3.625rem); /*58*/ + height: min(2.9vw, 3.625rem); /*58*/ + margin: 0; + border: 1px solid var(--color-primary-20); + border-radius: 4px; + background-color: var(--color-dark-20); + + & + .ag-paging-button { + margin-left: var(--indent-xmini); + } + .ag-icon { + color: var(--color-text-primary); + font-size: var(--size-text-subtitle); + } + &.ag-disabled { + border-color: transparent; + + .ag-icon { + color: var(--color-text-secondary); + } + } + } +} +.webbpm.ervu_dashboard ag-grid-angular .grid-setting-icon, +.webbpm.ervu_dashboard ag-grid-angular .ag-header-cell.ag-header-active .ag-header-cell-menu-button, +.webbpm.ervu_dashboard ag-grid-angular .ag-header-cell .ag-header-icon .ag-icon, +.webbpm.ervu_dashboard ag-grid-angular .ag-header-row-column-filter :is(.ag-header-cell, .ag-header-group-cell)::after, +.webbpm.ervu_dashboard ag-grid-angular .ag-filter .ag-filter-condition, +.webbpm.ervu_dashboard ag-grid-angular .ag-filter .ag-filter-condition ~ * { + display: none !important; +} + +/* Special pages */ +.webbpm.ervu_dashboard #total_registered_second { + .child-block:nth-child(1) { + flex: 0; + } + .child-block:nth-child(2) { + flex: 1.4; + } + .child-block:nth-child(3) { + flex: 1.2; + } + .child-block:nth-child(4) { + flex: 1.4; + } +} +.webbpm.ervu_dashboard #milregistration .parent-block { + & > div > vbox:nth-child(1) { + flex: 0; + } + .donut-absolute-row { + ervu-chart-v2 { + justify-content: flex-end; + margin-top: -70px; + z-index: -1; + } + .graph-legend-row { + margin-top: var(--indent-base); + } + } +} +.webbpm.ervu_dashboard #appeals .parent-block > div { + & > vbox:nth-child(1) { + flex: 2; + } + & > vbox:nth-child(2) { + flex: 3; + } + & > vbox:nth-child(3) { + flex: 2; + } +} + +@media ((max-width: 780px) or (orientation: portrait)) { + .webbpm.ervu_dashboard .header-logo .logo-title, + .webbpm.ervu_dashboard .header-menu .update-data { + display: none; + } + .webbpm.ervu_dashboard .top-btn-block { + & > .horizontal-container { + flex-direction: column; + } + .component-float { + width: auto; + } + .pull-right { + margin-left: 0; + + & > div { + justify-content: flex-start; + } + } + } + + .webbpm.ervu_dashboard .parent-block { + & > .horizontal-container { + flex-direction: column; + } + .horizontal-container > .child-block + .child-block { + margin-left: var(--indent-mini); + } + & > .horizontal-container > * + * { + margin-left: 0; + margin-top: var(--indent-mini); + } + .vertical-container > .child-block + *, + .vertical-container > .child-block + .child-block { + margin-top: var(--indent-mini); + } + .child-block ~ hbox > .horizontal-container { + flex-direction: column; + + & > .child-block + .child-block { + margin-left: 0; + margin-top: var(--indent-mini); + } + } + } + + .webbpm.ervu_dashboard .arrow-btn .btn { + position: relative; + display: grid; + place-items: center; + width: 2.25rem; /*36*/ + height: 2.25rem; /*36*/ + } + + .webbpm.ervu_dashboard .graph-chart .chart-content { + width: 12.5rem; + height: 9rem; + } + .webbpm.ervu_dashboard .graph-donut .chart-content { + width: 11rem; + height: 11rem; + } + .webbpm.ervu_dashboard .graph-donut-medium .chart-content { + width: 13.5rem; + height: 13.5rem; + } + .webbpm.ervu_dashboard .graph-donut-large .chart-content { + width: 18.5rem; + height: 18.5rem; + } +} + +@media (max-width: 480px) { + .webbpm.ervu_dashboard .top-btn-block { + .horizontal-container { + flex-direction: column; + + combo-box { + padding-right: 0; + } + } + :is(button-component, static-route-navigation-button) { + & + :is(button-component, static-route-navigation-button) { + margin-left: 0; + margin-top: var(--indent-xmini); + } + button { + width: 100%; + } + } + } + + .webbpm.ervu_dashboard .child-block { + padding: var(--indent-base) var(--indent-xbase); + } + .webbpm.ervu_dashboard .parent-block > .horizontal-container > .child-block + .child-block { + margin-left: 0; + } + + .webbpm.ervu_dashboard .graph-legend-row { + margin-top: 0 !important; + + & > .horizontal-container { + flex-direction: column; + + & > vbox + vbox { + padding-left: 0; + padding-top: var(--indent-small); + margin-left: 0; + margin-top: var(--indent-small); + border-left: 0; + border-top: 1px solid var(--color-primary-20); + } + .text-invert > div { + justify-content: flex-end; + } + } + } + .webbpm.ervu_dashboard .graph-legend-column { + .horizontal-container { + flex-direction: column; + + .pull-right { + justify-content: flex-start; + margin-left: 0; + } + } + } + .webbpm.ervu_dashboard .donut-absolute-row .active > vbox > .vertical-container { + flex-direction: row; + + ervu-chart-v2 { + justify-content: flex-start !important; + margin-top: 0 !important; + z-index: 1 !important; + } + } + .webbpm.ervu_dashboard .graph-donut .chart-content, + .webbpm.ervu_dashboard .graph-donut-medium .chart-content { + width: 10rem; + height: 10rem; + } + .webbpm.ervu_dashboard .graph-donut-large .chart-content { + width: 18rem; + height: 18rem; + } + + .webbpm.ervu_dashboard ag-grid-angular .ag-paging-panel { + flex-direction: column; + + .ag-paging-button { + width: 3rem; + height: 3rem; + } + .ag-paging-page-summary-panel .ag-paging-description { + margin: 0 var(--indent-small); + } + } + + .webbpm.ervu_dashboard .search-add-params { + .filter-group > div > hbox > .horizontal-container { + flex-direction: column; + } + .search-main-block, .search-main-block ~ vbox { + width: 100% !important; + } + .search-main-block ~ vbox { + padding: 0 !important; + padding-top: var(--indent-base) !important; + border: 0 !important; + border-bottom: 1px solid var(--color-primary-20) !important; + } + .child-block check-box { + label > span { + width: 1.75rem; /*28*/ + height: 1.75rem; /*28*/ + } + & + text { + margin-left: 1.75rem !important; + } + } + } + + .webbpm.ervu_dashboard .pers-block { + .child-block { + padding: var(--indent-xbase); + + &:first-child { + min-width: auto; + } + &:nth-child(2) .horizontal-container { + flex-direction: column; + + vbox, text { + width: 100% !important; + } + } + } + } +} \ No newline at end of file diff --git a/frontend/src/resources/css/inbox-app.css b/frontend/src/resources/css/inbox-app.css new file mode 100644 index 0000000..ea6a419 --- /dev/null +++ b/frontend/src/resources/css/inbox-app.css @@ -0,0 +1,342 @@ +@font-face { + font-family: 'Segoe'; + src: url('../fonts/Segoe.ttf'); +} +@font-face { + font-family: 'SegoeSL'; + src: url('../fonts/SegoeSL.ttf'); +} +@font-face { + font-family: 'SegoeSB'; + src: url('../fonts/SegoeSB.ttf'); +} +@font-face { + font-family: 'SegoeB'; + src: url('../fonts/SegoeB.ttf'); +} +@font-face { + font-family: 'SegoeBL'; + src: url('../fonts/SegoeBL.ttf'); +} + +.webbpm a { + color: var(--color-link); + &:hover, + &:focus, + &:active { + color: var(--color-link-hover); + text-decoration: none; + } +} + +body.webbpm { + display: flex; + flex-direction: column; + color: var(--color-text-primary); + font-family: 'Segoe'; + background-color: var(--white); +} + +.webbpm .container { + padding: 70px 0 0; +} + +body.webbpm [id="page"], +.webbpm .container .container-inside { + font-family: 'Segoe'; + font-size: var(--size-text-primary); +} + +.webbpm .logo { + height: auto; + width: auto; +} + +.webbpm .header-logo { + display: flex; + flex-direction: row; + align-items: center; + margin-left: 40px; + + .logo a { + background: url('../../../src/resources/img/logo-full.png') no-repeat 0 50%; + } +} + +.webbpm .header-menu { + display: flex; + flex-direction: row; + margin-left: auto; + margin-right: 40px; + & > * { + margin-right: 20px; + &:last-child { + margin-right: 0; + } + } + .nav-link { + display: flex; + align-items: center; + justify-content: center; + color: var(--white); + font-size: var(--size-text-primary); + width: 30px; + height: 30px; + padding: 0; + border: 0; + border-radius: 15px; + background-color: var(--color-text-primary); + outline: transparent; + + &::after { + display: none; + } + + &:hover, + &:focus, + &:active { + background-color: var(--color-link); + } + } + .logout .user-info { + display: flex; + flex-direction: column; + color: var(--black); + padding: 4px 20px; + background: transparent; + cursor: default; + + & > * { + display: flex; + padding-bottom: 10px; + margin: 0 0 10px 0; + border-bottom: 1px solid #f1f5f9; + &:last-child { + margin-bottom: 0; + } + } + + .user-fio { + padding-bottom: 0; + margin-bottom: 0; + border-bottom: 0; + } + + .user-department { + color: #a0b1bc; + line-height: 1.2; + } + } +} + +.webbpm .header { + display: flex; + font-family: 'Segoe'; + width: 100%; + height: auto; + min-height: 70px; + border-bottom: 1px solid var(--bg-light); + background: var(--white); + box-shadow: 0px 15px 20px 0px rgb(0 0 0 / 4%); + + & > div > * { + position: relative; + display: flex; + align-items: center; + } + + .dropdown-menu.show { + top: 69px !important; + right: 0px !important; + left: auto !important; + transform: none !important; + margin: 0; + border: 0; + border-radius: 0 0 10px 10px; + background-color: var(--white); + box-shadow: 0 8px 12px rgb(77 72 91 / 5%), 0 6px 10px rgb(77 72 91 / 0%); + + .dropdown-menu-inner { + max-height: calc(100vh - 140px); + overflow-y: auto; + } + } + + :is(process, admin-menu) .dropdown-menu.show { + top: 49px !important; + } + + .logout .dropdown-menu.show { + width: 300px; + } +} + +.webbpm .dropdown-menu-inner:hover { + background-color: transparent; +} + +.webbpm .dropdown-item { + padding: 4px 20px; + &:hover, + &:focus, + &:active { + color: var(--color-link); + background-color: transparent; + outline: transparent; + } +} + +.webbpm footer { + color: var(--color-text-primary); + font-size: var(--size-text-secondary); + left: 0; + right: 0; + padding: 15px 40px; + border-top: 1px solid var(--border-light); + a { + color: var(--color-text-primary); + &:hover { + color: var(--color-link); + } + } +} + +/*-------------- Menu tasks -------------- */ +.webbpm .task-list-tree-panel { + padding: 0 40px; + .task-list-filter { + font-family: 'Segoe'; + box-shadow: none; + + li:first-of-type { + font-family: 'SegoeSB'; + font-weight: normal; + padding-left: 0; + } + + li.ontime label div { + background-color: #31c980; + } + + li.overdue label div { + background-color: var(--color-link); + } + } +} + +.webbpm .task-list-workplace { + padding: 20px 40px 0 40px; +} + +.webbpm .task-tbl :is(.tr.task-ontime, .tr.task-overdue) > .td.task::before { + top: 24px; + background-color: #31c980; +} + +.webbpm .task-tbl .tr.task-overdue > .td.task::before { + background-color: var(--color-link); +} + +.webbpm .task-tbl .thead { + display: table-header-group; + border: 0; + background: transparent; +} + +.webbpm .task-tbl .th { + color: var(--color-text-primary); + font-family: 'SegoeSB'; + font-size: var(--size-text-secondary); + font-weight: normal; + padding: 9px 12px; + border: 0; + background: var(--bg-light); +} +.webbpm .task-tbl .th:first-child { + border-top-left-radius: 12px; + border-bottom-left-radius: 12px; +} +.webbpm .task-tbl .th:last-child { + border-top-right-radius: 12px; + border-bottom-right-radius: 12px; +} + +.webbpm .task-tbl .td { + color: var(--color-text-primary); + font-size: var(--size-text-primary); + padding: 16px 12px; + border: 0; +} + +.webbpm .task-tbl .thead ~ .tr { + border-color: var(--border-light); + border-width: 1px 0 0 0; + border-style: solid; +} +.webbpm .task-tbl .thead + .tr { + border-top-color: transparent; +} + +.webbpm .task-tbl .thead ~ .tr:hover { + border-top-color: transparent; + border-bottom-color: transparent; +} +.webbpm .task-tbl .thead ~ .tr:hover +.tr { + border-top-color: transparent; +} + +.webbpm .task-tbl .thead ~ .tr:hover .td { + background-color: #f9f9f9; +} +.webbpm .task-tbl .thead ~ .tr:hover .td:first-child { + border-top-left-radius: 12px; + border-bottom-left-radius: 12px; +} +.webbpm .task-tbl .thead ~ .tr:hover .td:last-child { + border-top-right-radius: 12px; + border-bottom-right-radius: 12px; +} +/*------------- end Menu tasks ----------- */ + +/*----------------- Login ---------------- */ +.webbpm :is(.form-signin, .form-signup, .confirm) { + color: var(--color-text-primary); + width: 560px; + padding: 60px 80px; + margin: 30px auto; + border: 0; + border-radius: 15px; + box-shadow: 0px 0px 30px 2px rgb(77 72 91 / 12%); + background-color: var(--white); +} + +.webbpm :is(.form-signin, .form-signup) .row.title { + position: relative; + padding: 0; +} + +.webbpm .form-signin h1, +.webbpm .form-signin h2, +.webbpm .form-signup h2, +.webbpm .confirm h2 { + font-family: 'SegoeB'; + font-size: 32px; + text-align: left; + margin-bottom: 20px; +} + +.webbpm :is(.form-signin, .form-signup, .confirm) .logo { + position: absolute; + top: -10px; + right: 0; + width: 145px; + height: 40px; + background: none; +} + +.webbpm .form-signin .row.registration > * + *, +.webbpm .form-signin .login-btn-box .password, +.webbpm .form-signin .login-btn-box .btn + .btn { + margin-left: 20px; +} +/*--------------- end Login -------------- */ \ No newline at end of file diff --git a/frontend/src/resources/css/inbox-dashboard.css b/frontend/src/resources/css/inbox-dashboard.css new file mode 100644 index 0000000..820beb3 --- /dev/null +++ b/frontend/src/resources/css/inbox-dashboard.css @@ -0,0 +1,333 @@ +@font-face { + font-family: 'GilroyL'; + src: url('../fonts/gilroy-light.otf'); +} +@font-face { + font-family: 'Gilroy'; + src: url('../fonts/gilroy-regular.ttf'); +} +@font-face { + font-family: 'GilroyM'; + src: url('../fonts/gilroy-medium.ttf'); +} +@font-face { + font-family: 'GilroySB'; + src: url('../fonts/gilroy-semibold.ttf'); +} +@font-face { + font-family: 'GilroyEB'; + src: url('../fonts/gilroy-extrabold.otf'); +} + +.webbpm.ervu_dashboard { + --black: #070e1a; + --color-text-primary: #f4fcff; + --color-text-secondary: #b1daea; + --color-text-mute: #6b7e9b; + --color-primary-5: rgba(244, 252, 255, 0.05); + --color-primary-20: rgba(244, 252, 255, 0.2); + + --color-success: #00db5d; + --color-error: #f91e11; + --color-dark: #070e1a; + --color-dark-20: rgba(7, 14, 26, 0.2); + + --btn-border: #00f0ff; + --btn-bg: linear-gradient(40deg, rgba(8, 131, 198, 1) 0%, rgba(32, 181, 219, 1) 100%); + --btn-shadow: 0 20px 40px -20px rgba(11, 175, 218, 0.4); + + --border-light: rgba(8, 131, 198, 0.6); + --border-dark: rgba(1, 83, 111, 1); + --bg-blur-40: blur(20px); + --bg-blur-20: blur(10px); + --bg-shadow: 4px 4px 2px 0 rgba(3, 20, 36, 0.4); + --bg-block: + linear-gradient(180deg, rgba(8, 131, 198, 0) 0%, rgba(8, 131, 198, 0.07) 33%, rgba(8, 131, 198, 0.2) 100%), + linear-gradient(180deg, rgba(19, 46, 55, 0.16) 0%, rgba(19, 46, 55, 0.32) 100%), + radial-gradient(ellipse at 50% 50%, rgba(0, 0, 0, 0.8) 0%, rgba(0, 0, 0, 0) 80%); + --bg-group: rgba(8, 131, 198, 0.25); + /*conic-gradient(from 90deg at 100% 0%, rgba(0, 240, 255, 0.6) 0%, rgba(0, 191, 255, 0.24) 34%, rgba(0, 191, 255, 1) 100%),*/ + /* + linear-gradient(180deg, rgba(8, 131, 198, 0) 0%, rgba(8, 131, 198, 0.4) 100%), + linear-gradient(0deg, rgba(19, 46, 55, 0.08) 0%, rgba(19, 46, 55, 0.16) 100%), + linear-gradient(204deg, rgba(0, 191, 255, 0.5) 0%, rgba(0, 191, 255, 0) 50%); + */ + --bg-brick: rgba(9, 91, 120, 0.6); + + --size-text-title: min(1.6vw, 2rem); /*32px*/ + --size-text-subtitle: min(1.2vw, 1.5rem); /*24px*/ + --size-text-addprimary: min(1vw, 1.25rem); /*20px*/ + --size-text-primary: min(0.9vw, 1.125rem); /*18px*/ + --size-text-secondary: min(0.7vw, 0.875rem); /*14px*/ + + --size-num-title: min(3vw, 3.75rem); /*60px*/ + --size-num-subtitle: min(2.4vw, 3rem); /*48px*/ + --size-num-addtitle: min(2vw, 2.5rem); /*40px*/ + --size-num-primary: min(1.6vw, 2rem); /*32px*/ + --size-num-secondary: min(1.2vw, 1.5rem); /*24px*/ + + --indent-huge: min(2.4vw, 3rem); /*48*/ + --indent-xlarge: min(2vw, 2.5rem); /*40*/ + --indent-large: min(1.6vw, 2rem); /*32*/ + --indent-medium: min(1.2vw, 1.5rem); /*24*/ + --indent-xbase: min(1vw, 1.25rem); /*20*/ + --indent-base: min(0.8vw, 1rem); /*16*/ + --indent-small: min(0.6vw, 0.75rem); /*12px*/ + --indent-mini: min(0.4vw, 0.5rem); /*8px*/ + --indent-xmini: min(0.2vw, 0.25rem); /*4px*/ + + --h-header: min(3.9vw, 4.875rem); /*78*/ + --w-screen: min(2vw, 2.5rem); /*40*/ +} + +body.webbpm.ervu_dashboard { + display: flex; + flex-direction: column; + color: var(--color-text-primary); + font-family: 'Gilroy'; + background: var(--color-dark) url('../img/bg_image.png') no-repeat center 0 fixed; + -webkit-background-size: cover; + -moz-background-size: cover; + -o-background-size: cover; + background-size: cover; + + .wrapper { + background: + radial-gradient(circle at 0% 0%, rgba(16, 67, 77, 0.35) 0%, rgba(8, 37, 43, 0) 37%), + radial-gradient(circle at 100% 0%, rgba(16, 67, 77, 0.35) 0%, rgba(8, 37, 43, 0) 37%), + radial-gradient(circle at 50% 0%, rgba(8, 37, 43, 0.8) 0%, rgba(8, 37, 43, 0.6) 30%, rgba(8, 37, 43, 0) 80%), + radial-gradient(circle at 50% 0%, rgba(8, 37, 43, 0.8) 0%, rgba(8, 37, 43, 0) 73%), + radial-gradient(circle at 50% 50%, rgba(8, 37, 43, 0) 47%, rgba(3, 22, 26, 1) 100%); + } +} + +.webbpm.ervu_dashboard .container { + padding: var(--h-header) 0 0; + bottom: 0; + + .container-inside { + font-family: 'Gilroy'; + font-size: var(--size-text-primary); + padding: 0 var(--w-screen) var(--indent-mini) var(--w-screen); + } +} + +.webbpm.ervu_dashboard .header-logo { + display: flex; + flex-direction: row; + align-items: center; + margin-left: var(--w-screen); + + .logo a { + width: 100px; + height: var(--h-header); + background: url('../../../src/resources/img/logo-full.svg') no-repeat 0 50%; + background-size: auto 100%; + } + .logo-title { + font-family: 'GilroySB'; + margin-left: min(6vw, 7.5rem); /*120*/ + } +} + +.webbpm.ervu_dashboard .header-menu { + display: flex; + flex-direction: row; + margin-left: auto; + margin-right: var(--w-screen); + process, process + div, admin-menu { + display: none !important; + } + + .update-data { + color: var(--color-text-primary); + opacity: 0.4; + margin-right: 16px; + } + .logout { + max-width: max-content; + + & > button { + color: var(--color-text-primary); + line-height: 1.3; + padding: var(--indent-mini) var(--indent-xbase); + border: 1px solid var(--color-success); + background-color: var(--color-dark-20); + outline: none; + } + .nav-link { + padding-right: 0; + border-radius: var(--indent-medium) 0 0 var(--indent-medium); + border-right: 0; + } + .exit { + border-radius: 0 var(--indent-medium) var(--indent-medium) 0; + border-left: 0; + } + } +} + +.webbpm.ervu_dashboard .header { + display: flex; + font-family: 'Gilroy'; + font-size: var(--size-text-primary); + width: 100%; + height: auto; + min-height: var(--h-header); + background: transparent; + + & > div > * { + position: relative; + display: flex; + align-items: center; + } + + .dropdown-menu.show { + top: var(--h-header) !important; + right: 0px !important; + left: auto !important; + transform: none !important; + margin: 0; + border: 0; + border-radius: 0 0 10px 10px; + background-color: var(--white); + box-shadow: 0 8px 12px rgb(77 72 91 / 5%), 0 6px 10px rgb(77 72 91 / 0%); + + .dropdown-menu-inner { + max-height: calc(100vh - 140px); + overflow-y: auto; + } + } + + :is(process, admin-menu) .dropdown-menu.show { + top: 49px !important; + } + + .logout .dropdown-menu.show { + width: 300px; + } +} + +.webbpm.ervu_dashboard .dropdown-menu-inner:hover { + background-color: transparent; +} + +.webbpm.ervu_dashboard .dropdown-item { + padding: 4px 20px; + &:hover, + &:focus, + &:active { + color: var(--color-link); + background-color: transparent; + outline: transparent; + } +} + + + + + + +/*----------------- Login ---------------- */ +.webbpm.ervu_dashboard :is(.form-signin, .form-signup, .confirm) { + color: var(--color-text-primary); + width: 560px; + padding: 60px 80px; + margin: 30px auto; + border: 0; + border-radius: 20px; + border: 1px solid var(--color-text-secondary); + background-color: var(--color-dark-20); + box-shadow: var(--bg-shadow); + backdrop-filter: var(--bg-blur-40); +} + +.webbpm.ervu_dashboard :is(.form-signin, .form-signup) .row.title { + position: relative; + padding: 0; +} + +.webbpm.ervu_dashboard .form-signin h1, +.webbpm.ervu_dashboard .form-signin h2, +.webbpm.ervu_dashboard .form-signup h2, +.webbpm.ervu_dashboard .confirm h2 { + font-family: 'GilroySB'; + font-size: 32px; + text-align: left; + margin-bottom: 20px; +} + +.webbpm.ervu_dashboard :is(.form-signin, .form-signup, .confirm) .logo { + position: absolute; + top: -10px; + right: 0; + width: 145px; + height: 40px; + background: none; +} + +.webbpm.ervu_dashboard .form-signin .row.registration > * + *, +.webbpm.ervu_dashboard .form-signin .login-btn-box .password, +.webbpm.ervu_dashboard .form-signin .login-btn-box .btn + .btn { + margin-left: 20px; +} +/*--------------- end Login -------------- */ + +* { + scrollbar-width: thin; + scrollbar-color: var(--color-dark) transparent; +} +*::-webkit-scrollbar { + width: 8px; + height: 8px; + background-color: transparent; +} +*::-webkit-scrollbar-thumb { + border-radius: 8px; + background-color: var(--color-dark); +} +*::-webkit-scrollbar-track { + height: 8px; + background-color: transparent; +} + +@media ((max-width: 780px) or (orientation: portrait)) { + .webbpm.ervu_dashboard { + --size-text-title: 2rem; /*32px*/ + --size-text-subtitle: 1.5rem; /*24px*/ + --size-text-addprimary: 1.25rem; /*20px*/ + --size-text-primary: 1.125rem; /*18px*/ + --size-text-secondary: 0.875rem; /*14px*/ + + --size-num-title: 3.75rem; /*60px*/ + --size-num-subtitle: 3rem; /*48px*/ + --size-num-addtitle: 2.5rem; /*40px*/ + --size-num-primary: 2rem; /*32px*/ + --size-num-secondary: 1.5rem; /*24px*/ + + --indent-huge: 3rem; /*48*/ + --indent-xlarge: 2.5rem; /*40*/ + --indent-large: 2rem; /*32*/ + --indent-medium: 1.5rem; /*24*/ + --indent-xbase: 1.25rem; /*20*/ + --indent-base: 1rem; /*16*/ + --indent-small: 0.75rem; /*12px*/ + --indent-mini: 0.5rem; /*8px*/ + --indent-xmini: 0.25rem; /*4px*/ + + --h-header: 4.875rem; /*78*/ + --w-screen: 1rem; /*40*/ + } +} + +@media (max-width: 480px) { + .webbpm.ervu_dashboard { + --size-text-title: 1.75rem; /*28px*/ + --size-text-primary: 1rem; /*16px*/ + + --size-num-title: 3rem; /*48*/ + --size-num-subtitle: 2.5rem; /*40*/ + --size-num-addtitle: 2rem; /*32px*/ + --size-num-primary: 1.75rem; /*28px*/ + } +} \ No newline at end of file diff --git a/frontend/src/resources/css/structure.css b/frontend/src/resources/css/structure.css new file mode 100644 index 0000000..b7dd9ac --- /dev/null +++ b/frontend/src/resources/css/structure.css @@ -0,0 +1,846 @@ +:root { + --white: #ffffff; + --black: #000000; + --color-text-primary: #404954; + --color-link: #1c92ea; + --color-link-hover: #1b84d2; + --bg-light: #f5f7fa; + --bg-secondary: #4c5969; + --border-light: #e3e6ed; + + --size-text-primary: 16px; + --size-text-secondary: 14px; +} + +* { + margin: 0; + padding: 0; +} + +*, *:before, *:after { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +body.webbpm .form-signin label { + width: 160px; + margin-right: 0; +} + +.webbpm .progress { + position: absolute; + width: 64px; + height: 64px; + margin-bottom: 0 !important; + background: url("../img/progress.gif") no-repeat 0 0; +} + +.webbpm > .progress { + top: 50%; + left: 50%; + margin-top: -30px; + margin-left: -30px; +} + +.webbpm .search-task-progress-bar { + text-align: center; +} + +.webbpm .modal-body .progress, +.webbpm .search-task-progress-bar .progress { + position: relative; + top: 0; + margin-top: 0; +} + +/*-- common class --*/ +.webbpm .fl-left { + float: left; +} + +.webbpm .fl-right { + float: right; +} + +.webbpm .anchor { + float: none; + clear: both; +} + +.webbpm :is(ul, ol) li { + list-style: none; +} + +.webbpm :is(h1, h2, h3) { + margin: 0; + font-weight: normal; +} +.webbpm h1 { + font-size: 2.33em; +} +.webbpm h2 { + font-size: 2em; +} +.webbpm h3 { + font-size: 1.5em; +} + +.webbpm .table { + display: table; +} + +.webbpm .tr { + display: table-row; +} + +.webbpm .td, .webbpm .th { + display: table-cell; +} + +/*-- layout --*/ +html, body.webbpm { + width: 100%; + height: 100%; + display: block; +} + +body.webbpm { + background-color: #f9f9fa; + font-family: Arial; + font-size: var(--size-text-secondary); + min-height: 0; + padding: 0; +} + +.webbpm .wrapper { + height: 100%; + min-height: 100%; + position: relative; +} + +.webbpm .container { + width: 100%; + max-width: 100%; + height: auto; + margin: 0; + padding: 67px 0 0; + position: absolute; + top: 0px; + left: 0; + right: 0; + bottom: 50px; + border: 0; + overflow: hidden; + + [ng-include="taskPageFile"] { + position: relative; + min-height: 100%; + height: 100%; + overflow: auto; + } + .container-inside { + font-family: Arial; + font-size: var(--size-text-secondary); + position: relative; + height: 100%; + overflow: auto; + } +} + +.webbpm footer { + position: absolute; + color: var(--black); + font-size: 12px; + bottom: 0; + left: 15px; + right: 15px; + height: 50px; + padding: 15px 0; + border-top: 1px solid #c1c1c1; + background: transparent; + + span + span { + padding-left: 20px; + } +} +/*--------- TOP MENU ----------*/ +.webbpm .logo { + display: inline-block; + margin: 0; + float: left; + + a { + width: 200px; + height: 67px; + position: absolute; + background: url("../img/logo.png") no-repeat 0 0; + } +} + +.webbpm .header { + position: absolute; + color: var(--white); + font-family: Corbel; + font-size: var(--size-text-secondary); + top: 0; + left: 0; + right: 0; + height: 67px; + min-height: 67px; + line-height: normal; + border: 0; + padding: 0; + background: #b9c0ca; + z-index: 997; + + .nav .nav-link { + color: var(--white); + float: none; + display: block; + line-height: 60px; + padding: 0 15px 0 60px; + text-shadow: none; + cursor: pointer; + } + + .nav .nav-link:hover { + text-decoration: none; + } +} + +.webbpm .dropdown-menu { + background-color: #eee; +} + +.webbpm .nav .nav-item .dropdown-menu:after { + border-bottom: 6px solid #eee; +} + +.webbpm .inner { + overflow-y: auto; +} + +@media (min-width: 768px) { + .webbpm .navbar .nav > * { + float: left; + } +} + +@media (max-width: 767px) { + .webbpm .dropdown-menu > div > button { + color: #d1dbe5; + } +} + +/*--------- end - TOP MENU ----------*/ +.webbpm .user-department, +.webbpm .user-info { + color: #5a6473; +} + +.webbpm .user-info > * { + display: inline-block; + margin-left: 5px; +} + +.webbpm [log-out] { + max-width: 40%; + margin-right: 15px; +} + +.webbpm .content { + padding: 0 20px; +} + +.webbpm .inner { + min-height: 100%; + height: 100%; + overflow-y : scroll; +} + +/*--------------task-list------------------*/ +.task-list { + font-size: 0; + height: 100%; + min-height: 100%; +} + +.task-list > div { + display: block; + float: left; + height: 100%; + min-height: 100%; + font-size: var(--size-text-secondary); +} + +.task-list-tree-panel { + width: 20%; + background: #e9edf2; + border-right: 1px solid #b9c1ca; +} + +.task-list-tree-panel .task-list-filter { + position: relative; + margin-top: 15px; + z-index: 10; +} + +.task-list-tree-panel .task-list-filter li { + position: relative; + padding: 8px 10px; + margin: 2px 10px; +} + +.task-list-tree-panel .task-list-filter li::before { + content: ""; + position: absolute; + left: 0px; + bottom: 0px; + right: 0; + top: 0; + border: 1px solid rgb(206, 212, 219); + border-radius: 4px; + background-color: var(--white); + opacity: 0.6; +} + +.task-list-tree-panel .task-list-filter li label:hover { + cursor: pointer; +} + +.task-list-tree-panel .task-list-filter li label { + position: relative; + width: 100%; + margin: 0; + z-index: 11; +} + +.task-list-tree-panel .task-list-filter li label input[type="radio"] { + float: left; + margin-top: 2px; + margin-right: 4px; +} + +.task-list-tree-panel .task-list-filter li label span { + float: right; + background-color: #bbb; + padding: 0px 4px; + border-radius: 3px; + min-width: 25px; + text-align: center; + color: var(--white); +} + +.task-list-tree-panel .task-list-filter li.ontime label span { + background-color: #a0c367; +} + +.task-list-tree-panel .task-list-filter li.overdue label span { + background-color: #fc2d2d; +} + +.task-list-header { + border-bottom: 1px solid #b9c1ca; + background-color: #ccd6e0; + height: 30px; + line-height: 30px; + color: #565968; + font-size: var(--size-text-secondary); + padding: 0 12px; +} + +.structure-box { + padding: 15px; +} + +.task-list-workplace { + width: 80%; + padding: 15px 15px 0; + overflow-y: auto; +} +/*--------------task-list end--------------*/ + +/*---------------table-list----------------*/ +.task-tbl { + background: var(--white); + width: 100%; + border-collapse: collapse; +} + +.task-tbl .td, .task-tbl .th { + border: 1px solid #b9c1ca; + padding: 10px 15px; +} + +.task-tbl .th { + color: #565968; +} + +.task-tbl .td { + color: #333; +} + +.task-tbl .thead { + background: #ccd6e0; +} + +.task-tbl > .tr:hover { + cursor: pointer; + background: #e9edf2; +} + +.task-tbl .tr.task-ontime > .td.task, +.task-tbl .tr.task-overdue > .td.task { + position: relative; + padding-left: 20px; +} + +.task-tbl .tr.task-ontime > .td.task::before, +.task-tbl .tr.task-overdue > .td.task::before { + content: ""; + position: absolute; + top: 12px; + left: 5px; + width: 10px; + height: 10px; + background-color: #a0c367; + border-radius: 10px; + z-index: 1; +} + +.task-tbl .tr.task-overdue > .td.task::before { + background-color: #ff0000; +} +/*----------------table-list end----------------*/ + +/*--------------Окно сообщения об ошибке--------------*/ +.webbpm #toast-container { + font-size: 12px; + bottom: auto; + overflow-y: auto; + overflow-x: hidden; + max-height: 95%; +} + +.webbpm #toast-container .toast:hover { + box-shadow: 0 0 12px #999999; +} + +.webbpm #toast-container .ngx-toastr { + min-width: 540px; + opacity: 0.9; +} + +.webbpm #toast-container .toast-error { + background-color: #d9534f; +} + +.webbpm #toast-container .toast-close-button { + text-shadow: none; +} + +.webbpm .toast-message > div { + display: none; +} + +.webbpm .toast-message > .active { + display: block; +} + +.webbpm .toast-message > .active::after { + display: block; + content: ""; + float: none; + clear: both; +} + +.webbpm .toast-message > .active a { + float: right; + margin: 5px 0; +} + +.webbpm .toast-message > .toast-msg-close.active ~ .toast-msg-text { + display: block; + font-size: 0.8em; +} + +.webbpm .toast-message a:not([href]):not([tabindex]) { + text-decoration: underline; +} +/*------------Окно сообщения об ошибке end------------*/ + +/*----------------- Ошибка 404 -------------------*/ +.webbpm .container .task-not-found-page { + position: relative; + display: table; + width: 100%; + height: 100%; +} + +.webbpm .container .task-not-found-container { + display: table-cell; + color: var(--black); + font-size: 1.8em; + background-color: #c9d4e0; + text-align: center; + vertical-align: middle; +} + +.webbpm .container .task-not-found-container > div { + display: inline-block; +} + +.webbpm .container .task-not-found-container > div:first-child { + color: var(--white); + font-size: 7.8em; + font-weight: bold; +} + +.webbpm .container .task-not-found-container > div:last-child { + text-align: left; + margin-left: 40px; +} + +.webbpm .container .task-not-found-container h2 { + font-size: 2em; + margin-bottom: 10px; +} + + +.webbpm .container .task-not-found-container a { + cursor: pointer; +} +/*--------------- end Ошибка 404 -----------------*/ + +/*-------------- MOBILE --------------*/ +.webbpm.mobile .task-list-tree-panel, +.webbpm.mobile footer { + display: none; +} + +.webbpm.mobile .task-list-workplace { + margin-left: 0; +} + +.webbpm.mobile .container { + bottom: 0; +} + +.webbpm.mobile form { + overflow: hidden; +} + +.webbpm.mobile .form-signin { + width: auto; + padding: 20px; + margin: 40px 20px; + border-radius: 4px; +} + +.webbpm.mobile .form-signin h1, +.webbpm.mobile .form-signin h2 { + margin-left: 0; +} + +.webbpm.mobile .form-signin label { + text-align: left; +} + +.webbpm.mobile .form-signin input[type="text"], +.webbpm.mobile .form-signin input[type="password"] { + width: 100%; +} + +.webbpm.mobile .form-signin .login-btn-box { + width: auto; + margin-right: 0; +} +/*-------------- end MOBILE --------------*/ + + +/*-------------- НОВЫЙ ДИЗАЙН --------------*/ +/*------------------ Фильтры ------------------*/ +.webbpm .task-list { + height: auto; + min-height: auto; +} + +.webbpm .task-list > .task-list-tree-panel { + background: var(--white); + border-right: 0; +} + +.webbpm .task-list > .task-list-tree-panel, +.webbpm .task-list > .task-list-workplace { + font-size: var(--size-text-secondary); + float: none; + width: 100%; + height: auto; + min-height: auto; +} + +.webbpm .task-list-tree-panel .task-list-filter { + font-family: Corbel; + margin: 0; + box-shadow: 0px 4px 10px -5px rgba(40, 40, 40, 0.3); + + ul { + margin: 0; + } + + li { + display: inline-block; + padding: 12px 0px; + margin: 0; + + &:first-of-type { + font-size: 1.4em; + font-weight: bold; + width: 197px; + padding: 0 15px; + } + + &::before { + display: none; + } + + label { + font-size: 1.3em; + font-weight: normal; + } + + label div { + display: inline-block; + width: 10px; + height: 10px; + border-radius: 10px; + margin-right: 8px; + } + + &.ontime label div { + background-color: #2da6a1; + } + + &.overdue label div { + background-color: #9c5d7a; + } + + label input[type="radio"] { + float: none; + display: none; + } + + label span { + float: none; + color: var(--black); + font-weight: normal; + text-align: left; + min-width: auto; + padding: 5px 15px; + border-radius: 0; + background-color: transparent; + } + + label input[type="radio"].ng-valid-parse ~ span { + background-color: #eaedf2; + + } + } +} +/*-------------- end НОВЫЙ ДИЗАЙН --------------*/ + +.webbpm .dialog-stack-trace { + overflow-x: auto; + overflow-y: auto; + max-height: 300px; +} +.webbpm .dialog-show-button { + text-decoration: underline; + cursor: pointer; +} +.webbpm .dialog-error-number { + font-size: 1.25rem; +} +.webbpm .dialog-error-title { + font-size: 1rem; +} + +/*-- login --*/ +.webbpm :is(.form-signin, .form-signup, .confirm) { + color: #333; + width: 580px; + padding: 80px 100px; + margin: 20px auto; + border: 1px solid var(--bg-light); + background: var(--white); +} + +.webbpm .form-signin.esia { + width: 450px; + text-align: center; + padding: 45px 55px 35px 55px; +} + +.webbpm .form-signin h1, +.webbpm .form-signin h2, +.webbpm .form-signup h2, +.webbpm .confirm h2 { + text-align: center; + margin-bottom: 20px; +} + +.webbpm .form-signin.esia :is(h1, h2) { + margin-left: 0; +} + +.webbpm .form-signin label, +.webbpm .form-signup label { + margin-bottom: 0; +} + +.webbpm .form-signin input { + width: 240px; + font-size: var(--size-text-secondary); + display: inline-block; +} + +.webbpm .form-signin.esia input { + width: 160px; + margin-top: 40px; +} + +.webbpm :is(.form-signin, .form-signup) .row { + display: flex; + margin: 0 0 20px; +} + +.webbpm .registration-link, +.webbpm .login-link { + margin-right: 20px; + font-size: var(--size-text-secondary); +} + +.webbpm .form-signin .row.registration { + flex-direction: row; +} + +.webbpm .form-signin .login-btn-box { + display: flex; + flex-direction: row; + align-items: center; +} + +.webbpm .form-signin .row.registration > * + *, +.webbpm .form-signin .login-btn-box .password, +.webbpm .form-signin .login-btn-box .btn + .btn { + margin-left: 10px; +} + +.webbpm .input-group > .input-group-append > .input-group-text { + border-radius: 0; +} + +.webbpm .form-signin .register-btn-box, +.webbpm .form-signup .register-btn-box, +.webbpm .form-signup .reset-password-btn-box { + width: 220px; +} + +.webbpm .form-signup .row international-phone-number .flagInput .btn { + border-left: 1px solid #c6cdd3; +} +.webbpm .form-signup .row international-phone-number .flagInput ~ input { + border-left: none; +} + +.webbpm .form-signin .has-error .help-block { + padding-left: 125px; + font-size: var(--size-text-secondary); +} + +.webbpm .form-signup .has-account a { + margin-left: 10px; +} + +/*------------------ Формы регистрации и подтверждения ------------------*/ +.form-signup .has-account { + flex-direction: row; +} + +.form-signup .has-account a span, +.confirm a span { + margin-right: 4px; +} + +.form-signup .dropbtn.btn { + margin-bottom: 0; +} + +.form-signup .input-group-text { + border-left-width: 0; +} + +.form-signup input.ng-invalid.ng-touched, +.form-signup input.ng-invalid.ng-dirty { + border-color: red !important; +} + +.form-signup .msg-alert { + color: red; + font-size: 11px; + padding: 3px 0 0; +} + +.form-signup .consent { + color: #929292; + font-size: 13px; + margin-top: 20px; +} +/*------------------ End - Формы регистрации и подтверждения ------------------*/ + +/*------------------ Сообщения об ошибке ------------------*/ +.webbpm .error_message { + width: 650px; + margin: 0 auto; + margin-top: 10%; +} + +.webbpm .error_title { + position: relative; + color: #9c5d7a; + font-size: 5.5em; + font-weight: bold; + margin-left: 100px; + line-height: 1; +} +.webbpm .error_title::before { + position: absolute; + content: ""; + left: -100px; + width: 75px; + height: 75px; + border-radius: 40px; + background-color: #9c5d7a; + background-image: url("../img/access_denied.png"); + background-repeat: no-repeat; + background-position: 50% 50%; +} + +.webbpm .error_title_long { + margin-bottom: 20px; + font-size: 2.5em; +} + +.webbpm .error_body { + font-size: 2em; + line-height: 1.2; + margin: 5px 0 0 100px; +} +/*---------------- end Сообщения об ошибке ---------------*/ +/*-------------- Поле телефона ------------ */ +.flag { + background-image: url('./../img/country-flags.jpg') !important; +} +/*-------------- end Поле телефона ------------ */ + diff --git a/frontend/src/resources/css/style.css b/frontend/src/resources/css/style.css new file mode 100644 index 0000000..03ed56d --- /dev/null +++ b/frontend/src/resources/css/style.css @@ -0,0 +1,10 @@ +@import "../../../node_modules/angular-calendar/css/angular-calendar.css"; +@import "../../../node_modules/bootstrap/dist/css/bootstrap-grid.css"; +@import "../../../node_modules/bootstrap/dist/css/bootstrap-reboot.css"; +@import "../../../node_modules/bootstrap/dist/css/bootstrap.css"; +@import "../../../node_modules/bootstrap-icons/font/bootstrap-icons.css"; +@import "../../../node_modules/font-awesome/css/font-awesome.css"; +@import "../../../node_modules/@webbpm/base-package/css/style.css"; +@import "structure.css"; +@import "inbox-dashboard.css"; +@import "components-dashboard.css"; \ No newline at end of file diff --git a/frontend/src/resources/fonts/gilroy-extrabold.otf b/frontend/src/resources/fonts/gilroy-extrabold.otf new file mode 100644 index 0000000..7413e3d Binary files /dev/null and b/frontend/src/resources/fonts/gilroy-extrabold.otf differ diff --git a/frontend/src/resources/fonts/gilroy-light.otf b/frontend/src/resources/fonts/gilroy-light.otf new file mode 100644 index 0000000..dbc0512 Binary files /dev/null and b/frontend/src/resources/fonts/gilroy-light.otf differ diff --git a/frontend/src/resources/fonts/gilroy-medium.ttf b/frontend/src/resources/fonts/gilroy-medium.ttf new file mode 100644 index 0000000..c9ebeb5 Binary files /dev/null and b/frontend/src/resources/fonts/gilroy-medium.ttf differ diff --git a/frontend/src/resources/fonts/gilroy-regular.ttf b/frontend/src/resources/fonts/gilroy-regular.ttf new file mode 100644 index 0000000..586e79a Binary files /dev/null and b/frontend/src/resources/fonts/gilroy-regular.ttf differ diff --git a/frontend/src/resources/fonts/gilroy-semibold.ttf b/frontend/src/resources/fonts/gilroy-semibold.ttf new file mode 100644 index 0000000..30b5d25 Binary files /dev/null and b/frontend/src/resources/fonts/gilroy-semibold.ttf differ diff --git a/frontend/src/resources/img/access_denied.png b/frontend/src/resources/img/access_denied.png new file mode 100644 index 0000000..463c9ca Binary files /dev/null and b/frontend/src/resources/img/access_denied.png differ diff --git a/frontend/src/resources/img/admin.png b/frontend/src/resources/img/admin.png new file mode 100644 index 0000000..875b095 Binary files /dev/null and b/frontend/src/resources/img/admin.png differ diff --git a/frontend/src/resources/img/bg_image.png b/frontend/src/resources/img/bg_image.png new file mode 100644 index 0000000..0c133ba Binary files /dev/null and b/frontend/src/resources/img/bg_image.png differ diff --git a/frontend/src/resources/img/country-flags.jpg b/frontend/src/resources/img/country-flags.jpg new file mode 100644 index 0000000..84041f1 Binary files /dev/null and b/frontend/src/resources/img/country-flags.jpg differ diff --git a/frontend/src/resources/img/create.png b/frontend/src/resources/img/create.png new file mode 100644 index 0000000..6acd9d0 Binary files /dev/null and b/frontend/src/resources/img/create.png differ diff --git a/frontend/src/resources/img/icons/dots-six-vertical.svg b/frontend/src/resources/img/icons/dots-six-vertical.svg new file mode 100644 index 0000000..988e44a --- /dev/null +++ b/frontend/src/resources/img/icons/dots-six-vertical.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/frontend/src/resources/img/icons/settings-sm.svg b/frontend/src/resources/img/icons/settings-sm.svg new file mode 100644 index 0000000..ea2cc07 --- /dev/null +++ b/frontend/src/resources/img/icons/settings-sm.svg @@ -0,0 +1,3 @@ + + + diff --git a/frontend/src/resources/img/logo-full.png b/frontend/src/resources/img/logo-full.png new file mode 100644 index 0000000..92852b1 Binary files /dev/null and b/frontend/src/resources/img/logo-full.png differ diff --git a/frontend/src/resources/img/logo-full.svg b/frontend/src/resources/img/logo-full.svg new file mode 100644 index 0000000..4eb0301 --- /dev/null +++ b/frontend/src/resources/img/logo-full.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/frontend/src/resources/img/logo.png b/frontend/src/resources/img/logo.png new file mode 100644 index 0000000..4ac1eea Binary files /dev/null and b/frontend/src/resources/img/logo.png differ diff --git a/frontend/src/resources/img/progress.gif b/frontend/src/resources/img/progress.gif new file mode 100644 index 0000000..1a3b525 Binary files /dev/null and b/frontend/src/resources/img/progress.gif differ diff --git a/frontend/src/resources/img/project.png b/frontend/src/resources/img/project.png new file mode 100644 index 0000000..1ff9bcf Binary files /dev/null and b/frontend/src/resources/img/project.png differ diff --git a/frontend/src/resources/img/svg/arrow-right-wt.svg b/frontend/src/resources/img/svg/arrow-right-wt.svg new file mode 100644 index 0000000..9ca7316 --- /dev/null +++ b/frontend/src/resources/img/svg/arrow-right-wt.svg @@ -0,0 +1,4 @@ + + + + diff --git a/frontend/src/resources/img/svg/arrow-right.svg b/frontend/src/resources/img/svg/arrow-right.svg new file mode 100644 index 0000000..fdbe2ec --- /dev/null +++ b/frontend/src/resources/img/svg/arrow-right.svg @@ -0,0 +1,3 @@ + + + diff --git a/frontend/src/resources/img/svg/bg-diamond.svg b/frontend/src/resources/img/svg/bg-diamond.svg new file mode 100644 index 0000000..80d1038 --- /dev/null +++ b/frontend/src/resources/img/svg/bg-diamond.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/frontend/src/resources/img/svg/bg-pers.svg b/frontend/src/resources/img/svg/bg-pers.svg new file mode 100644 index 0000000..46e346c --- /dev/null +++ b/frontend/src/resources/img/svg/bg-pers.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/frontend/src/resources/img/svg/close.svg b/frontend/src/resources/img/svg/close.svg new file mode 100644 index 0000000..41f5164 --- /dev/null +++ b/frontend/src/resources/img/svg/close.svg @@ -0,0 +1,3 @@ + + + diff --git a/frontend/src/resources/img/svg/mark.svg b/frontend/src/resources/img/svg/mark.svg new file mode 100644 index 0000000..4d93782 --- /dev/null +++ b/frontend/src/resources/img/svg/mark.svg @@ -0,0 +1,3 @@ + + + diff --git a/frontend/src/resources/img/tasks.png b/frontend/src/resources/img/tasks.png new file mode 100644 index 0000000..4a70c51 Binary files /dev/null and b/frontend/src/resources/img/tasks.png differ diff --git a/frontend/src/resources/template/app/component/access_denied.html b/frontend/src/resources/template/app/component/access_denied.html new file mode 100644 index 0000000..c7db7c2 --- /dev/null +++ b/frontend/src/resources/template/app/component/access_denied.html @@ -0,0 +1,4 @@ +
+
403
+
Доступ запрещен
+
\ No newline at end of file diff --git a/frontend/src/resources/template/app/component/app_footer.html b/frontend/src/resources/template/app/component/app_footer.html new file mode 100644 index 0000000..76d99da --- /dev/null +++ b/frontend/src/resources/template/app/component/app_footer.html @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/frontend/src/resources/template/app/component/app_header.html b/frontend/src/resources/template/app/component/app_header.html new file mode 100644 index 0000000..106515f --- /dev/null +++ b/frontend/src/resources/template/app/component/app_header.html @@ -0,0 +1,10 @@ + diff --git a/frontend/src/resources/template/app/component/application_version.html b/frontend/src/resources/template/app/component/application_version.html new file mode 100644 index 0000000..61be19b --- /dev/null +++ b/frontend/src/resources/template/app/component/application_version.html @@ -0,0 +1 @@ +Версия: {{applicationVersion}} \ No newline at end of file diff --git a/frontend/src/resources/template/app/component/progress-indication.html b/frontend/src/resources/template/app/component/progress-indication.html new file mode 100644 index 0000000..95a901e --- /dev/null +++ b/frontend/src/resources/template/app/component/progress-indication.html @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/frontend/src/resources/template/ervu-dashboard/ErvuChartV2.html b/frontend/src/resources/template/ervu-dashboard/ErvuChartV2.html new file mode 100644 index 0000000..a14d3c6 --- /dev/null +++ b/frontend/src/resources/template/ervu-dashboard/ErvuChartV2.html @@ -0,0 +1,3 @@ +
+ +
diff --git a/frontend/src/resources/template/ervu-dashboard/FilterContainer.html b/frontend/src/resources/template/ervu-dashboard/FilterContainer.html new file mode 100644 index 0000000..d952686 --- /dev/null +++ b/frontend/src/resources/template/ervu-dashboard/FilterContainer.html @@ -0,0 +1,8 @@ +
+
+ +
+
diff --git a/frontend/src/resources/template/preview/preview.html b/frontend/src/resources/template/preview/preview.html new file mode 100644 index 0000000..dd079b2 --- /dev/null +++ b/frontend/src/resources/template/preview/preview.html @@ -0,0 +1,3 @@ +
+ +
\ No newline at end of file diff --git a/frontend/src/resources/template/preview/preview_container.html b/frontend/src/resources/template/preview/preview_container.html new file mode 100644 index 0000000..90c6b64 --- /dev/null +++ b/frontend/src/resources/template/preview/preview_container.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/resources/template/webbpm/home.html b/frontend/src/resources/template/webbpm/home.html new file mode 100644 index 0000000..50fb0d6 --- /dev/null +++ b/frontend/src/resources/template/webbpm/home.html @@ -0,0 +1,6 @@ +
+
+
+
+
+
\ No newline at end of file diff --git a/frontend/src/resources/template/webbpm/page.html b/frontend/src/resources/template/webbpm/page.html new file mode 100644 index 0000000..5d28658 --- /dev/null +++ b/frontend/src/resources/template/webbpm/page.html @@ -0,0 +1 @@ +
\ No newline at end of file diff --git a/frontend/src/resources/template/webbpm/webbpm.html b/frontend/src/resources/template/webbpm/webbpm.html new file mode 100644 index 0000000..720b940 --- /dev/null +++ b/frontend/src/resources/template/webbpm/webbpm.html @@ -0,0 +1,12 @@ +
+ + + +
+
+ +
+
+ + +
diff --git a/frontend/src/ts/ervu-dashboard/component/chart/ChartUtils.ts b/frontend/src/ts/ervu-dashboard/component/chart/ChartUtils.ts new file mode 100644 index 0000000..a1bce61 --- /dev/null +++ b/frontend/src/ts/ervu-dashboard/component/chart/ChartUtils.ts @@ -0,0 +1,30 @@ +import {Font} from "../../../generated/ervu_dashboard/model/Font"; +import {Chart} from "chart.js"; + +export class ChartUtils { + + public static isEmpty(chart: Chart) { + return 0 == chart.data.datasets + .map(value => value.data.length) + .reduce((x, y) => x + y, 0); + } + + public static getTextMetrics(ctx: CanvasRenderingContext2D, text: string, font: Font) { + ctx.font = this.getFont(font); + let textMetrics = ctx.measureText(text); + return { + height: textMetrics.fontBoundingBoxAscent + textMetrics.fontBoundingBoxDescent, + width: textMetrics.width + } + } + + public static getFont(font: Font): string { + return [font.weight, `${font.size}px`, font.family] + .filter(elem => elem) + .join(' '); + } + + public static clone(source: T): T { + return JSON.parse(JSON.stringify(source)); + } +} \ No newline at end of file diff --git a/frontend/src/ts/ervu-dashboard/component/chart/ErvuChartV2.ts b/frontend/src/ts/ervu-dashboard/component/chart/ErvuChartV2.ts new file mode 100644 index 0000000..70b5e1c --- /dev/null +++ b/frontend/src/ts/ervu-dashboard/component/chart/ErvuChartV2.ts @@ -0,0 +1,312 @@ +import 'chartjs-adapter-moment'; +import { + ChangeDetectionStrategy, + ChangeDetectorRef, + Component, + ElementRef, + Input +} from "@angular/core"; + +import {Chart as ChartJs, ChartType, DefaultDataPoint} from "chart.js"; +import "chartjs-adapter-moment"; +import { + AdvancedProperty, ChartConfigDto, + ChartScaleSettings, ChartTitleSettings, + ChartV2AdditionalElementProvider, ChartV2RpcService, + Control, Filter, + Filterable, FilterDelegate, NotNull, PointSettings, UnsupportedOperationError, + Visible +} from "@webbpm/base-package"; +import {ChartLegendSettings} from "./model/ChartLegendSettings"; +import {ChartBarSettings} from "./model/ChartBarSettings"; +import {ChartPlugin} from "./plugin/ChartPlugin"; +import {DoughnutCenterLabelsPlugin} from "./plugin/DoughnutCenterLabelsPlugin"; +import {ChartUtils} from "./ChartUtils"; + +@Component({ + moduleId: module.id, + selector: 'ervu-chart-v2', + templateUrl: './../../../../../src/resources/template/ervu-dashboard/ErvuChartV2.html', + changeDetection: ChangeDetectionStrategy.OnPush + }) +export class ErvuChartV2 extends Control implements Filterable { + @Visible("false") + public disabled: boolean; + + @Input() + public indexAxis: string = 'x'; + @Input() + public title: ChartTitleSettings; + @Input() + public legend: ChartLegendSettings; + @Input() + public points: PointSettings; + @Input() + public scales: ChartScaleSettings[]; + + public bars: ChartBarSettings; + + @NotNull() + public loadOnStart: boolean = true; + + @Visible("false") + @Input() + public chart: ChartJs, unknown>; + + @NotNull() + @AdvancedProperty() + public showTooltip: boolean = true; + + @NotNull() + @AdvancedProperty() + public responsive: boolean = true; + + @NotNull() + @AdvancedProperty() + public maintainAspectRatio: boolean = false; + + @NotNull() + @AdvancedProperty() + public addDataSetsVisibilityToggleDataset: boolean = false; + + @AdvancedProperty() + @Visible("addDataSetsVisibilityToggleDataset==true") + @NotNull("addDataSetsVisibilityToggleDataset==true") + public hideAllDatasetsLabel: string = 'Cкрыть все'; + + @AdvancedProperty() + @Visible("addDataSetsVisibilityToggleDataset==true") + @NotNull("addDataSetsVisibilityToggleDataset==true") + public showAllDatasetsLabel: string = 'Показать все'; + + @AdvancedProperty() + public noDataText: string = "Нет данных для отображения"; + @AdvancedProperty() + public noDataFont: string = "20px Arial"; + @AdvancedProperty() + public noDataStyle: string = "rgb(100,100,100)"; + + private chartRpcService: ChartV2RpcService; + private filterMap: { [key: string]: Filter } = {}; + private loadEnabled: boolean = true; + private filterDelegate: FilterDelegate; + private chartConfig; + private plugins: ChartPlugin[] = []; + + private noDataPlugin = { + afterDraw: (chart) => { + + if (ChartUtils.isEmpty(chart)) { + let ctx = chart.ctx; + let width = chart.width; + let height = chart.height; + ctx.textAlign = "center"; + ctx.textBaseline = "middle"; + ctx.font = this.noDataFont; + ctx.fillStyle = this.noDataStyle; + ctx.fillText(this.noDataText, width / 2, height / 2); + ctx.restore(); + } + }, + }; + + private addAdditionalElementsPlugin = { + afterDraw: () => { + this.getScripts(ChartV2AdditionalElementProvider) + .forEach(additionalElementProvider => + additionalElementProvider.addAdditionalElement(this)) + }, + }; + + constructor(el: ElementRef, cd: ChangeDetectorRef) { + super(el, cd); + } + + initialize(): void { + super.initialize(); + this.chartRpcService = this.getScript(ChartV2RpcService); + this.filterDelegate = this.getScript(FilterDelegate); + this.plugins = this.getScripts('ervu-dashboard.component.chart.plugin.ChartPlugin'); + } + + start(): void { + super.start(); + + if (this.loadOnStart) { + this.chartRpcService + .getChartData(null, null, []) + .then((config: ChartConfigDto) => { + this.loadDataAndPaint( + config + ) + }) + } + } + + addFilter(filter: Filter): void { + this.filterMap[filter.componentGuid] = filter; + + if (this.filterDelegate) { + this.filterDelegate.addFilter(filter); + } + } + + disableInitialLoading() { + this.loadOnStart = false; + this.loadEnabled = false; + + if (this.filterDelegate) { + this.filterDelegate.disableInitialLoading(); + } + } + + reload(filters: Filter[]): void { + filters.forEach((filter: Filter) => this.addFilter(filter)); + this.refresh(); + + if (this.filterDelegate) { + this.filterDelegate.reload(filters); + } + } + + removeFilter(guid: string): Filter { + let ret = this.filterMap[guid]; + delete this.filterMap[guid]; + + if (this.filterDelegate) { + this.filterDelegate.removeFilter(guid); + } + return ret; + } + + getFilters(): Filter[] { + return Object.values(this.filterMap); + } + + @Visible() + public refresh() { + this.chartRpcService + .getChartData(null, null, this.getFilters()) + .then((configDto: ChartConfigDto) => this.loadDataAndPaint(configDto)); + } + + public loadDataAndPaint(config: ChartConfigDto) { + this.initAndSaveChartData(config); + this.repaint(this.chartConfig); + } + + private initAndSaveChartData(chartConfig) { + //To make visible empty chart in preview mode + if (!chartConfig) { + chartConfig = {}; + } + let chartOptions: any = {}; + chartConfig.options = chartOptions; + chartOptions.maintainAspectRatio = this.maintainAspectRatio; + chartOptions.responsive = this.responsive; + + if (this.indexAxis) { + chartOptions.indexAxis = this.indexAxis; + } + + chartOptions.plugins = chartOptions.plugins ? chartOptions.plugins : {}; + + chartOptions.plugins.legend = this.legend ? this.legend : {}; + chartOptions.plugins.tooltip = {enabled: this.showTooltip}; + + if (this.title && this.title.text) { + chartOptions.plugins.title = this.title; + } + + if (this.addDataSetsVisibilityToggleDataset && chartConfig.data.datasets && + chartConfig.data.datasets.length > 0) { + let datasetLength = chartConfig.data.datasets.length; + chartConfig.data.datasets.push({ + label: this.hideAllDatasetsLabel, + xAxisID: {display: false}, + yAxisID: {display: false} + }); + + chartOptions.plugins.legend.onClick = (e, legendItem, legend) => { + const index = legendItem.datasetIndex; + const chartObj = legend.chart; + + let datasetMeta = chartObj.getDatasetMeta(index); + + if (datasetLength == index) { + let showAll = datasetMeta.label == this.showAllDatasetsLabel; + chartObj.data.datasets[index].label = + showAll ? this.hideAllDatasetsLabel : this.showAllDatasetsLabel; + + for (let i = 0; i < datasetLength; i++) { + chartObj.setDatasetVisibility(i, showAll); + } + chartObj.update(); + } + else { + if (chartObj.isDatasetVisible(index)) { + chartObj.hide(index); + legendItem.hidden = true; + } + else { + chartObj.show(index); + legendItem.hidden = false; + } + } + }; + } + + if (chartConfig.data.datasets) { // remove it after change type of ChartDataSetDto.backgroundColor + chartConfig.data.datasets.forEach(dataset => { + if (dataset.backgroundColors) dataset.backgroundColor = dataset.backgroundColors; + }); + } + + if (this.points) { + chartOptions.elements = chartOptions.elements ? chartOptions.elements : {}; + chartOptions.elements.point = this.points; + } + + if (this.scales) { + chartOptions.scales = {}; + this.scales.forEach((scale: ChartScaleSettings) => { + chartOptions.scales[scale.scaleId] = scale.toChartJsSettings(); + }); + } + + if (this.bars) { + chartOptions.scales = chartOptions.scales ? chartOptions.scales : {}; + chartOptions.scales.x = this.bars.x; + chartOptions.scales.y = this.bars.y + } + + chartConfig.tooltips = { + callbacks: { + title: function (tooltipItem, data) { + return data.labels[tooltipItem[0].index] + }, + label: function (tooltipItem, data) { + let dataset = data.datasets[tooltipItem.datasetIndex]; + return dataset.label + ": " + dataset.data[tooltipItem.index]; + } + } + }; + this.chartConfig = chartConfig; + } + + private repaint(chartData) { + if (this.chart) { + this.chart.destroy(); + } + let canvasEl = this.el.nativeElement.querySelector('canvas'); + let chartConfig = { + plugins: [this.noDataPlugin, this.addAdditionalElementsPlugin, ...this.plugins] + }; + + this.chart = new ChartJs(canvasEl, jQuery.extend(true, chartConfig, chartData)); + } + + clear() { //todo SUPPORT-4909 + throw new UnsupportedOperationError("Unsupported operation"); + } +} diff --git a/frontend/src/ts/ervu-dashboard/component/chart/model/AxisGridSettings.ts b/frontend/src/ts/ervu-dashboard/component/chart/model/AxisGridSettings.ts new file mode 100644 index 0000000..48b7258 --- /dev/null +++ b/frontend/src/ts/ervu-dashboard/component/chart/model/AxisGridSettings.ts @@ -0,0 +1,4 @@ +export class AxisGridSettings { + public display: boolean = true; + public drawBorder: boolean = true; +} \ No newline at end of file diff --git a/frontend/src/ts/ervu-dashboard/component/chart/model/AxisSettings.ts b/frontend/src/ts/ervu-dashboard/component/chart/model/AxisSettings.ts new file mode 100644 index 0000000..86a3937 --- /dev/null +++ b/frontend/src/ts/ervu-dashboard/component/chart/model/AxisSettings.ts @@ -0,0 +1,8 @@ +import {AxisGridSettings} from "./AxisGridSettings"; +import {AxisTicksSettings} from "./AxisTicksSettings"; + +export class AxisSettings { + public grid: AxisGridSettings; + public ticks: AxisTicksSettings; + public grace: string; +} \ No newline at end of file diff --git a/frontend/src/ts/ervu-dashboard/component/chart/model/AxisTicksSettings.ts b/frontend/src/ts/ervu-dashboard/component/chart/model/AxisTicksSettings.ts new file mode 100644 index 0000000..cd5e97a --- /dev/null +++ b/frontend/src/ts/ervu-dashboard/component/chart/model/AxisTicksSettings.ts @@ -0,0 +1,3 @@ +export class AxisTicksSettings { + public display: boolean = true; +} \ No newline at end of file diff --git a/frontend/src/ts/ervu-dashboard/component/chart/model/ChartBarSettings.ts b/frontend/src/ts/ervu-dashboard/component/chart/model/ChartBarSettings.ts new file mode 100644 index 0000000..dc9dc38 --- /dev/null +++ b/frontend/src/ts/ervu-dashboard/component/chart/model/ChartBarSettings.ts @@ -0,0 +1,6 @@ +import {AxisSettings} from "./AxisSettings"; + +export class ChartBarSettings { + public x: AxisSettings; + public y: AxisSettings; +} \ No newline at end of file diff --git a/frontend/src/ts/ervu-dashboard/component/chart/model/ChartLegendSettings.ts b/frontend/src/ts/ervu-dashboard/component/chart/model/ChartLegendSettings.ts new file mode 100644 index 0000000..dfbb2b0 --- /dev/null +++ b/frontend/src/ts/ervu-dashboard/component/chart/model/ChartLegendSettings.ts @@ -0,0 +1,19 @@ +import { + ChartElementAlign, + ChartElementPosition, ChartFontSettings, + ChartLegendTitleSettings, + ColorEditor +} from "@webbpm/base-package"; + +export class ChartLegendSettings { + public display: boolean = true; + public fullSize: boolean; + @ColorEditor() + public color: string; + + public align: ChartElementAlign = ChartElementAlign.CENTER; + public position: ChartElementPosition = ChartElementPosition.TOP; + + public font: ChartFontSettings; + public title: ChartLegendTitleSettings; +} diff --git a/frontend/src/ts/ervu-dashboard/component/chart/plugin/ArcBackgroundChartPlugin.ts b/frontend/src/ts/ervu-dashboard/component/chart/plugin/ArcBackgroundChartPlugin.ts new file mode 100644 index 0000000..715e2b9 --- /dev/null +++ b/frontend/src/ts/ervu-dashboard/component/chart/plugin/ArcBackgroundChartPlugin.ts @@ -0,0 +1,54 @@ +import {Behavior, ColorEditor, Visible} from "@webbpm/base-package"; +import {ChartPlugin} from "./ChartPlugin"; +import {Chart, ChartMeta} from "chart.js"; +import {ArcDatasetBackgroundConfig} from "./model/ArcDatasetBackgroundConfig"; +import {ChartUtils} from "../ChartUtils"; + +export class ArcBackgroundChartPlugin extends Behavior implements ChartPlugin { + @Visible('false') + id: string = 'arcDatasetBackground'; + + public backgroundRadiusPercent: number = 100; + @ColorEditor() + public backgroundColor: string = '#FFFFFF1B'; + public datasetBackgroundConfig: ArcDatasetBackgroundConfig[]; + + beforeDatasetsDraw(chart: Chart): void { + if (ChartUtils.isEmpty(chart)) { + return; + } + + let ctx = chart.ctx; + let radius = Math.min(chart.height, chart.width) / 2; + // Дуги рисуются чуть ниже, чем в центре, поэтому, чтобы при 100% круги не обрезались, умножаем на 0.97 + radius *= (this.backgroundRadiusPercent / 100 * 0.97); + let centerX = chart.getDatasetMeta(0).data[0].x; + let centerY = chart.getDatasetMeta(0).data[0].y; + + ctx.fillStyle = this.backgroundColor; + ctx.save(); + ctx.beginPath(); + ctx.arc(centerX, centerY, radius, 0, Math.PI * 2); + ctx.fill(); + ctx.restore(); + } + + public beforeDatasetDraw(chart: Chart, args: { index: number; meta: ChartMeta }) { + if (!this.datasetBackgroundConfig || !this.datasetBackgroundConfig[args.index] || !args.meta.data[0]) { + return; + } + + let ctx = chart.ctx; + let config = this.datasetBackgroundConfig[args.index]; + let arc = args.meta.data[0] as any; + + ctx.fillStyle = config.color; + ctx.save(); + ctx.beginPath(); + ctx.arc(arc.x, arc.y, arc.outerRadius * (100 + config.outerBorderPercent) / 100, 0, Math.PI * 2, false); + ctx.arc(arc.x, arc.y, arc.innerRadius * (100 - config.innerBorderPercent) / 100, 0, Math.PI * 2, true); + ctx.fill(); + ctx.restore(); + } + +} \ No newline at end of file diff --git a/frontend/src/ts/ervu-dashboard/component/chart/plugin/BarDataLabelChartPlugin.ts b/frontend/src/ts/ervu-dashboard/component/chart/plugin/BarDataLabelChartPlugin.ts new file mode 100644 index 0000000..70d1bdb --- /dev/null +++ b/frontend/src/ts/ervu-dashboard/component/chart/plugin/BarDataLabelChartPlugin.ts @@ -0,0 +1,48 @@ +import { + AnalyticalScope, + Behavior, + ChartFontFamily, ColorEditor, NotNull, + Visible +} from "@webbpm/base-package"; +import {ChartPlugin} from "./ChartPlugin"; +import {Chart, ChartMeta} from "chart.js"; +import {ErvuChartV2} from "../ErvuChartV2"; +import {ChartUtils} from "../ChartUtils"; + +@AnalyticalScope(ErvuChartV2) +export class BarDataLabelChartPlugin extends Behavior implements ChartPlugin { + @Visible('false') + id: string = 'barDataLabel'; + + public labelAxis = 'y'; + + public weight: number = 500; + public size: number = 12; + public family: ChartFontFamily = ChartFontFamily.SANS_SERIF; + + public useStaticColor: boolean = true; + @Visible('useStaticColor == true') + @NotNull('useStaticColor == true') + @ColorEditor() + public color: string; + + afterDatasetDraw(chart: Chart, args: { index: number; meta: ChartMeta }): void { + let ctx = chart.ctx; + let data = chart.data.datasets[args.index]; + args.meta.data.forEach((datapoint: any, i) => { + ctx.font = ChartUtils.getFont({ + family: this.family, + weight: String(this.weight), + size: this.size + }); + ctx.textAlign = 'center'; + ctx.fillStyle = this.useStaticColor ? this.color : datapoint.options.backgroundColor; + ctx.fillText(this.getLabel(data, i), datapoint.x, datapoint.y - 6); + }) + } + + private getLabel(data: any, index: number): string { + let point = data.data[index]; + return typeof point == 'object' ? point[this.labelAxis] : point; + } +} \ No newline at end of file diff --git a/frontend/src/ts/ervu-dashboard/component/chart/plugin/ChartPlugin.ts b/frontend/src/ts/ervu-dashboard/component/chart/plugin/ChartPlugin.ts new file mode 100644 index 0000000..18f35cb --- /dev/null +++ b/frontend/src/ts/ervu-dashboard/component/chart/plugin/ChartPlugin.ts @@ -0,0 +1,13 @@ +import {Chart, ChartMeta} from "chart.js"; + +export interface ChartPlugin { + id: string; + + beforeDraw?(chart: Chart): void; + beforeDatasetsDraw?(chart: Chart, args?: { cancellable: true }, options?: any): void; + beforeDatasetDraw?(chart: Chart, args: { index: number; meta: ChartMeta }): void; + + afterDatasetDraw?(chart: Chart, args: { index: number; meta: ChartMeta }): void; + afterDatasetsDraw?(chart: Chart, args?: unknown, options?: any): void; + afterDraw?(chart: Chart): void; +} \ No newline at end of file diff --git a/frontend/src/ts/ervu-dashboard/component/chart/plugin/DoughnutCenterLabelsPlugin.ts b/frontend/src/ts/ervu-dashboard/component/chart/plugin/DoughnutCenterLabelsPlugin.ts new file mode 100644 index 0000000..2001177 --- /dev/null +++ b/frontend/src/ts/ervu-dashboard/component/chart/plugin/DoughnutCenterLabelsPlugin.ts @@ -0,0 +1,127 @@ +import {ChartPlugin} from "./ChartPlugin"; +import {Chart} from "chart.js"; +import { + ChartLabelModel +} from "../../../../generated/ervu_dashboard/model/chart/round/label/ChartLabelModel"; +import {ChartUtils} from "../ChartUtils"; +import {AnalyticalScope, Behavior, ChartFontFamily, Visible} from "@webbpm/base-package"; +import {ErvuChartV2} from "../ErvuChartV2"; +import {ChartLabelFormatter} from "./formatters/ChartLabelFormatter"; + +@AnalyticalScope(ErvuChartV2) +export class DoughnutCenterLabelsPlugin extends Behavior implements ChartPlugin { + public static readonly ID = 'doughnut-center-labels'; + private static readonly DEFAULTS = { + color: 'rgb(255, 255, 255)', + font: { + family: ChartFontFamily.SANS_SERIF, + weight: '500', + size: 14 + } + } + + @Visible('false') + public id: string = DoughnutCenterLabelsPlugin.ID; + + public formatters: ChartLabelFormatter[] = []; + + beforeDatasetsDraw(chart: Chart, args?: { cancellable: true }, options?: any): void { + if (!chart.data || !chart.data.datasets || !(chart.data).centerLabels || ChartUtils.isEmpty(chart)) { + return; + } + + let ctx = chart.ctx; + let {top, bottom, left, right} = chart.chartArea; + + let centerLabels = ChartUtils.clone((chart.data).centerLabels as ChartLabelModel[]); + this.processLabels(centerLabels); + + let textAreaSize = this.getTextSize(chart, centerLabels); + + const diagonal = Math.sqrt( + Math.pow(textAreaSize.width, 2) + Math.pow(textAreaSize.height, 2) + ); + const innerDiameter = this.getInnerRadius(chart) * 2; + const fitRatio = innerDiameter / diagonal; + + if (fitRatio < 1) { + centerLabels.forEach(label => { + label.font.size = Math.floor(label.font.size * fitRatio); + }); + + textAreaSize = this.getTextSize(chart, centerLabels); + } + + ctx.textAlign = "center"; + ctx.textBaseline = "middle"; + + const centerX = (left + right) / 2; + const centerY = (top + bottom) / 2; + + const topY = centerY - textAreaSize.height / 2; + + let currentHeight = 0; + centerLabels.forEach(label => { + let textMetrics = ChartUtils.getTextMetrics(ctx, label.text, label.font); + + ctx.fillStyle = label.color + ctx.font = ChartUtils.getFont(label.font); + + const lineCenterY = topY + currentHeight + textMetrics.height / 2; + currentHeight += textMetrics.height; + + ctx.fillText(label.text, centerX, lineCenterY); + }) + } + + protected getTextSize(chart: Chart, centerLabels: ChartLabelModel[]) { + const {ctx} = chart; + const prev = ctx.font; + let width = 0; + let height = 0; + + centerLabels.forEach(label => { + let metrics = ChartUtils.getTextMetrics(ctx, label.text, label.font); + width = Math.max(metrics.width, width); + height += metrics.height; + }); + + ctx.font = prev; + + return { + height: height, + width: width + }; + } + + protected processLabels(labels: ChartLabelModel[]) { + labels.forEach((label, index) => { + let formatter = this.formatters[index]; + if (formatter) { + formatter.format(label, labels, index); + } + + label.color = label.color ? label.color : DoughnutCenterLabelsPlugin.DEFAULTS.color; + + if (label.font) { + label.font.family = + label.font.family ? label.font.family : DoughnutCenterLabelsPlugin.DEFAULTS.font.family; + label.font.weight = + label.font.weight ? label.font.weight : DoughnutCenterLabelsPlugin.DEFAULTS.font.weight; + label.font.size = + label.font.size ? label.font.size : DoughnutCenterLabelsPlugin.DEFAULTS.font.size; + } + else { + label.font = DoughnutCenterLabelsPlugin.DEFAULTS.font + } + }); + } + + protected getInnerRadius(chart: Chart): number { + return chart.getSortedVisibleDatasetMetas() + .map(meta => meta.data[0]) + .filter(meta => meta) + .map((arc: any) => arc.innerRadius as number) + .reduce((prev, curr) => Math.min(prev, curr), chart.width / 2); + } +} \ No newline at end of file diff --git a/frontend/src/ts/ervu-dashboard/component/chart/plugin/RoundArcCornersChartPlugin.ts b/frontend/src/ts/ervu-dashboard/component/chart/plugin/RoundArcCornersChartPlugin.ts new file mode 100644 index 0000000..3dc0582 --- /dev/null +++ b/frontend/src/ts/ervu-dashboard/component/chart/plugin/RoundArcCornersChartPlugin.ts @@ -0,0 +1,42 @@ +import {AnalyticalScope, Behavior, Visible} from "@webbpm/base-package"; +import {ChartPlugin} from "./ChartPlugin"; +import {Chart, ChartMeta} from "chart.js"; +import {ErvuChartV2} from "../ErvuChartV2"; + +@AnalyticalScope(ErvuChartV2) +export class RoundArcCornersChartPlugin extends Behavior implements ChartPlugin { + @Visible('false') + id: string = 'roundArcCorners'; + + /** + * Основная идея: нарисовать полукруги на концах дуг, создавая эффект закругленности + */ + afterDatasetDraw(chart: Chart, args: { index: number; meta: ChartMeta }): void { + const ctx = chart.ctx; + const datasetMeta = args.meta; + // Обходим бублик против часовой стрелки, так как полукруги наслаиваются и начинают друг друга перекрывать + for (let i = datasetMeta.data.length - 1; i >= 0; i--) { + if (!chart.getDataVisibility(i)) continue; + + let data = datasetMeta.data[i] as any; + let x = data.x; + let y = data.y; + let innerRadius = data.innerRadius; + let outerRadius = data.outerRadius; + // берем немного против часовой стрелки, чтобы не возникало стыков + let endAngle = data.endAngle - Math.PI / 180 * 0.65; + let radius = (outerRadius - innerRadius) / 2; + let xCoor = Math.cos(endAngle) * (innerRadius + radius); + let yCoor = Math.sin(endAngle) * (innerRadius + radius); + ctx.save(); + ctx.fillStyle = data.options.backgroundColor; + ctx.translate(x, y); + ctx.beginPath(); + // рисуем полукруг немного большего радиуса, чтобы не возникало стыков + ctx.arc(xCoor, yCoor, radius, endAngle, endAngle + Math.PI * 1.008); + ctx.fill(); + ctx.restore(); + } + } + +} \ No newline at end of file diff --git a/frontend/src/ts/ervu-dashboard/component/chart/plugin/formatters/ChartLabelFormatter.ts b/frontend/src/ts/ervu-dashboard/component/chart/plugin/formatters/ChartLabelFormatter.ts new file mode 100644 index 0000000..f166027 --- /dev/null +++ b/frontend/src/ts/ervu-dashboard/component/chart/plugin/formatters/ChartLabelFormatter.ts @@ -0,0 +1,7 @@ +import { + ChartLabelModel +} from "../../../../../generated/ervu_dashboard/model/chart/round/label/ChartLabelModel"; + +export interface ChartLabelFormatter { + format(label: ChartLabelModel, labels?: ChartLabelModel[], index?: number): void; +} \ No newline at end of file diff --git a/frontend/src/ts/ervu-dashboard/component/chart/plugin/formatters/UnitsLabelReplaceValueChartLabelFormatter.ts b/frontend/src/ts/ervu-dashboard/component/chart/plugin/formatters/UnitsLabelReplaceValueChartLabelFormatter.ts new file mode 100644 index 0000000..7ff5f8a --- /dev/null +++ b/frontend/src/ts/ervu-dashboard/component/chart/plugin/formatters/UnitsLabelReplaceValueChartLabelFormatter.ts @@ -0,0 +1,58 @@ +import {ChartLabelFormatter} from "./ChartLabelFormatter"; +import { + ChartLabelModel +} from "../../../../../generated/ervu_dashboard/model/chart/round/label/ChartLabelModel"; +import {NotNull, Visible} from "@webbpm/base-package"; +import {FormatterUtils} from "../../../../formatter/FormatterUtils"; + +export class UnitsLabelReplaceValueChartLabelFormatter implements ChartLabelFormatter { + public valuesToReplace: string[]; + public replaceValue: string = ''; + public noDataValue: string = ''; + + @NotNull() + public labelValueIndex: number; + + public replaceDataLabel: string = ''; + + public unitsLabel: string = ''; + public thousandsLabel: string = ''; + public millionsLabel: string = ''; + public billionsLabel: string = ''; + + public decimalDelimiter: string; + + @NotNull('decimalDelimiter != null') + @Visible('decimalDelimiter != null') + public decimalLength: number = 0; + + format(numberValueModel: ChartLabelModel, labels?: ChartLabelModel[], index?: number): void { + let labelValueModel = labels[this.labelValueIndex]; + + if (!numberValueModel.text) { + numberValueModel.text = this.noDataValue; + labelValueModel.text = this.replaceDataLabel; + } + + if (this.valuesToReplace && this.valuesToReplace.includes(numberValueModel.text)) { + numberValueModel.text = this.replaceValue; + labelValueModel.text = this.replaceDataLabel; + } + + let result = FormatterUtils.formatNumber({ + value: numberValueModel.text, + + unitsLabel: this.unitsLabel, + thousandsLabel: this.thousandsLabel, + millionsLabel: this.millionsLabel, + billionsLabel: this.billionsLabel, + + decimalDelimiter: this.decimalDelimiter, + decimalLength: this.decimalLength + }); + + numberValueModel.text = result.formattedNumber; + labelValueModel.text = result.label; + } + +} \ No newline at end of file diff --git a/frontend/src/ts/ervu-dashboard/component/chart/plugin/model/ArcDatasetBackgroundConfig.ts b/frontend/src/ts/ervu-dashboard/component/chart/plugin/model/ArcDatasetBackgroundConfig.ts new file mode 100644 index 0000000..e96ad7b --- /dev/null +++ b/frontend/src/ts/ervu-dashboard/component/chart/plugin/model/ArcDatasetBackgroundConfig.ts @@ -0,0 +1,8 @@ +import {ColorEditor} from "@webbpm/base-package"; + +export class ArcDatasetBackgroundConfig { + @ColorEditor() + public color: string; + public outerBorderPercent: number = 0; + public innerBorderPercent: number = 0; +} \ No newline at end of file diff --git a/frontend/src/ts/ervu-dashboard/component/filter/FilterContainer.ts b/frontend/src/ts/ervu-dashboard/component/filter/FilterContainer.ts new file mode 100644 index 0000000..4bade05 --- /dev/null +++ b/frontend/src/ts/ervu-dashboard/component/filter/FilterContainer.ts @@ -0,0 +1,162 @@ +import { + AdvancedProperty, + FieldValueFromVariable, + FilterComponent, + FilterValuesStrategy, + IInputControl, + IReadablePageObjectStorage, + IWritablePageObjectStorage, + LocalStorageService, + NotNull, + PageContextHolder, + PageObjectByIdStorage, + PageObjectByNameStorage, + PageObjectUtils, + TaskParamsProvider, + ValidatableContainer, + Visible +} from "@webbpm/base-package"; +import {ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef} from "@angular/core"; + +@Component({ + moduleId: module.id, + selector: 'filter-container', + templateUrl: './../../../../../src/resources/template/ervu-dashboard/FilterContainer.html', + changeDetection: ChangeDetectionStrategy.OnPush + }) +export class FilterContainer extends ValidatableContainer { + + @AdvancedProperty() + public filterValuesLoadStrategy: FilterValuesStrategy; + + @Visible("filterValuesLoadStrategy == FilterValuesStrategy.BY_CUSTOM_NAME") + @NotNull("filterValuesLoadStrategy == FilterValuesStrategy.BY_CUSTOM_NAME") + @AdvancedProperty() + public filterValuesLoadStorageName: string; + + @AdvancedProperty() + public filterValuesSaveStrategy: FilterValuesStrategy; + + @Visible("filterValuesSaveStrategy == FilterValuesStrategy.BY_CUSTOM_NAME") + @NotNull("filterValuesSaveStrategy == FilterValuesStrategy.BY_CUSTOM_NAME") + @AdvancedProperty() + public filterValuesSaveStorageName: string; + + protected localStorageService: LocalStorageService; + protected taskParamsProvider: TaskParamsProvider; + protected pageContextHolder: PageContextHolder; + + protected loadFilterCache: IReadablePageObjectStorage; + protected saveFilterCache: IWritablePageObjectStorage; + + constructor(el: ElementRef, cd: ChangeDetectorRef) { + super(el, cd); + } + + initialize() { + super.initialize(); + this.taskParamsProvider = this.injector.get(TaskParamsProvider); + this.localStorageService = this.injector.get(LocalStorageService); + this.pageContextHolder = this.injector.get(PageContextHolder); + this.loadFilterCache = + this.getFilterCache(this.filterValuesLoadStrategy, this.filterValuesLoadStorageName); + this.saveFilterCache = + this.getFilterCache(this.filterValuesSaveStrategy, this.filterValuesSaveStorageName); + } + + public start() { + super.start(); + return this.loadInitialValues() + } + + public loadInitialValues(): Promise { + const scriptsInChildren: FilterComponent[] = this.getContainerComponents(FilterComponent); + scriptsInChildren.forEach((filter: FilterComponent) => filter.setInitFilterInput()); + + let fieldValueFromVariable: FieldValueFromVariable[] + = this.getContainerComponents(FieldValueFromVariable); + fieldValueFromVariable.forEach(script => script.setControlValueFromVariable()); + + return this.loadDefaultValues() + .then(() => { + if (this.filterValuesLoadStrategy != null) { + return this.restoreFiltersFromCache(scriptsInChildren); + } + }); + } + + protected loadContainer(): Promise { + return this.loadInitialValues(); + } + + protected validateCommon(): Promise { + return Promise.resolve(this.getValidatableFields() + .every(input => { + input.updateValueAndValidity(); + return (!input.isVisible() || !input.isEnabled() || + input.hasValidModel()); + })); + } + + public getValidatableFields(): IInputControl[] { + return this.getContainerComponents(FilterComponent) + .filter((filter: FilterComponent) => filter.getControlWithValue() != + null) //FilterComponent.ts checks for collectible or + // something + .map((filter: FilterComponent) => filter.getScript('component.field.IInputControl')) + .filter(o => o != null) + } + + protected childPredicate(node): boolean { + return super.childPredicate(node) && + !(node instanceof FilterContainer) && + node.interfaces.includes("component.Collectible"); + } + + protected restoreFiltersFromCache(scriptsInChildren: FilterComponent[]): Promise { + const valueSetPromises = scriptsInChildren + .filter((filter: FilterComponent) => filter.getControlWithValue()) + .map((filter: FilterComponent) => { + const cachedValue = this.loadFilterCache.get(filter); + + if (cachedValue) { + return filter.setFilterInput(cachedValue); + } + else { + return Promise.resolve(); + } + }); + + return Promise.all(valueSetPromises); + } + + protected getFilterCache(filterValuesStorage, customKeyName: string) { + + if (!filterValuesStorage) { + return null; + } + let webbpmStorage; + + switch (filterValuesStorage) { + case FilterValuesStrategy.BY_PAGE_OBJECT_ID: + webbpmStorage = this.readWebbpmStorage(PageObjectUtils.getPageObjectKey(this)); + return new PageObjectByIdStorage(webbpmStorage); + case FilterValuesStrategy.BY_OBJECT_NAME: + webbpmStorage = this.readWebbpmStorage(this.getObjectName()); + return new PageObjectByNameStorage(webbpmStorage); + case FilterValuesStrategy.BY_CUSTOM_NAME: + webbpmStorage = this.readWebbpmStorage(customKeyName); + return new PageObjectByNameStorage(webbpmStorage); + default: + throw new Error("Unknown filter values storage type = " + filterValuesStorage) + } + } + + protected readWebbpmStorage(filterStorageKey: string) { + + if (this.pageContextHolder.isPageInBpmnContext()) { + filterStorageKey = filterStorageKey + "$" + this.taskParamsProvider.processInstanceId + } + return this.localStorageService.readTemporalWebbpmStorage(filterStorageKey); + } +} \ No newline at end of file diff --git a/frontend/src/ts/ervu-dashboard/component/filter/FilterGroupDelegate.ts b/frontend/src/ts/ervu-dashboard/component/filter/FilterGroupDelegate.ts new file mode 100644 index 0000000..f03fdc1 --- /dev/null +++ b/frontend/src/ts/ervu-dashboard/component/filter/FilterGroupDelegate.ts @@ -0,0 +1,107 @@ +import { + BaseComponent, ControlWithValue, + Filter, + Filterable, + FilterComponent, + NotNull, ObjectRef, + Visible +} from "@webbpm/base-package"; +import {of, Subject} from "rxjs"; +import {debounceTime, filter, switchMap, takeUntil} from "rxjs/operators"; + +export class FilterGroupDelegate extends BaseComponent { + @NotNull() + @ObjectRef() + public filterComponents: FilterComponent[]; + + @NotNull() + public liveFilter: boolean = false; + + @NotNull() + public triggerOnStart: boolean = false; + + private filterable: Filterable; + + private loadSubject: Subject = new Subject(); + private onFilterChange = () => this.triggerFilter(); + + initialize() { + super.initialize(); + + this.loadSubject.pipe( + debounceTime(400), + filter(x => !!x), + switchMap(filters => of(filters).pipe( + takeUntil(this.loadSubject) + )) + ).subscribe(filters => { + this.reloadFilterable(filters); + }); + + this.filterable = this.getScript('common.Filterable') + } + + postStart() { + super.postStart(); + if (this.liveFilter) { + this.registerLiveFiltering(); + } + + if (this.triggerOnStart) { + this.triggerFilter(); + } + } + + @Visible() + public triggerFilter(): void { + let filters = this.filterComponents + .map(filter => filter.getFilter()) + .filter(filterModel => filterModel != null); + + this.filterComponents + .filter(filter => filter.getFilter() == null) + .forEach(filter => this.filterable.removeFilter(filter.getObjectId())); + + return this.reload(filters); + } + + public setLiveFilter(liveFilter: boolean): void { + if (this.liveFilter === liveFilter) { + return; + } + + this.liveFilter = liveFilter; + if (this.liveFilter) { + this.registerLiveFiltering(); + } + else { + this.unregisterLiveFiltering(); + } + } + + protected reload(filters: Filter[]) { + this.loadSubject.next(filters); + } + + protected reloadFilterable(filters: Filter[]) { + this.filterable.reload(filters); + } + + protected registerLiveFiltering() { + this.filterComponents.forEach(filterComponent => { + let controlWithValue: ControlWithValue = filterComponent.getFilterInputControl(); + if (controlWithValue) { + controlWithValue.addChangeListener(this.onFilterChange); + } + }); + } + + protected unregisterLiveFiltering() { + this.filterComponents.forEach(filterComponent => { + let controlWithValue: ControlWithValue = filterComponent.getFilterInputControl(); + if (controlWithValue) { + controlWithValue.removeChangeListener(this.onFilterChange); + } + }); + } +} \ No newline at end of file diff --git a/frontend/src/ts/ervu-dashboard/formatter/FormatterUtils.ts b/frontend/src/ts/ervu-dashboard/formatter/FormatterUtils.ts new file mode 100644 index 0000000..8258ae8 --- /dev/null +++ b/frontend/src/ts/ervu-dashboard/formatter/FormatterUtils.ts @@ -0,0 +1,63 @@ +interface NumberFormatModel { + value: string | number, + + unitsLabel: string, + thousandsLabel: string, + millionsLabel: string, + billionsLabel: string, + + decimalDelimiter: string, + decimalLength: number +} + +export class FormatterUtils { + + public static formatNumber(model: NumberFormatModel) { + let numberValue = Number(model.value); + let abs = Math.abs(numberValue); + + let unitsLabel: string; + + if (abs < 1_000) { + unitsLabel = model.unitsLabel; + } + else if (abs < 1_000_000) { + numberValue /= 1_000; + unitsLabel = model.thousandsLabel; + } + else if (abs < 1_000_000_000) { + numberValue /= 1_000_000; + unitsLabel = model.millionsLabel; + } + else { + numberValue /= 1_000_000_000; + unitsLabel = model.billionsLabel; + } + + let formattedNumber = FormatterUtils.prepareValue(numberValue, model.decimalDelimiter, model.decimalLength) + return { + formattedNumber: formattedNumber, + label: unitsLabel + }; + } + + private static prepareValue(value: number, decimalDelimiter: string, decimalLength: number) { + if (!decimalDelimiter) { + return value.toFixed(0); + } + + let formattedValue = value.toFixed(decimalLength) + .replace('.', decimalDelimiter); + + while (formattedValue.charAt(formattedValue.length - 1) == '0') { + formattedValue = formattedValue.substring(0, formattedValue.length - 1); + } + + if (formattedValue.charAt(formattedValue.length - 1) == decimalDelimiter) { + formattedValue = formattedValue.replace(decimalDelimiter, ''); + } + + return formattedValue; + } + +} \ No newline at end of file diff --git a/frontend/src/ts/ervu-dashboard/formatter/ReplaceValueTextFormatter.ts b/frontend/src/ts/ervu-dashboard/formatter/ReplaceValueTextFormatter.ts new file mode 100644 index 0000000..69b28a4 --- /dev/null +++ b/frontend/src/ts/ervu-dashboard/formatter/ReplaceValueTextFormatter.ts @@ -0,0 +1,19 @@ +import {Behavior, TextFormatter} from "@webbpm/base-package"; +import {ReplaceValueModel} from "./model/ReplaceValueModel"; + +export class ReplaceValueTextFormatter extends Behavior implements TextFormatter { + public replaceModels: ReplaceValueModel[] + + format(value: string): string { + if (this.replaceModels) { + for (let i = 0; i < this.replaceModels.length; i++) { + let model = this.replaceModels[i]; + if (value == model.valueToReplace) { + return model.value ? model.value : ''; + } + } + } + + return value; + } +} diff --git a/frontend/src/ts/ervu-dashboard/formatter/UnitsLabelReplaceValueTextFormatter.ts b/frontend/src/ts/ervu-dashboard/formatter/UnitsLabelReplaceValueTextFormatter.ts new file mode 100644 index 0000000..1c2ff00 --- /dev/null +++ b/frontend/src/ts/ervu-dashboard/formatter/UnitsLabelReplaceValueTextFormatter.ts @@ -0,0 +1,53 @@ +import { + AnalyticalScope, + NotNull, + ObjectRef, + Text, + Visible +} from "@webbpm/base-package"; +import {ReplaceValueTextFormatter} from "./ReplaceValueTextFormatter"; +import {FormatterUtils} from "./FormatterUtils"; + +@AnalyticalScope(Text) +export class UnitsLabelReplaceValueTextFormatter extends ReplaceValueTextFormatter { + + @NotNull() + @ObjectRef() + public unitsText: Text; + + public replaceDataLabel: string = ''; + + public unitsLabel: string = ''; + public thousandsLabel: string = ''; + public millionsLabel: string = ''; + public billionsLabel: string = ''; + + public decimalDelimiter: string; + + @NotNull('decimalDelimiter != null') + @Visible('decimalDelimiter != null') + public decimalLength: number = 0; + + format(value: string): string { + let newValue = super.format(value); + if (newValue !== value) { + this.unitsText.setLabel(this.replaceDataLabel); + return newValue; + } + + let result = FormatterUtils.formatNumber({ + value: value, + + unitsLabel: this.unitsLabel, + thousandsLabel: this.thousandsLabel, + millionsLabel: this.millionsLabel, + billionsLabel: this.billionsLabel, + + decimalDelimiter: this.decimalDelimiter, + decimalLength: this.decimalLength + }); + + this.unitsText.setLabel(result.label); + return result.formattedNumber; + } +} \ No newline at end of file diff --git a/frontend/src/ts/ervu-dashboard/formatter/model/ReplaceValueModel.ts b/frontend/src/ts/ervu-dashboard/formatter/model/ReplaceValueModel.ts new file mode 100644 index 0000000..3042386 --- /dev/null +++ b/frontend/src/ts/ervu-dashboard/formatter/model/ReplaceValueModel.ts @@ -0,0 +1,4 @@ +export class ReplaceValueModel { + public valueToReplace: string; + public value: string; +} \ No newline at end of file diff --git a/frontend/src/ts/main.aot.ts b/frontend/src/ts/main.aot.ts new file mode 100644 index 0000000..ddd43fd --- /dev/null +++ b/frontend/src/ts/main.aot.ts @@ -0,0 +1,8 @@ +import "../../src/resources/css/style.css"; +import {platformBrowser} from '@angular/platform-browser'; +import {enableProdMode} from "@angular/core"; +import {WebbpmModuleNgFactory} from "./modules/webbpm/webbpm.module.ngfactory"; + +window['dev_mode'] = false; +enableProdMode(); +platformBrowser().bootstrapModuleFactory(WebbpmModuleNgFactory); \ No newline at end of file diff --git a/frontend/src/ts/main.ts b/frontend/src/ts/main.ts new file mode 100644 index 0000000..d53c69a --- /dev/null +++ b/frontend/src/ts/main.ts @@ -0,0 +1,7 @@ +import {platformBrowserDynamic} from "@angular/platform-browser-dynamic"; +import {enableProdMode} from "@angular/core"; +import {WebbpmModule} from "./modules/webbpm/webbpm.module"; + +window['dev_mode'] = true; +enableProdMode(); +platformBrowserDynamic().bootstrapModule(WebbpmModule); diff --git a/frontend/src/ts/modules/app/app-routing.module.ts b/frontend/src/ts/modules/app/app-routing.module.ts new file mode 100644 index 0000000..db91e89 --- /dev/null +++ b/frontend/src/ts/modules/app/app-routing.module.ts @@ -0,0 +1,63 @@ +import {NgModule} from "@angular/core"; +import {RouterModule, Routes} from "@angular/router"; +import {AccessDeniedComponent} from "./component/access-denied.component"; +import {ConfirmExitGuard} from "@webbpm/base-package"; + +const appRoutes: Routes = [ + { + path: 'access-denied', + component: AccessDeniedComponent, + canActivate: [ConfirmExitGuard] + }, + { + path: 'milregistration', + loadChildren: 'generated-sources/page-milregistration.module#PagemilregistrationModule', + canActivate: [ConfirmExitGuard], + }, + { + path: 'appeals', + loadChildren: 'generated-sources/page-appeals.module#PageappealsModule', + canActivate: [ConfirmExitGuard], + }, + { + path: 'ratings', + loadChildren: 'generated-sources/page-ratings.module#PageratingsModule', + canActivate: [ConfirmExitGuard], + }, + { + path: 'recruitment', + loadChildren: 'generated-sources/page-recruitment.module#PagerecruitmentModule', + canActivate: [ConfirmExitGuard], + }, + { + path: 'notregistered', + loadChildren: 'generated-sources/page-notregistered.module#PagenotregisteredModule', + canActivate: [ConfirmExitGuard], + }, + { + path: 'citizen', + loadChildren: 'generated-sources/page-citizen.module#PagecitizenModule', + canActivate: [ConfirmExitGuard], + }, + { + path: 'citizencard/:id', + loadChildren: 'generated-sources/page-citizencard.module#PagecitizencardModule', + canActivate: [ConfirmExitGuard], + }, + { + path: 'main', + loadChildren: 'generated-sources/page-main.module#PagemainModule', + }, + { + path: 'total_registered_second', + loadChildren: 'generated-sources/page-total_registered_second.module#Pagetotal_registered_secondModule', + } +]; + +@NgModule({ + imports: [RouterModule.forChild(appRoutes)], + exports: [RouterModule] + }) +export class AppRoutingModule { + +} diff --git a/frontend/src/ts/modules/app/app.module.ts b/frontend/src/ts/modules/app/app.module.ts new file mode 100644 index 0000000..c5b526d --- /dev/null +++ b/frontend/src/ts/modules/app/app.module.ts @@ -0,0 +1,62 @@ +import {forwardRef, NgModule} from "@angular/core"; +import {NgbModule} from "@ng-bootstrap/ng-bootstrap"; +import {CommonModule, registerLocaleData} from "@angular/common"; +import localeRu from '@angular/common/locales/ru'; +import {FormsModule} from "@angular/forms"; +import {AgGridModule} from "ag-grid-angular"; +import { + BpmnModule, + ComponentsModule, + CoreModule, + ProgressIndicationService, + SecurityModule +} from "@webbpm/base-package"; +import {AppHeaderComponent} from "./component/app-header.component"; +import {AppFooterComponent} from "./component/app-footer.component"; +import {AccessDeniedComponent} from "./component/access-denied.component"; +import {ApplicationVersionComponent} from "./component/application-version.component"; +import {RouterModule} from "@angular/router"; +import {InternationalPhoneNumberModule} from "ngx-international-phone-number"; +import {AppProgressIndicationComponent} from "./component/app-progress-indication.component"; +import {AppProgressIndicationService} from "./service/app-progress-indication.service"; +import {ErvuChartV2} from "../../ervu-dashboard/component/chart/ErvuChartV2"; +import {FilterContainer} from "../../ervu-dashboard/component/filter/FilterContainer"; + +registerLocaleData(localeRu); +export const DIRECTIVES = [ + forwardRef(() => AppHeaderComponent), + forwardRef(() => AppFooterComponent), + forwardRef(() => ApplicationVersionComponent), + forwardRef(() => AccessDeniedComponent), + forwardRef(() => AppProgressIndicationComponent), + forwardRef(() => ErvuChartV2), + forwardRef(() => FilterContainer) +]; + +@NgModule({ + imports: [ + CommonModule, + FormsModule, + CoreModule, + NgbModule, + BpmnModule, + SecurityModule, + ComponentsModule, + AgGridModule, + RouterModule, + InternationalPhoneNumberModule + ], + declarations: [ + DIRECTIVES + ], + exports: [ + DIRECTIVES + ], + providers: [ + { provide: ProgressIndicationService, useClass: AppProgressIndicationService } + ], + bootstrap: [], + entryComponents: [AppProgressIndicationComponent] + }) +export class AppModule { +} diff --git a/frontend/src/ts/modules/app/component/access-denied.component.ts b/frontend/src/ts/modules/app/component/access-denied.component.ts new file mode 100644 index 0000000..269011b --- /dev/null +++ b/frontend/src/ts/modules/app/component/access-denied.component.ts @@ -0,0 +1,11 @@ +import {ChangeDetectionStrategy, Component} from "@angular/core"; + +@Component({ + moduleId: module.id, + selector: "access-denied", + templateUrl: "../../../../../src/resources/template/app/component/access_denied.html", + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class AccessDeniedComponent { + +} \ No newline at end of file diff --git a/frontend/src/ts/modules/app/component/app-footer.component.ts b/frontend/src/ts/modules/app/component/app-footer.component.ts new file mode 100644 index 0000000..6378798 --- /dev/null +++ b/frontend/src/ts/modules/app/component/app-footer.component.ts @@ -0,0 +1,9 @@ +import {Component} from "@angular/core"; + +@Component({ + moduleId: module.id, + selector: "app-footer", + templateUrl: "../../../../../src/resources/template/app/component/app_footer.html" +}) +export class AppFooterComponent { +} diff --git a/frontend/src/ts/modules/app/component/app-header.component.ts b/frontend/src/ts/modules/app/component/app-header.component.ts new file mode 100644 index 0000000..4c0d621 --- /dev/null +++ b/frontend/src/ts/modules/app/component/app-header.component.ts @@ -0,0 +1,15 @@ +import {ChangeDetectionStrategy, Component} from "@angular/core"; +import {Router} from "@angular/router"; + +@Component({ + moduleId: module.id, + selector: "app-header", + templateUrl: "../../../../../src/resources/template/app/component/app_header.html", + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class AppHeaderComponent { + + + constructor(protected router: Router) { + } +} diff --git a/frontend/src/ts/modules/app/component/app-progress-indication.component.ts b/frontend/src/ts/modules/app/component/app-progress-indication.component.ts new file mode 100644 index 0000000..006fdb7 --- /dev/null +++ b/frontend/src/ts/modules/app/component/app-progress-indication.component.ts @@ -0,0 +1,11 @@ +import {ChangeDetectionStrategy, Component} from "@angular/core"; + +@Component({ + moduleId: module.id, + changeDetection: ChangeDetectionStrategy.OnPush, + selector: 'progress-indication-dialog-content', + templateUrl: '../../../../../src/resources/template/app/component/progress-indication.html' +}) +export class AppProgressIndicationComponent { + +} \ No newline at end of file diff --git a/frontend/src/ts/modules/app/component/application-version.component.ts b/frontend/src/ts/modules/app/component/application-version.component.ts new file mode 100644 index 0000000..a10da22 --- /dev/null +++ b/frontend/src/ts/modules/app/component/application-version.component.ts @@ -0,0 +1,24 @@ +import {ChangeDetectionStrategy, ChangeDetectorRef, Component, Input} from "@angular/core"; +import {HttpClient} from "@angular/common/http"; + +@Component({ + moduleId: module.id, + selector: "application-version", + templateUrl: "../../../../../src/resources/template/app/component/application_version.html", + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class ApplicationVersionComponent { + @Input() + public applicationVersion: string; + + constructor(private httpClient: HttpClient, private cd: ChangeDetectorRef) { + this.loadAppVersion(); //TODO: check version url + } + + private loadAppVersion() { + this.httpClient.get("version").toPromise().then((version: any) => { + this.applicationVersion = version.number; + this.cd.markForCheck(); + }) + } +} diff --git a/frontend/src/ts/modules/app/service/app-progress-indication.service.ts b/frontend/src/ts/modules/app/service/app-progress-indication.service.ts new file mode 100644 index 0000000..48100d5 --- /dev/null +++ b/frontend/src/ts/modules/app/service/app-progress-indication.service.ts @@ -0,0 +1,95 @@ +import {Injectable} from "@angular/core"; +import {AppProgressIndicationComponent} from "../component/app-progress-indication.component"; +import {NgbModal, NgbModalOptions, NgbModalRef} from "@ng-bootstrap/ng-bootstrap"; + +@Injectable() +export class AppProgressIndicationService { + + private static readonly EVENT_INTERCEPTOR = (event) => { + event.preventDefault(); + event.stopPropagation(); + }; + + private counter: number = 0; + private focused: any; + private ngbModalRef: NgbModalRef; + private options: NgbModalOptions = { + backdrop: 'static', + keyboard: false, + windowClass: 'modal-center loader' + }; + + constructor(private ngbModal: NgbModal) { + } + + public showProgressBar(): boolean { + if (this.counter == 0) { + this.disableEvents(); + this.saveFocus(); + this.showProgressIndicator(); + } + ++this.counter; + return this.counter == 1; + } + + public hideProgressBar(): boolean { + if (this.counter == 0) { + return false; + } + if (this.counter == 1) { + this.hideProgressIndicator(); + this.restoreFocus(); + this.enableEvents(); + } + --this.counter; + return this.counter == 0; + } + + public unconditionallyHideProgressBar(): void { + this.enableEvents(); + this.hideProgressIndicator(); + } + + public restoreProgressBar(): void { + + if (this.counter > 0 && this.ngbModalRef == null) { + this.disableEvents(); + this.showProgressIndicator(); + } + } + + private showProgressIndicator() { + this.ngbModalRef = this.ngbModal.open(AppProgressIndicationComponent, this.options); + } + + private hideProgressIndicator() { + this.ngbModalRef.dismiss('cancel'); + this.ngbModalRef = null; + } + + private saveFocus() { + this.focused = $(':focus'); + } + + private restoreFocus() { + if (this.focused) { + this.focused.focus(); + this.focused = null; + } + } + + private disableEvents() { + let body = $('body'); + body.keydown(AppProgressIndicationService.EVENT_INTERCEPTOR); + body.keyup(AppProgressIndicationService.EVENT_INTERCEPTOR); + body.contextmenu(AppProgressIndicationService.EVENT_INTERCEPTOR) + } + + private enableEvents() { + let body = $('body'); + body.off('keydown', AppProgressIndicationService.EVENT_INTERCEPTOR); + body.off('keyup', AppProgressIndicationService.EVENT_INTERCEPTOR); + body.off('contextmenu', AppProgressIndicationService.EVENT_INTERCEPTOR); + } + +} diff --git a/frontend/src/ts/modules/preview/component/preview-container.component.ts b/frontend/src/ts/modules/preview/component/preview-container.component.ts new file mode 100644 index 0000000..f8cdd27 --- /dev/null +++ b/frontend/src/ts/modules/preview/component/preview-container.component.ts @@ -0,0 +1,9 @@ +import {Component} from "@angular/core"; + +@Component({ + moduleId: module.id, + selector: "[preview-container]", + templateUrl: "../../../../../src/resources/template/preview/preview_container.html" +}) +export class PreviewContainerComponent { +} diff --git a/frontend/src/ts/modules/preview/component/preview.component.ts b/frontend/src/ts/modules/preview/component/preview.component.ts new file mode 100644 index 0000000..b1ecab6 --- /dev/null +++ b/frontend/src/ts/modules/preview/component/preview.component.ts @@ -0,0 +1,9 @@ +import {Component} from "@angular/core"; + +@Component({ + moduleId: module.id, + selector: "[preview]", + templateUrl: "../../../../../src/resources/template/preview/preview.html" +}) +export class PreviewComponent { +} diff --git a/frontend/src/ts/modules/preview/preview-routing.module.ts b/frontend/src/ts/modules/preview/preview-routing.module.ts new file mode 100644 index 0000000..0a5c665 --- /dev/null +++ b/frontend/src/ts/modules/preview/preview-routing.module.ts @@ -0,0 +1,20 @@ +import {NgModule} from "@angular/core"; +import {RouterModule, Routes} from "@angular/router"; +import {PreviewComponent} from "./component/preview.component"; +import {DYNAMIC_ROUTING} from "../../page.routing"; + +const previewRoutes: Routes = [ + { + path: 'preview', + component: PreviewComponent, + children: DYNAMIC_ROUTING, + } +]; + +@NgModule({ + imports: [RouterModule.forRoot(previewRoutes, {useHash: true})], + exports: [RouterModule] +}) +export class PreviewRoutingModule { + +} \ No newline at end of file diff --git a/frontend/src/ts/modules/preview/preview.main.ts b/frontend/src/ts/modules/preview/preview.main.ts new file mode 100644 index 0000000..2a5de47 --- /dev/null +++ b/frontend/src/ts/modules/preview/preview.main.ts @@ -0,0 +1,7 @@ +import {platformBrowserDynamic} from "@angular/platform-browser-dynamic"; +import {enableProdMode} from "@angular/core"; +import {PreviewModule} from "./preview.module"; + +window['dev_mode'] = true; +enableProdMode(); +platformBrowserDynamic().bootstrapModule(PreviewModule); diff --git a/frontend/src/ts/modules/preview/preview.module.ts b/frontend/src/ts/modules/preview/preview.module.ts new file mode 100644 index 0000000..a281717 --- /dev/null +++ b/frontend/src/ts/modules/preview/preview.module.ts @@ -0,0 +1,53 @@ +import {NgModule, NgZone} from "@angular/core"; +import {FormsModule} from "@angular/forms"; +import {BrowserModule} from "@angular/platform-browser"; +import {AgGridModule} from "ag-grid-angular"; +import {PreviewComponent} from "./component/preview.component"; +import {PreviewRoutingModule} from "./preview-routing.module"; +import {PreviewContainerComponent} from "./component/preview-container.component"; +import {NgbModule} from "@ng-bootstrap/ng-bootstrap"; +import {ToastNoAnimationModule} from "ngx-toastr"; +import {AppModule} from "../app/app.module"; +import {ComponentsModule, CoreModule, SecurityModule} from "@webbpm/base-package"; +import {TaskParamsProvider} from "@webbpm/base-package"; +import {HTTP_INTERCEPTORS} from "@angular/common/http"; +import {HttpPreviewInterceptor} from "./service/http-preview-interceptor.service"; + +export const HTTP_INTERCEPTOR_PROVIDERS = [ + { provide: HTTP_INTERCEPTORS, useClass: HttpPreviewInterceptor, multi: true } +]; + +let IMPORTS = [ + BrowserModule, + FormsModule, + NgbModule, + ToastNoAnimationModule.forRoot(), + AgGridModule, + CoreModule, + ComponentsModule, + AppModule, + SecurityModule, + PreviewRoutingModule +]; + +@NgModule({ + imports: IMPORTS, + declarations: [ + PreviewContainerComponent, + PreviewComponent + ], + exports: [], + providers: [ + TaskParamsProvider, + HTTP_INTERCEPTOR_PROVIDERS + ], + bootstrap: [ + PreviewContainerComponent + ] +}) +export class PreviewModule { + + constructor(zone: NgZone) { + window['zoneImpl'] = zone; + } +} diff --git a/frontend/src/ts/modules/preview/service/http-preview-interceptor.service.ts b/frontend/src/ts/modules/preview/service/http-preview-interceptor.service.ts new file mode 100644 index 0000000..ca7d7b5 --- /dev/null +++ b/frontend/src/ts/modules/preview/service/http-preview-interceptor.service.ts @@ -0,0 +1,16 @@ +import {Injectable} from "@angular/core"; +import {HttpEvent, HttpHandler, HttpInterceptor, HttpRequest} from "@angular/common/http"; +import {EMPTY, Observable} from "rxjs"; +import {catchError} from "rxjs/operators"; + +@Injectable() +export class HttpPreviewInterceptor implements HttpInterceptor { + + intercept(req: HttpRequest, next: HttpHandler): Observable> { + + return next.handle(req).pipe(catchError(() => { + return EMPTY; + } + )); + } +} \ No newline at end of file diff --git a/frontend/src/ts/modules/webbpm/component/home.component.ts b/frontend/src/ts/modules/webbpm/component/home.component.ts new file mode 100644 index 0000000..7361c8a --- /dev/null +++ b/frontend/src/ts/modules/webbpm/component/home.component.ts @@ -0,0 +1,9 @@ +import {Component} from "@angular/core"; + +@Component({ + moduleId: module.id, + selector: "home", + templateUrl: './../../../../../src/resources/template/webbpm/home.html' +}) +export class HomeComponent { +} diff --git a/frontend/src/ts/modules/webbpm/component/webbpm.component.ts b/frontend/src/ts/modules/webbpm/component/webbpm.component.ts new file mode 100644 index 0000000..df6a67a --- /dev/null +++ b/frontend/src/ts/modules/webbpm/component/webbpm.component.ts @@ -0,0 +1,34 @@ +import {Component} from "@angular/core"; +import { + Event, + NavigationCancel, + NavigationEnd, + NavigationError, + NavigationStart, + Router +} from "@angular/router"; +import {ProgressIndicationService} from "@webbpm/base-package"; + +@Component({ + moduleId: module.id, + selector: '[webbpm]', + templateUrl: './../../../../../src/resources/template/webbpm/webbpm.html' +}) +export class WebbpmComponent { + public headerVisible: boolean = true; + public footerVisible: boolean = true; + + constructor(private router: Router, + private progressIndicationService: ProgressIndicationService) { + router.events.subscribe((event: Event) => { + if (event instanceof NavigationStart) { + progressIndicationService.showProgressBar(); + } + else if (event instanceof NavigationEnd + || event instanceof NavigationError + || event instanceof NavigationCancel) { + progressIndicationService.hideProgressBar(); + } + }) + } +} diff --git a/frontend/src/ts/modules/webbpm/handler/global-error.handler.prod.ts b/frontend/src/ts/modules/webbpm/handler/global-error.handler.prod.ts new file mode 100644 index 0000000..5665de7 --- /dev/null +++ b/frontend/src/ts/modules/webbpm/handler/global-error.handler.prod.ts @@ -0,0 +1,10 @@ +import {ErrorHandler, Injectable, Injector} from '@angular/core'; +import {BaseErrorHandler} from "@webbpm/base-package"; + +@Injectable({providedIn: 'root'}) +export class GlobalErrorHandler extends BaseErrorHandler implements ErrorHandler { + + constructor(injector: Injector) { + super(injector); + } +} diff --git a/frontend/src/ts/modules/webbpm/handler/global-error.handler.ts b/frontend/src/ts/modules/webbpm/handler/global-error.handler.ts new file mode 100644 index 0000000..4350c08 --- /dev/null +++ b/frontend/src/ts/modules/webbpm/handler/global-error.handler.ts @@ -0,0 +1,35 @@ +import {ErrorHandler, Injectable, Injector} from '@angular/core'; +import {BaseErrorHandler} from "@webbpm/base-package"; + +//todo: will be used after angular update in dev mode +@Injectable({providedIn: 'root'}) +export class GlobalErrorHandler extends BaseErrorHandler implements ErrorHandler { + + constructor(injector: Injector) { + super(injector); + } + + handleError(error) { + const chunkFailedMessage = /Loading chunk [\d]+ failed/; + + if (chunkFailedMessage.test(error.message)) { + window.location.reload(); + } + else if (!this.isPreviewPage()) { + super.handleError(error); + } + } + + internalHandleError(error) { + if (this.isPreviewPage()) { + return; + } + else { + super.internalHandleError(error); + } + } + + private isPreviewPage() { + return window.location.hash.includes("webbpm-preview"); + } +} diff --git a/frontend/src/ts/modules/webbpm/interceptor/default-interceptors.prod.ts b/frontend/src/ts/modules/webbpm/interceptor/default-interceptors.prod.ts new file mode 100644 index 0000000..07735d5 --- /dev/null +++ b/frontend/src/ts/modules/webbpm/interceptor/default-interceptors.prod.ts @@ -0,0 +1,12 @@ +import {HTTP_INTERCEPTORS} from "@angular/common/http"; +import { + FormDirtyInterceptor, + HttpSecurityErrorInterceptor, + HttpSecurityInterceptor +} from "@webbpm/base-package"; + +export const DEFAULT_HTTP_INTERCEPTOR_PROVIDERS = [ + {provide: HTTP_INTERCEPTORS, useClass: HttpSecurityInterceptor, multi: true}, + {provide: HTTP_INTERCEPTORS, useClass: HttpSecurityErrorInterceptor, multi: true}, + {provide: HTTP_INTERCEPTORS, useClass: FormDirtyInterceptor, multi: true} +]; diff --git a/frontend/src/ts/modules/webbpm/interceptor/default-interceptors.ts b/frontend/src/ts/modules/webbpm/interceptor/default-interceptors.ts new file mode 100644 index 0000000..ee46e0c --- /dev/null +++ b/frontend/src/ts/modules/webbpm/interceptor/default-interceptors.ts @@ -0,0 +1,9 @@ +import {HTTP_INTERCEPTORS} from "@angular/common/http"; +import {FormDirtyInterceptor, HttpSecurityInterceptor} from "@webbpm/base-package"; +import {DevHttpSecurityErrorInterceptor} from "./http-security-error-interceptor.dev"; + +export const DEFAULT_HTTP_INTERCEPTOR_PROVIDERS = [ + {provide: HTTP_INTERCEPTORS, useClass: HttpSecurityInterceptor, multi: true}, + {provide: HTTP_INTERCEPTORS, useClass: DevHttpSecurityErrorInterceptor, multi: true}, + {provide: HTTP_INTERCEPTORS, useClass: FormDirtyInterceptor, multi: true} +]; diff --git a/frontend/src/ts/modules/webbpm/interceptor/http-security-error-interceptor.dev.ts b/frontend/src/ts/modules/webbpm/interceptor/http-security-error-interceptor.dev.ts new file mode 100644 index 0000000..11a0c2b --- /dev/null +++ b/frontend/src/ts/modules/webbpm/interceptor/http-security-error-interceptor.dev.ts @@ -0,0 +1,31 @@ +import {HttpEvent, HttpHandler, HttpInterceptor, HttpRequest} from "@angular/common/http"; +import {HttpSecurityErrorInterceptor, MessagesService, UserService} from "@webbpm/base-package"; +import {Injectable} from "@angular/core"; +import {Router} from "@angular/router"; +import {EMPTY, Observable} from "rxjs"; +import {catchError} from "rxjs/operators"; + +@Injectable() +export class DevHttpSecurityErrorInterceptor extends HttpSecurityErrorInterceptor + implements HttpInterceptor { + private router: Router; + + + constructor(router: Router, messagesService: MessagesService, userService: UserService) { + super(router, messagesService, userService); + this.router = router; + } + + intercept(req: HttpRequest, next: HttpHandler): Observable> { + + if (window.location.hash.includes("webbpm-preview")) { + return next.handle(req).pipe(catchError(() => { + return EMPTY; + } + )); + } + else { + return super.intercept(req, next); + } + } +} diff --git a/frontend/src/ts/modules/webbpm/webbpm-routing.module.ts b/frontend/src/ts/modules/webbpm/webbpm-routing.module.ts new file mode 100644 index 0000000..b61370b --- /dev/null +++ b/frontend/src/ts/modules/webbpm/webbpm-routing.module.ts @@ -0,0 +1,29 @@ +import {NgModule} from "@angular/core"; +import {RouterModule, Routes} from "@angular/router"; +import { + ConfirmExitGuard +} from "@webbpm/base-package"; + +const webbpmRoutes: Routes = [ + { + path: '', + loadChildren: 'generated-sources/page-main.module#PagemainModule', + canActivate: [ConfirmExitGuard], + pathMatch: 'full', + }, + { + path: '**', + redirectTo: '', + } +]; + +@NgModule({ + imports: [RouterModule.forRoot(webbpmRoutes, { + useHash: true, + onSameUrlNavigation: "reload" + })], + exports: [RouterModule] +}) +export class WebbpmRoutingModule { + +} diff --git a/frontend/src/ts/modules/webbpm/webbpm.module.ts b/frontend/src/ts/modules/webbpm/webbpm.module.ts new file mode 100644 index 0000000..c9ef120 --- /dev/null +++ b/frontend/src/ts/modules/webbpm/webbpm.module.ts @@ -0,0 +1,52 @@ +import {ErrorHandler, NgModule} from "@angular/core"; +import {BrowserModule} from "@angular/platform-browser"; +import {BrowserAnimationsModule} from "@angular/platform-browser/animations"; +import {FormsModule} from "@angular/forms"; +import {AgGridModule} from "ag-grid-angular"; +import {WebbpmComponent} from "./component/webbpm.component"; +import {WebbpmRoutingModule} from "./webbpm-routing.module"; +import {NgbModule} from "@ng-bootstrap/ng-bootstrap"; +import {ToastNoAnimationModule} from "ngx-toastr"; +import {AppModule} from "../app/app.module"; +import {HomeComponent} from "./component/home.component"; +import { + BpmnModule, + ComponentsModule, + CoreModule, +} from "@webbpm/base-package"; +import {AppRoutingModule} from "../app/app-routing.module"; +import {GlobalErrorHandler} from "./handler/global-error.handler.prod"; +import {DEFAULT_HTTP_INTERCEPTOR_PROVIDERS} from "./interceptor/default-interceptors.prod"; + +let IMPORTS = [ + BrowserAnimationsModule, + BrowserModule, + FormsModule, + NgbModule, + ToastNoAnimationModule.forRoot(), + AgGridModule, + AppRoutingModule, + BpmnModule, + CoreModule, + ComponentsModule, + AppModule, + WebbpmRoutingModule +]; + +@NgModule({ + imports: IMPORTS, + declarations: [ + WebbpmComponent, + HomeComponent + ], + exports: [], + providers: [ + {provide: ErrorHandler, useClass: GlobalErrorHandler}, + DEFAULT_HTTP_INTERCEPTOR_PROVIDERS + ], + bootstrap: [ + WebbpmComponent + ] + }) +export class WebbpmModule { +} diff --git a/frontend/src/ts/page.routing.d.ts b/frontend/src/ts/page.routing.d.ts new file mode 100644 index 0000000..ff077ee --- /dev/null +++ b/frontend/src/ts/page.routing.d.ts @@ -0,0 +1,3 @@ +import {Routes} from "@angular/router"; + +declare const DYNAMIC_ROUTING: Routes; \ No newline at end of file diff --git a/frontend/src/ts/polyfills.ts b/frontend/src/ts/polyfills.ts new file mode 100644 index 0000000..4eb6fea --- /dev/null +++ b/frontend/src/ts/polyfills.ts @@ -0,0 +1,59 @@ +/** IE9, IE10 and IE11 requires all of the following polyfills. **/ +import 'core-js/es6/symbol'; +import 'core-js/es6/object'; +import 'core-js/es6/function'; +import 'core-js/es6/parse-int'; +import 'core-js/es6/parse-float'; +import 'core-js/es6/number'; +import 'core-js/es6/math'; +import 'core-js/es6/string'; +import 'core-js/es6/date'; +import 'core-js/es6/array'; +import 'core-js/es6/regexp'; +import 'core-js/es6/map'; +import 'core-js/es6/weak-map'; +import 'core-js/es6/set'; +import 'core-js/es6/promise'; +import 'core-js/es7'; +/** IE10 and IE11 requires the following for NgClass support on SVG elements */ +// import 'classlist.js'; // Run `npm install --save classlist.js`. + +/** IE10 and IE11 requires the following for the Reflect API. */ +// import 'core-js/es6/reflect'; + +​ +/** Evergreen browsers require these. **/ +// Used for reflect-metadata in JIT. If you use AOT (and only Angular decorators), you can remove. + + + +/** + * Required to support Web Animations `@angular/platform-browser/animations`. + * Needed for: All but Chrome, Firefox and Opera. http://caniuse.com/#feat=web-animation + **/ +// import 'web-animations-js'; // Run `npm install --save web-animations-js`. + +/** + * By default, zone.js will patch all possible macroTask and DomEvents + * user can disable parts of macroTask/DomEvents patch by setting following flags + */ + + // (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame + // (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick + // (window as any).__zone_symbol__BLACK_LISTED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames + + /* + * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js + * with the following flag, it will bypass `zone.js` patch for IE/Edge + */ +// (window as any).__Zone_enable_cross_context_check = true; +​ +/*************************************************************************************************** + * Zone JS is required by default for Angular itself. + */ +import 'zone.js/dist/zone';// Included with Angular CLI.​ + +​ +/*************************************************************************************************** + * APPLICATION IMPORTS + */ diff --git a/frontend/src/ts/vendor.ts b/frontend/src/ts/vendor.ts new file mode 100644 index 0000000..797b170 --- /dev/null +++ b/frontend/src/ts/vendor.ts @@ -0,0 +1,38 @@ +// Angular +import '@angular/core'; +import '@angular/common'; +import '@angular/common/http'; +import '@angular/forms'; +import '@angular/platform-browser'; +import '@angular/router'; +import '@angular/animations'; +import '@webbpm/base-package'; +// RxJS +import 'rxjs'; +import 'rxjs-compat'; +import 'rxjs/operators'; +import 'rxjs/internal-compatibility'; +import 'rxjs/ajax'; +import 'rxjs/testing'; +import 'rxjs/webSocket'; +//jquery +import 'jquery'; +//popper +import 'popper.js'; +//bootstrap +import '@ng-bootstrap/ng-bootstrap'; +import 'bootstrap'; +//mask +import 'inputmask'; +//grid +import 'ag-grid-community'; +import 'ag-grid-angular'; +//selectize +import 'selectize'; +//datepicker +import 'eonasdan-bootstrap-datetimepicker'; +import 'moment-timezone'; +//ngx-toastr +import 'ngx-toastr'; +//ngx-cookie +import 'ngx-cookie'; diff --git a/frontend/systemjs.config.js b/frontend/systemjs.config.js new file mode 100644 index 0000000..5b9937f --- /dev/null +++ b/frontend/systemjs.config.js @@ -0,0 +1,93 @@ +(function(global) { + System.config({ + transpiler: 'plugin-babel', + paths: { + 'npm:': 'node_modules/', + 'generated-sources': 'build_dev/js/generated-sources' + }, + map: { + 'webbpm': 'build_dev/js', + '@angular/core': 'npm:@angular/core/bundles/core.umd.js', + '@angular/common': 'npm:@angular/common/bundles/common.umd.js', + '@angular/common/http': 'npm:@angular/common/bundles/common-http.umd.js', + '@angular/common/locales': 'npm:@angular/common/locales', + '@angular/compiler': 'npm:@angular/compiler/bundles/compiler.umd.js', + '@angular/platform-browser': 'npm:@angular/platform-browser/bundles/platform-browser.umd.js', + '@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js', + '@angular/router': 'npm:@angular/router/bundles/router.umd.js', + '@angular/forms': 'npm:@angular/forms/bundles/forms.umd.js', + '@angular/animations': 'npm:@angular/animations/bundles/animations.umd.js', + '@angular/animations/browser': 'npm:@angular/animations/bundles/animations-browser.umd.js', + '@angular/platform-browser/animations':'npm:@angular/platform-browser/bundles/platform-browser-animations.umd.js', + '@ng-bootstrap/ng-bootstrap': 'npm:@ng-bootstrap/ng-bootstrap/bundles/ng-bootstrap.umd.js', + 'bootstrap': 'npm:bootstrap', + '@webbpm/base-package': 'npm:@webbpm/base-package/bundles/webbpm-base-package.umd.js', + 'angular-calendar': 'npm:angular-calendar/bundles/angular-calendar.umd.js', + 'angular-calendar/date-adapters/date-fns': 'npm:angular-calendar/date-adapters/date-fns/index.js', + 'angular-draggable-droppable': 'npm:angular-draggable-droppable/bundles/angular-draggable-droppable.umd.js', + 'angular-resizable-element': 'npm:angular-resizable-element/bundles/angular-resizable-element.umd.js', + 'calendar-utils': 'npm:calendar-utils/bundles/calendar-utils.umd.js', + 'calendar-utils/date-adapters/date-fns': 'npm:calendar-utils/date-adapters/date-fns/index.js', + 'date-fns': 'npm:date-fns', + 'ngx-cookie': 'npm:ngx-cookie/bundles/ngx-cookie.umd.js', + 'moment': 'npm:moment', + 'moment-timezone': 'npm:moment-timezone', + 'positioning': 'npm:positioning/dist/positioning.js', + 'rxjs': 'npm:rxjs', + 'rxjs-compat': 'npm:rxjs-compat', + 'rxjs/operators': 'npm:rxjs/operators', + 'rxjs/internal-compatibility': 'npm:rxjs/internal-compatibility', + 'rxjs/ajax': 'npm:rxjs/ajax', + 'rxjs/testing': 'npm:rxjs/testing', + 'rxjs/webSocket': 'npm:rxjs/webSocket', + 'jquery': 'npm:jquery/dist/jquery.js', + 'popper.js': 'npm:popper.js/dist/umd/popper.js', + 'sifter': 'npm:sifter/sifter.min.js', + 'microplugin': 'npm:microplugin/src/microplugin.js', + 'selectize': 'npm:selectize/dist/js/selectize.min.js', + 'ngx-toastr': 'npm:ngx-toastr/bundles/ngx-toastr.umd.min.js', + 'eonasdan-bootstrap-datetimepicker': 'npm:eonasdan-bootstrap-datetimepicker/src/js/bootstrap-datetimepicker.js', + 'autonumeric': 'npm:autonumeric', + 'jsgantt-improved': 'npm:jsgantt-improved/dist/jsgantt.js', + 'js-year-calendar': 'npm:js-year-calendar/dist/js-year-calendar.js', + 'ag-grid-angular': 'npm:ag-grid-angular/bundles/ag-grid-angular.umd.js', + 'ag-grid-community': 'npm:ag-grid-community/dist/ag-grid-community.cjs.js', + 'inputmask': 'npm:inputmask', + 'downloadjs': 'npm:downloadjs/download.js', + 'esmarttokenjs': 'npm:esmarttokenjs/esmarttoken.js', + 'cadesplugin_api': 'npm:cadesplugin_api/index.js', + 'plugin-babel': 'npm:systemjs-plugin-babel/plugin-babel.js', + 'systemjs-babel-build': 'npm:systemjs-plugin-babel/systemjs-babel-browser.js', + 'chart.js': 'npm:chart.js/dist', + 'chartjs-adapter-moment': 'npm:chartjs-adapter-moment/dist/chartjs-adapter-moment.js', + 'tslib': 'npm:tslib/tslib.js', + 'ngx-international-phone-number': 'npm:ngx-international-phone-number/ngx-international-phone-number.umd.js', + 'google-libphonenumber': 'npm:google-libphonenumber/dist/libphonenumber.js' + }, + packages: { + 'webbpm': { main: 'main', defaultExtension: 'js'}, + '@angular/common/locales': { defaultExtension: 'js'}, + 'date-fns': { main: 'index.js', defaultExtension: 'js'}, + 'rxjs': { main: 'index.js', defaultExtension: 'js' }, + 'rxjs-compat': { main: "index.js", defaultExtension: 'js'}, + 'rxjs/operators': { main: "index.js", defaultExtension: 'js'}, + 'rxjs/internal-compatibility':{ main: "index.js", defaultExtension: 'js'}, + 'rxjs/ajax': { main: "index.js", defaultExtension: 'js'}, + 'rxjs/testing': { main: "index.js", defaultExtension: 'js'}, + 'rxjs/webSocket': { main: "index.js", defaultExtension: 'js'}, + 'moment': { main: 'min/locales.min', defaultExtension: 'js' }, + 'moment-es6': { main: 'index.js', defaultExtension: 'js' }, + 'moment-timezone': { main: 'builds/moment-timezone-with-data.min', defaultExtension: 'js' }, + 'bootstrap': { main: 'dist/js/bootstrap', defaultExtension: 'js'}, + 'lib': { format: 'register', defaultExtension: 'js' }, + 'autonumeric': { + main: 'dist/autoNumeric.js' + }, + 'chart.js': { main: 'chart.js', defaultExtension: 'js' }, + 'inputmask': { + main: 'dist/inputmask.js', + defaultExtension: 'js' + } + } + }); +})(this); diff --git a/frontend/systemjs.preview.config.js b/frontend/systemjs.preview.config.js new file mode 100644 index 0000000..d2c4487 --- /dev/null +++ b/frontend/systemjs.preview.config.js @@ -0,0 +1,92 @@ +(function(global) { + System.config({ + transpiler: 'plugin-babel', + paths: { + 'npm:': 'node_modules/', + 'generated-sources': 'build_dev/js/generated-sources' + }, + map: { + 'preview': 'build_dev/js', + '@angular/core': 'npm:@angular/core/bundles/core.umd.js', + '@angular/common': 'npm:@angular/common/bundles/common.umd.js', + '@angular/common/http': 'npm:@angular/common/bundles/common-http.umd.js', + '@angular/common/locales': 'npm:@angular/common/locales', + '@angular/compiler': 'npm:@angular/compiler/bundles/compiler.umd.js', + '@angular/platform-browser': 'npm:@angular/platform-browser/bundles/platform-browser.umd.js', + '@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js', + '@angular/router': 'npm:@angular/router/bundles/router.umd.js', + '@angular/forms': 'npm:@angular/forms/bundles/forms.umd.js', + '@angular/animations': 'npm:@angular/animations/bundles/animations.umd.js', + '@angular/animations/browser': 'npm:@angular/animations/bundles/animations-browser.umd.js', + '@angular/platform-browser/animations':'npm:@angular/platform-browser/bundles/platform-browser-animations.umd.js', + '@ng-bootstrap/ng-bootstrap': 'npm:@ng-bootstrap/ng-bootstrap/bundles/ng-bootstrap.umd.js', + 'bootstrap': 'npm:bootstrap', + '@webbpm/base-package': 'npm:@webbpm/base-package/bundles/webbpm-base-package.umd.js', + 'angular-calendar': 'npm:angular-calendar/bundles/angular-calendar.umd.js', + 'angular-calendar/date-adapters/date-fns': 'npm:angular-calendar/date-adapters/date-fns/index.js', + 'angular-draggable-droppable': 'npm:angular-draggable-droppable/bundles/angular-draggable-droppable.umd.js', + 'angular-resizable-element': 'npm:angular-resizable-element/bundles/angular-resizable-element.umd.js', + 'calendar-utils': 'npm:calendar-utils/bundles/calendar-utils.umd.js', + 'calendar-utils/date-adapters/date-fns': 'npm:calendar-utils/date-adapters/date-fns/index.js', + 'date-fns': 'npm:date-fns', + 'ngx-cookie': 'npm:ngx-cookie/bundles/ngx-cookie.umd.js', + 'moment': 'npm:moment', + 'moment-timezone': 'npm:moment-timezone', + 'positioning': 'npm:positioning/dist/positioning.js', + 'rxjs': 'npm:rxjs', + 'rxjs-compat': 'npm:rxjs-compat', + 'rxjs/operators': 'npm:rxjs/operators', + 'rxjs/internal-compatibility': 'npm:rxjs/internal-compatibility', + 'rxjs/ajax': 'npm:rxjs/ajax', + 'rxjs/testing': 'npm:rxjs/testing', + 'rxjs/webSocket': 'npm:rxjs/webSocket', + 'jquery': 'npm:jquery/dist/jquery.js', + 'popper.js': 'npm:popper.js/dist/umd/popper.js', + 'sifter': 'npm:sifter/sifter.min.js', + 'microplugin': 'npm:microplugin/src/microplugin.js', + 'selectize': 'npm:selectize/dist/js/selectize.min.js', + 'ngx-toastr': 'npm:ngx-toastr/bundles/ngx-toastr.umd.min.js', + 'eonasdan-bootstrap-datetimepicker': 'npm:eonasdan-bootstrap-datetimepicker/src/js/bootstrap-datetimepicker.js', + 'autonumeric': 'npm:autonumeric', + 'jsgantt-improved': 'npm:jsgantt-improved/dist/jsgantt.js', + 'js-year-calendar': 'npm:js-year-calendar/dist/js-year-calendar.js', + 'ag-grid-angular': 'npm:ag-grid-angular/bundles/ag-grid-angular.umd.js', + 'ag-grid-community': 'npm:ag-grid-community/dist/ag-grid-community.cjs.js', + 'inputmask': 'npm:inputmask', + 'downloadjs': 'npm:downloadjs/download.js', + 'esmarttokenjs': 'npm:esmarttokenjs/esmarttoken.js', + 'cadesplugin_api': 'npm:cadesplugin_api/index.js', + 'plugin-babel': 'npm:systemjs-plugin-babel/plugin-babel.js', + 'systemjs-babel-build': 'npm:systemjs-plugin-babel/systemjs-babel-browser.js', + 'chart.js': 'npm:chart.js/dist', + 'chartjs-adapter-moment': 'npm:chartjs-adapter-moment/dist/chartjs-adapter-moment.js', + 'tslib': 'npm:tslib/tslib.js', + 'ngx-international-phone-number': 'npm:ngx-international-phone-number/ngx-international-phone-number.umd.js', + 'google-libphonenumber': 'npm:google-libphonenumber/dist/libphonenumber.js' + }, + packages: { + 'preview': { main: './modules/preview/preview.main', defaultExtension: 'js'}, + '@angular/common/locales': { defaultExtension: 'js'}, + 'date-fns': { main: 'index.js', defaultExtension: 'js'}, + 'rxjs': { main: 'index.js', defaultExtension: 'js' }, + 'rxjs-compat': { main: "index.js", defaultExtension: 'js'}, + 'rxjs/operators': { main: "index.js", defaultExtension: 'js'}, + 'rxjs/internal-compatibility':{ main: "index.js", defaultExtension: 'js'}, + 'rxjs/ajax': { main: "index.js", defaultExtension: 'js'}, + 'rxjs/testing': { main: "index.js", defaultExtension: 'js'}, + 'rxjs/webSocket': { main: "index.js", defaultExtension: 'js'}, + 'moment': { main: 'min/locales.min', defaultExtension: 'js' }, + 'moment-timezone': { main: 'builds/moment-timezone-with-data.min', defaultExtension: 'js' }, + 'bootstrap': { main: 'dist/js/bootstrap', defaultExtension: 'js'}, + 'lib': { format: 'register', defaultExtension: 'js' }, + 'autonumeric': { + main: 'dist/autoNumeric.js' + }, + 'chart.js': { main: 'chart.js', defaultExtension: 'js' }, + 'inputmask': { + main: 'dist/inputmask.js', + defaultExtension: 'js' + } + } + }); +})(this); diff --git a/frontend/tsconfig.aot.json b/frontend/tsconfig.aot.json new file mode 100644 index 0000000..8e2aad3 --- /dev/null +++ b/frontend/tsconfig.aot.json @@ -0,0 +1,42 @@ +{ + "compilerOptions": { + "target": "es5", + "module": "commonjs", + "moduleResolution": "node", + "declaration": false, + "sourceMap": false, + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "removeComments": false, + "skipLibCheck": true, + "noImplicitAny": false, + "typeRoots": [ + "node_modules/@types" + ], + "lib": [ + "es2016", + "dom", + "es2017.object", + "es2018.promise" + ] + }, + "compileOnSave": false, + "buildOnSave": false, + "include": [ + "src/ts/**/*" + ], + "exclude": [ + "node_modules", + "./node_modules/@types", + "src/ts/main.ts", + "**/*.spec.ts", + "src/test.ts" + ], + "angularCompilerOptions": { + "skipMetadataEmit": true, + "alwaysCompileGeneratedCode":true, + "preserveWhitespaces": false, + "annotationsAs": "decorators", + "mainPath": "./src/ts" + } +} \ No newline at end of file diff --git a/frontend/tsconfig.json b/frontend/tsconfig.json new file mode 100644 index 0000000..d977dd5 --- /dev/null +++ b/frontend/tsconfig.json @@ -0,0 +1,40 @@ +{ + "compilerOptions": { + "baseUrl": "./", + "target": "es5", + "module": "commonjs", + "moduleResolution": "node", + "declaration": false, + "inlineSourceMap": true, + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "removeComments": false, + "skipLibCheck": true, + "noImplicitAny": false, + "outDir": "build_dev/js", + "typeRoots": [ + "node_modules/@types" + ], + "lib": [ + "es2016", + "dom", + "es2017.object", + "es2018.promise" + ] + }, + "compileOnSave": false, + "buildOnSave": false, + "include": [ + "src/ts/**/*" + ], + "exclude": [ + "node_modules", + "./node_modules/@types", + "**/*.ngfactory.ts", + "**/*.shim.ts", + "src/ts/main.aot.ts", + "src/ts/generated-sources/**/*", + "src/ts/page.routing.ts", + "src/ts/aot" + ] +} diff --git a/frontend/webpack.aot.config.js b/frontend/webpack.aot.config.js new file mode 100644 index 0000000..6615ed7 --- /dev/null +++ b/frontend/webpack.aot.config.js @@ -0,0 +1,136 @@ +'use strict'; +const path = require('path'); +const webpack = require('webpack'); +const CopyWebpackPlugin = require('copy-webpack-plugin'); +const HtmlWebpackPlugin = require('html-webpack-plugin'); +const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin; +const MiniCssExtractPlugin = require("mini-css-extract-plugin"); +const TerserPlugin = require('terser-webpack-plugin'); + +function _path(p) { + return path.join(__dirname, p); +} + +module.exports = { + mode: 'production', + entry: { + 'polyfills': './build/scripts/polyfills.js', + 'vendor': './build/scripts/vendor.js', + 'main': './build/scripts/main.aot.js' + }, + + context: process.cwd(), + + output: { + path: path.join(process.cwd(), './dist'), + filename: '[name].[chunkhash].bundle.js', + chunkFilename: '[id].[chunkhash].chunk.js' + }, + + module: { + rules: [ + { + test: /\.js$/, + loader: 'babel-loader', + include: [path.resolve(__dirname, "node_modules")], + options: { + presets: ['@babel/preset-env'] + } + }, + { + test: /\.js$/, + loader: 'angular-router-loader?aot=true' + }, + { + test: /\.html$/, + loader: 'raw-loader' + }, + { + test: /\.css$/, + use: [ + { + loader: MiniCssExtractPlugin.loader, + options: { + // you can specify a publicPath here + // by default it use publicPath in webpackOptions.output + // publicPath: '../' + } + }, + "css-loader" + ] + }, + { + test: /\.(png|jpe?g|gif|svg|woff|woff2|ttf|eot|ico|otf)$/, + loader: 'file-loader?name=src/resources/[name].[hash].[ext]' + } + ] + }, + + optimization: { + minimizer: [ + new TerserPlugin({ + cache: true, + parallel: true, + terserOptions: { + // https://github.com/webpack-contrib/terser-webpack-plugin#terseroptions + } + }) + ], + splitChunks: { + // include all types of chunks + chunks: 'all' + } + }, + + plugins: [ + // new BundleAnalyzerPlugin(), + new HtmlWebpackPlugin({ + template: 'index.webpack.html', + filename: 'index.html', + chunksSortMode : 'none' + }), + new CopyWebpackPlugin([ + {from: 'index.webpack.html', to: 'index.html'}, + {from: 'src/resources/img/progress.gif', to: 'src/resources/img/progress.gif'}, + {from: 'src/resources/img/logo.png', to: 'src/resources/img/logo.png'}, + {from: 'src/resources/app-config.json', to: 'src/resources/app-config.json'}, + {from: 'src/resources/app.version', to: 'src/resources/app.version'} + ]), + new MiniCssExtractPlugin({ + filename: '[name].[hash].css', + chunkFilename: '[id].[hash].css' + }), + new webpack.ProvidePlugin({ + $: "jquery", + jQuery: "jquery", + "window.jQuery": "jquery", + Popper: ['popper.js', 'default'] + }) + ], + + resolve: { + alias: { + 'jquery': _path('node_modules/jquery/dist/jquery.min'), + 'inputmask': _path('node_modules/inputmask/dist/inputmask'), + 'downloadjs': _path('node_modules/downloadjs/download.min.js'), + 'esmarttokenjs': _path('node_modules/esmarttokenjs/esmarttoken.js'), + 'cadesplugin_api': _path('node_modules/cadesplugin_api/index.js'), + 'eonasdan-bootstrap-datetimepicker': _path('node_modules/eonasdan-bootstrap-datetimepicker/src/js/bootstrap-datetimepicker'), + 'autonumeric': _path('node_modules/autonumeric/dist/autoNumeric.js'), + 'jsgantt-improved': _path('node_modules/jsgantt-improved/dist/jsgantt.js'), + 'js-year-calendar': _path('node_modules/js-year-calendar/dist/js-year-calendar.js'), + 'chart.js': _path('node_modules/chart.js/dist/chart.js') + }, + modules: [ + 'node_modules', + path.resolve(process.cwd(), './build'), + path.resolve(process.cwd(), './build/scripts'), + ], + extensions: ['.js'] + }, + + stats: { + children: false + }, + devtool: false +}; diff --git a/packages/.gitkeep b/packages/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/packages/ru.cg.webbpm.packages.base.resources/.flattened-pom.xml b/packages/ru.cg.webbpm.packages.base.resources/.flattened-pom.xml new file mode 100644 index 0000000..41979f5 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/.flattened-pom.xml @@ -0,0 +1,78 @@ + + + 4.0.0 + ru.cg.webbpm.packages.base + resources + 3.177.2 + + Micord + + + scm:git:git://gitserver/webbpm/webbpm-components.git/resources + + + + micord + Micord Release repository + https://repo.micord.ru/repository/packages-releases-local/ + + + snapshots + Micord Snapshots repository + https://repo.micord.ru/repository/packages-snapshots-local/ + + + + ${project.parent.basedir}/frontend/target + 3.19.3 + 5.10.2 + true + 3.177.2 + 1.4.200 + 0820111143 + UTF-8 + 1.10.0 + true + 3.177.2 + typescript.metadata.json + https://repo.micord.ru + MMddHHmmss + UTF-8 + ${project.parent.basedir}/backend/target + https://repo.micord.ru + java.metadata + + + + ru.cg.webbpm.packages.base + converters + 3.177.2 + compile + + + ru.cg.webbpm.packages.base + backend + 3.177.2 + compile + + + ru.cg.webbpm.packages.base + frontend + 3.177.2 + compile + + + + + micord-public + micord-public + https://repo.micord.ru/repository/maven-public + + + micord + micord + https://repo.micord.ru/repository/maven-micord + + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/MANIFEST.MF b/packages/ru.cg.webbpm.packages.base.resources/META-INF/MANIFEST.MF new file mode 100644 index 0000000..3121d98 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/MANIFEST.MF @@ -0,0 +1,4 @@ +Manifest-Version: 1.0 +Created-By: Maven Jar Plugin 3.2.0 +Build-Jdk-Spec: 17 + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components-package.xml b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components-package.xml new file mode 100644 index 0000000..65311b2 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components-package.xml @@ -0,0 +1,30 @@ + + + + + containers + 11000 + + + grids + 10000 + + + editable-grids + 9000 + + + buttons + 8000 + + + fields + 6000 + + + filters + 5000 + + + META-INF/components/localization/default-components + \ No newline at end of file diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/BpmnStartProcessVariable.ts.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/BpmnStartProcessVariable.ts.html new file mode 100644 index 0000000..5534c8c --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/BpmnStartProcessVariable.ts.html @@ -0,0 +1,71 @@ + + + + + + + + Web-BPM Docs – + + + + + + +
+
+ + + +
+
+

Описание: скрипт предназначен для записи значения объекта в переменную и передачи заполненной переменной в другой процесс во время его запуска.
+Скрипт накидывается на объект, значение которого мы хотим сохранить в переменную.

+ + + + + + + + + + + + + + + +
Наименование Назначение
Variable Name Строкой указываем имя переменной, в которую будет сохранено значение объекта. Переменная с таким именем (наименование должно быть идентичным) должна существовать в процессе, который будет запущен после текущего процесса.
Type Указывается тип переменной.
+

Механизм работы:

+

- в текущем процессе Test накинули скрипт BpmnStartProcessVariable на TextField, указали переменную var1. Переменная была создана в процессе Test2.
+- запускаем процесс Test2, в это время происходит поиск всех скриптов BpmnStartProcessVariable, записываются значения объектов в указанные переменные. Запускается процесс Test2, переменная var1 заполнена значением с TextField

+

+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/index.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/index.html new file mode 100644 index 0000000..8a129bf --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/index.html @@ -0,0 +1,70 @@ + + + + + + + + Web-BPM Docs – Кнопки + + + + + + + +
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/reporting/Как_добавить_кнопку_печати_из_графа_сущности_на_страницу_.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/reporting/Как_добавить_кнопку_печати_из_графа_сущности_на_страницу_.html new file mode 100644 index 0000000..3dac324 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/reporting/Как_добавить_кнопку_печати_из_графа_сущности_на_страницу_.html @@ -0,0 +1,86 @@ + + + + + + + + Web-BPM Docs – Как добавить кнопку печати из графа сущности на страницу? + + + + + + +
+
+ + + +
+
+

Как добавить кнопку печати из графа сущности на страницу?

+

Постановка задачи: необходимо реализовать на пользовательской странице элемент Кнопка печати из графа сущности, при нажатии на которую будет сформирован отчет в формате XLSX. Кнопка печати отчета из формы будет иметь следующие настройки:

+
    + +
  • надпись поля -Печать
  • +
  • граф сущности - monthly_data
  • +
  • список передаваемых параметров с формы в шаблон*-2*
  • +
  • в параметр шаблона отчета первого элемента - Year
  • +
  • из поля таблицы первого элемента - year
  • +
  • в параметр шаблона отчета второго элемента - Month
  • +
  • из поля таблицы второгоэлемента -month**
  • +
  • шаблон файла отчета -приложение.jrxml
  • +
  • формат выходного файла -XLSX
  • +
+

Решение задачи:

+

Предполагается, что пользовательская страница уже создана бизнес-аналитиком, где имеется основная компонента Форма и шаблон файла отчета приложение.jrxml, в котором имеются входные параметры Year и Month. Для добавления на страницу и настройки кнопки печати из графа сущности необходимо сделать следующее:

+
    + +
  • добавить внутрь Формы компоненту Кнопка печати из графа сущности (рис.1)
  • +
  • произвести настройки согласно условию задачи (рис.1)
  • +
+

+

рис.1. Добавление кнопки печати из графа сущности на страницу

+

Результат выполнения задачи:

+

После применения изменений на странице, в экранной форме пользовательского приложения, мы видим, что условия задачи соблюдены (рис.2)

+

рис.2. Визуальное отображение выполнения условий задачи

+ +
+
+

Attachments:

+
+ + +
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/reporting/Как_добавить_кнопку_печати_отчета_из_формы_на_страницу_.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/reporting/Как_добавить_кнопку_печати_отчета_из_формы_на_страницу_.html new file mode 100644 index 0000000..2aef9d5 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/reporting/Как_добавить_кнопку_печати_отчета_из_формы_на_страницу_.html @@ -0,0 +1,87 @@ + + + + + + + + Web-BPM Docs – Как добавить кнопку печати отчета из формы на страницу? + + + + + + +
+
+ + + +
+
+

Как добавить кнопку печати отчета из формы на страницу?

+

Постановка задачи: необходимо реализовать на пользовательской странице элемент Кнопка печати отчета из формы, при нажатии на которую будет сформирован отчет в формате XLSX. Кнопка печати отчета из формы будет иметь следующие настройки:

+
    + +
  • надпись поля -Печать
  • +
  • компонент “Форма” - Форма
  • +
  • список передаваемых параметров с формы в шаблон - 2
  • +
  • в параметр шаблона отчета первого элемента - Date_Begin
  • +
  • из поля формыпервого элемента - DateTimePicker_date_form
  • +
  • в параметр шаблона отчета второго элемента - Date_End
  • +
  • из поля формывторогоэлемента -DateTimePicker_to_date**
  • +
  • шаблон файла отчета - приложение.jrxml
  • +
  • формат выходного файла -XLSX
  • +
+

Решение задачи:

+

Предполагается, что пользовательская страница уже создана бизнес-аналитиком, где имеется основная компонента Форма и шаблон файла отчета приложение.jrxml, в котором имеются входные параметры Date_Begin и Date_End. Для добавления на страницу и настройки кнопки печати отчета из формы необходимо сделать следующее:

+
    + +
  • добавить внутрь Формы компоненту Кнопка печати отчета из формы (рис.1)
  • +
  • произвести настройки согласно условию задачи (рис.1)
  • +
+

+

рис.1. Добавление кнопки печати отчета из формы на страницу

+

Результат выполнения задачи:

+

После применения изменений на странице, в экранной форме пользовательского приложения, мы видим, что условия задачи соблюдены (рис.2)

+

+

рис.2. Визуальное отображение выполнения условий задачи

+ +
+
+

Attachments:

+
+ + +
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/reporting/Кнопка_печати_из_графа_сущности.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/reporting/Кнопка_печати_из_графа_сущности.html new file mode 100644 index 0000000..6ba81b0 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/reporting/Кнопка_печати_из_графа_сущности.html @@ -0,0 +1,118 @@ + + + + + + + + Web-BPM Docs – Кнопка печати из графа сущности + + + + + + +
+
+ + + +
+
+

Кнопка печати из графа сущности

+

Назначение

+

Кнопка печати из графа сущности - это компонента, которая используется для печати данных, источником который служат значения из графа сущности. В результате нажатия на кнопку формируется документ в одном из заданных форматов: ODT, PDF, DOCX, XLSX.

+

Компонента Кнопка печати из графа сущности находится в разделе Компоненты - Кнопки - Кнопка печати из графа сущности

+

Свойства

+

Компонента имеет набор общих свойств. Ниже отображены свойства, специфичные только для данной компоненты.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Надпись на кнопке позволяет задать наименование кнопки пример возможного значения: Печать
Текст подтверждения при нажатии позволяет задать текст сообщения, который отобразится в диалоговом окне после нажатия на кнопку пример возможного значения: Вы действительно хотите напечатать отчет?
Основные параметры (Формировать отчет по собственному графу) Позволяет задать настройки формирования отчета. Сохранить используя - позволяет задать объект,в котором будет происходить сохранение сформированного документа в базу. Скачать сразу после формирования - позволяет задать автоматическое скачивание сформированного отчета
Файл шаблона и передача параметров (Формировать отчет по собственному графу) Позволяет задать файл шаблона отчета и формат выходного файла Список передаваемых параметров с формы в шаблон - позволяет добавить элементы, которые будут печататься. Граф сущностей - выбор графа сущностей, откуда будут печататься данные. Шаблон файла отчета - позволяет задать jasper шаблон, на основе которого будет формироваться документ. Формат выходного файла - позволяет задать расширение формируемого документа (ODT, PDF, DOCX, XLSX, XLS, CSV)
+

Функции

+

В ходе настройки свойств компоненты (заданных по умолчанию) может оказаться недостаточно для выполнения поставленной задачи и получения необходимого результата.

+

Для каждой компоненты предусмотрен перечень функций, расширяющих её базовую функциональность, которые можно добавить нажатием кнопки .

+

Вследствие технических особенностей реализации скриптов (

+

- скрипты выполняются удаленно на сервере приложений,

+

- скрипты выполняются в браузере пользователя), они имеют разные иконки, но это никак не влияет на их функциональность или предпочтительность использования.

+

Определить права текущего пользователя

+

Определить права текущего пользователя

+

Определить роли текущего пользователя

+

Определить роли текущего пользователя

+

Методические рекомендации по применению

+

Пошаговые инструкции по применению компонента в типовых задачах Вы можете найти в разделах:

+ +

Часто задаваемые вопросы

+ + + + + + + + + + + + + + + + + + +
Вопрос Ответ
Чем отличается компонента Кнопка печати из графа сущности от компоненты Кнопка печати отчета из формы Компонента Кнопка печати отчета из формы предназначена для формирования отчета, в который подставляются значения с формы, Кнопка печати из графа сущности предназначена для формирования отчета, в который подставляются значения из графа сущностей.
Все ли свойства компоненты обязательны для заполнения Нет. Свойства компоненты определяются в зависимости от решаемой задачи.
Как в Jaspersoft Studio связать локальные параметры датасета c глобальными параметрами отчета Table -> Properties -> вкладка Dataset -> Parameters. Тут добавляйте параметр датасета и в Expression вставляйте необходимый глобальный параметр отчета (Подробнее тут)
+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/reporting/Кнопка_печати_отчета_из_формы.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/reporting/Кнопка_печати_отчета_из_формы.html new file mode 100644 index 0000000..5cb023b --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/reporting/Кнопка_печати_отчета_из_формы.html @@ -0,0 +1,117 @@ + + + + + + + + Web-BPM Docs – Кнопка печати отчета из формы + + + + + + +
+
+ + + +
+
+

Кнопка печати отчета из формы

+

Назначение

+

Кнопка печати отчета из формы - это компонента, которая используется для печати данных, источником который служат значения из формы страницы. В результате нажатия на кнопку формируется документ в одном из заданных форматов: ODT, PDF, DOCX, XLSX.

+

Компонента Кнопка печати отчета из формы находится в разделе Компоненты - Кнопки - Кнопка печати отчета из формы

+

Свойства

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Надпись на кнопке позволяет задать наименование кнопки пример возможного значения: Печать
Текст подтверждения при нажатии позволяет задать текст сообщения, который отобразится в диалоговом окне после нажатия на кнопку пример возможного значения: Вы действительно хотите напечатать отчет?
Основные параметры (Формировать отчет из значений полей компонента “Форма”) позволяет задать настройки формирования отчета Сохранить используя - позволяет задать объект,в которомбудет происходить сохранение сформированного документа в базу. Скачать сразу после формирования - позволяет задать автоматическое скачивание сформированного отчета. Компонент Форма - позволяет задать объект типа Форма, поля которого печатаются по нажатию на кнопку
Файл шаблона и передача параметров (Формировать отчет из значений полей компонента “Форма”) позволяет задать файл шаблона отчета и формат выходного файла Список передаваемых параметров с формы в шаблон - позволяет добавить элементы, которые будут печататься. Шаблон файла отчета - позволяет задать jasper шаблон, на основе которого будет формироваться документ. Формат выходного файла - позволяет задать расширение формируемого документа (ODT, PDF, DOCX, XLSX, XLS, CSV).
+

Функции

+

В ходе настройки свойств компоненты (заданных по умолчанию) может оказаться недостаточно для выполнения поставленной задачи и получения необходимого результата.

+

Для каждой компоненты предусмотрен перечень функций, расширяющих её базовую функциональность, которые можно добавить нажатием кнопки .

+

Вследствие технических особенностей реализации скриптов (

+

- скрипты выполняются удаленно на сервере приложений,

+

- скрипты выполняются в браузере пользователя), они имеют разные иконки, но это никак не влияет на их функциональность или предпочтительность использования.

+

Определить права текущего пользователя

+

Определить права текущего пользователя

+

Определить роли текущего пользователя

+

Определить роли текущего пользователя

+

Методические рекомендации по применению

+

Пошаговые инструкции по применению компонента в типовых задачах Вы можете найти в разделах:

+
+

Часто задаваемые вопросы

+ + + + + + + + + + + + + + + + + + +
Вопрос Ответ
Чем отличается компонента Кнопка печати отчета из формы от компоненты Кнопка печати из графа сущности Компонента Кнопка печати отчета из формы предназначена для формирования отчета, в который подставляются значения с формы, Кнопка печати из графа сущности предназначена для формирования отчета,в который подставляются значения из графа сущностей.
Все ли свойства компоненты обязательны для заполнения Нет. Свойства компоненты определяются в зависимости от решаемой задачи. При использовании подотчетов (subreports) при разработке основного отчета в Jaspersoft Studio следует указывать полный путь до подотчетаотносительно папки resourcesстудии (в файловой системе resources/src/main/resources)
Как в Jaspersoft Studio связать локальные параметры датасета c глобальными параметрами отчета Table -> Properties -> вкладка Dataset -> Parameters. Тут добавляйте параметр датасета и в Expression вставляйте необходимый глобальный параметр отчета (Подробнее тут)
+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Как_добавить_кнопку_выбора_на_страницу_.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Как_добавить_кнопку_выбора_на_страницу_.html new file mode 100644 index 0000000..780706a --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Как_добавить_кнопку_выбора_на_страницу_.html @@ -0,0 +1,90 @@ + + + + + + + + Web-BPM Docs – Как добавить кнопку выбора на страницу? + + + + + + +
+
+ + + +
+
+

Как добавить кнопку выбора на страницу?

+

Постановка задачи: необходимо реализовать на пользовательской странице элемент Кнопка выбора, при нажатии на которую открывается страница с информацией по выбранной записи из таблицы реестра Рабочий журнал ЛВИ. Кнопка выбора будет иметь следующие настройки:

+
    + +
  • надпись поля -Открыть
  • +
  • возможность выбора более 1 записи - Не отмечено
  • +
  • компонент для выбора записей -Таблица
  • +
  • значение переменной навигации - open
  • +
+

Решение задачи:

+

Предполагается, что пользовательская страница уже создана бизнес-аналитиком, где имеется ***основные компоненты Форма и Таблица***. Для добавления на страницу и настройки кнопки выбора необходимо сделать следующее:

+
    + +
  • добавить внутрь Формы компоненту Кнопка выбора (рис.1)
  • +
  • произвести настройки согласно условию задачи (рис.1)
  • +
+

+

рис.1. Добавление кнопки выбора на страницу

+

Результат выполнения задачи:

+

После применения изменений на странице, в экранной форме пользовательского приложения, мы видим, что условия задачи соблюдены (рис.2)

+

+

рис.2. Визуальное отображение выполнения условий задачи, кнопка выбора не активна

+

рис.3. Визуальное отображение выполнения условий задачи, кнопка выбора активна

+ +
+
+

Attachments:

+
+ + +
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Как_добавить_кнопку_вызова_ошибки_на_страницу_.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Как_добавить_кнопку_вызова_ошибки_на_страницу_.html new file mode 100644 index 0000000..9901cd6 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Как_добавить_кнопку_вызова_ошибки_на_страницу_.html @@ -0,0 +1,80 @@ + + + + + + + + Web-BPM Docs – Как добавить кнопку вызова ошибки на страницу? + + + + + + +
+
+ + + +
+
+

Как добавить кнопку вызова ошибки на страницу?

+

Постановка задачи: необходимо реализовать на пользовательской странице элемент Кнопка вызова ошибки, при нажатии на которую будет появляться сообщение об ошибки. Кнопка загрузки будет иметь следующие настройки:

+
    + +
  • надпись поля -Ошибка
  • +
  • задается наименование ошибки -Отсутствует соединение**
  • +
+

Решение задачи:

+

Предполагается, что пользовательская страница уже создана бизнес-аналитиком, где имеется ***основная компонента Форма***. Для добавления на страницу и настройки кнопки вызова ошибки необходимо сделать следующее:

+
    + +
  • добавить внутрь Формы компоненту Кнопка вызова ошибки (рис.1)
  • +
  • произвести настройки согласно условию задачи (рис.1)
  • +
+

+

рис.1. Добавление кнопки вызова ошибки на страницу

+

Результат выполнения задачи:

+

После применения изменений на странице, в экранной форме пользовательского приложения, мы видим, что условия задачи соблюдены (рис.2)

+

+

рис.2. Визуальное отображение выполнения условий задачи

+ +
+
+

Attachments:

+
+ + +
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Как_добавить_кнопку_выполнения_SQL_на_страницу_.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Как_добавить_кнопку_выполнения_SQL_на_страницу_.html new file mode 100644 index 0000000..4f90de1 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Как_добавить_кнопку_выполнения_SQL_на_страницу_.html @@ -0,0 +1,103 @@ + + + + + + + + Web-BPM Docs – Как добавить кнопку выполнения SQL на страницу? + + + + + + +
+
+ + + +
+
+

Как добавить кнопку выполнения SQL на страницу?

+

Постановка задачи: необходимо реализовать на пользовательской странице элемент Кнопка выполнения SQL, при нажатии на которую будет выполняться SQL-скрипт. Кнопка выполнения SQL будет иметь следующие настройки:

+
    + +
  • + +

    надпись поля -В архив

    +
  • +
  • + +

    текст подтверждения при нажатии -Вы действительно хотите переместить выбранные задачи в архив?

    +
  • +
  • + +

    текст SQL запроса -

    +

    update tasks
    +set status_id =
    +(
    +select task_statuses_id
    +from task_statuses
    +where status_code =‘ARCHIVED’
    +)

    +

    where task_id=ANY(?)

    +
  • +
  • + +

    параметры запроса, элемент - Таблица “Задачи”, Таблица.Get Select Values

    +
  • +
+

Решение задачи:

+

Предполагается, что пользовательская страницауже создана бизнес-аналитиком, где имеется ***основная компонента Таблица “Задачи”***. Для добавления на страницу и настройки кнопки выполнения SQL необходимо сделать следующее:

+
    + +
  • добавить внутрь Формы компоненту Кнопка выполнения SQL (рис.1)
  • +
  • произвести настройки согласно условию задачи (рис.1)
  • +
+

+

рис.1. Добавление кнопки выполнения SQL на страницу

+

Результат выполнения задачи:

+

После применения изменений на странице, в экранной форме пользовательского приложения, мы видим, что условия задачи соблюдены (рис.2)

+

+

рис.2 Визуальное отображение выполнения условий задачи

+ +
+
+

Attachments:

+
+ + +
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Как_добавить_кнопку_для_фильтрации_на_страницу_.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Как_добавить_кнопку_для_фильтрации_на_страницу_.html new file mode 100644 index 0000000..b88285c --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Как_добавить_кнопку_для_фильтрации_на_страницу_.html @@ -0,0 +1,81 @@ + + + + + + + + Web-BPM Docs – Как добавить кнопку для фильтрации на страницу? + + + + + + +
+
+ + + +
+
+

Как добавить кнопку для фильтрации на страницу?

+

Постановка задачи: необходимо реализовать на пользовательской странице элемент Кнопка для фильтрации, при нажатии на которую будет отфильтрован список организаций. Кнопка для фильтрации будет иметь следующие настройки:

+
    + +
  • надпись поля -Применить
  • +
  • компонет “Набор фильтров” - набор фильтров
  • +
+

Решение задачи:

+

Предполагается, что пользовательская страницауже создана бизнес-аналитиком, где имеется ***основные компоненты Форма и Набор фильтров***. Для добавления на страницу и настройки кнопки для фильтрации необходимо сделать следующее:

+
    + +
  • добавить внутрь Формы компоненту Кнопка для фильтрации (рис.1)
  • +
  • произвести настройки согласно условию задачи (рис.1)
  • +
+

+

рис.1. Добавление кнопки для фильтрации на страницу

+

Результат выполнения задачи:

+

После применения изменений на странице, в экранной форме пользовательского приложения, мы видим, что условия задачи соблюдены (рис.2)

+

+

рис.2. Визуальное отображение выполнения условий задачи

+ +
+
+

Attachments:

+
+ + +
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Как_добавить_кнопку_загрузки_на_страницу_.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Как_добавить_кнопку_загрузки_на_страницу_.html new file mode 100644 index 0000000..10124e2 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Как_добавить_кнопку_загрузки_на_страницу_.html @@ -0,0 +1,82 @@ + + + + + + + + Web-BPM Docs – Как добавить кнопку загрузки на страницу? + + + + + + +
+
+ + + +
+
+

Как добавить кнопку загрузки на страницу?

+

Постановка задачи: необходимо реализовать на пользовательской странице элемент Кнопка загрузки, при нажатии на которую будет скачиваться файл из базы данных. Кнопка загрузки будет иметь следующие настройки:

+
    + +
  • поле должно иметь всплывающую подсказку -Для загрузки файла нажмите на кнопку
  • +
  • надпись поля - Скачать
  • +
  • текст подтверждения при нажатии -Вы действительно хотите скачать файл?
  • +
  • компонет для выбора записи - Таблица
  • +
+

Решение задачи:

+

Предполагается, что пользовательская страницауже создана бизнес-аналитиком, где имеется ***основные компоненты Форма и Таблица***. Для добавления на страницу и настройки кнопки загрузки необходимо сделать следующее:

+
    + +
  • добавить внутрь Формы компоненту Кнопка загрузки (рис.1)
  • +
  • произвести настройки согласно условию задачи (рис.1)
  • +
+

+

рис.1. Добавление кнопки загрузки на страницу

+

Результат выполнения задачи:

+

После применения изменений на странице, в экранной форме пользовательского приложения, мы видим, что условия задачи соблюдены (рис.2)

+

+

рис.2. Визуальное отображение выполнения условий задачи

+ +
+
+

Attachments:

+
+ + +
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Как_добавить_кнопку_на_страницу_.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Как_добавить_кнопку_на_страницу_.html new file mode 100644 index 0000000..98ce06f --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Как_добавить_кнопку_на_страницу_.html @@ -0,0 +1,86 @@ + + + + + + + + Web-BPM Docs – Как добавить кнопку на страницу? + + + + + + +
+
+ + + +
+
+

Как добавить кнопку на страницу?

+

Постановка задачи: необходимо реализовать на пользовательской странице элемент Кнопка, которая будет иметь следующие настройки:

+
    + +
  • надпись поля -Перейти к заполнению реквизитов
  • +
  • скрипт -Вкладки. Управление “Вкладкой”. Переход из текущей на последующую
  • +
  • компонента “Вкладки” - Контейнер вкладок
  • +
  • шаг перехода к следующей вкладке (число) - 1
  • +
+

Решение задачи:

+

Предполагается, что пользовательская страница и бизнес процесс уже созданы бизнес-аналитиком. Настранице имеется основная компонента Форма, а в ней Контейнер вкладок и ***Вкладка***. Для добавления на страницу и настройки кнопки необходимо сделать следующее:

+
    + +
  • добавить внутрь Вкладки компоненту Кнопка (рис.1)
  • +
  • произвести настройки согласно условию задачи (рис.1)
  • +
+

+

рис.1. Добавление кнопки навигации на страницу

+

Результат выполнения задачи:

+

После применения изменений на странице, в экранной форме пользовательского приложения, мы видим, что условия задачи соблюдены (рис.2)

+

+

рис.2. Визуальное отображение выполнения условий задачи

+

При нажатии на кнопку происходит переход на вкладку “Реквизиты” (рис.3)

+

+

рис.3. Вкладка “Реквизиты”

+ +
+
+

Attachments:

+
+ + +
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Как_добавить_кнопку_навигации_на_страницу_.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Как_добавить_кнопку_навигации_на_страницу_.html new file mode 100644 index 0000000..5c6a22b --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Как_добавить_кнопку_навигации_на_страницу_.html @@ -0,0 +1,84 @@ + + + + + + + + Web-BPM Docs – Как добавить кнопку навигации на страницу? + + + + + + +
+
+ + + +
+
+

Как добавить кнопку навигации на страницу?

+

Постановка задачи: необходимо реализовать на пользовательской странице элемент Кнопка навигации, которая будет иметь следующие настройки:

+
    + +
  • надпись поля - Открыть
  • +
  • поле должно иметь всплывающую подсказку -Для редактирования нажмите на кнопку
  • +
  • значение переменной навигации -open
  • +
+

Решение задачи:

+

Предполагается, что пользовательская страница и бизнес процесс уже созданы бизнес-аналитиком. В процессе создана переменная open, а на странице имеется ***основная компонента Форма***. Для добавления на страницу и настройки кнопки навигации необходимо сделать следующее:

+
    + +
  • добавить внутрь Формы компоненту Кнопка навигации (рис.1)
  • +
  • произвести настройки согласно условию задачи (рис.1)
  • +
+

+

рис.1. Добавление кнопки навигации на страницу

+

Результат выполнения задачи:

+

После применения изменений на странице, в экранной форме пользовательского приложения, мы видим, что условия задачи соблюдены (рис.2)

+

+

рис.2. Визуальное отображение выполнения условий задачи

+ +
+
+

Attachments:

+
+ + +
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Как_добавить_кнопку_отмены_на_страницу_.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Как_добавить_кнопку_отмены_на_страницу_.html new file mode 100644 index 0000000..c4d568c --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Как_добавить_кнопку_отмены_на_страницу_.html @@ -0,0 +1,82 @@ + + + + + + + + Web-BPM Docs – Как добавить кнопку отмены на страницу? + + + + + + +
+
+ + + +
+
+

Как добавить кнопку отмены на страницу?

+

Постановка задачи: необходимо реализовать на пользовательской странице элемент Кнопка отмены, которая будет иметь следующие настройки:

+
    + +
  • надпись поля -Отменить
  • +
  • поле должно иметь всплывающую подсказку -Для отмены нажмите на кнопку
  • +
  • поле должно иметь текст подтверждения при нажатии -Вы действительно хотите отменить изменения?
  • +
+

Решение задачи:

+

Предполагается, что пользовательская страницауже создана бизнес-аналитиком, где имеется ***основная компонента Форма***. Для добавления на страницу и настройки кнопки отмены необходимо сделать следующее:

+
    + +
  • добавить внутрь Формы компоненту Кнопка отмены (рис.1)
  • +
  • произвести настройки согласно условию задачи (рис.1)
  • +
+

+

рис.1. Добавление кнопки отмены на страницу

+

Результат выполнения задачи:

+

После применения изменений на странице, в экранной форме пользовательского приложения, мы видим, что условия задачи соблюдены (рис.2)

+

+

рис.2. Визуальное отображение выполнения условий задачи

+ +
+
+

Attachments:

+
+ + +
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Как_добавить_кнопку_очистки_фильтра_на_страницу_.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Как_добавить_кнопку_очистки_фильтра_на_страницу_.html new file mode 100644 index 0000000..a27125a --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Как_добавить_кнопку_очистки_фильтра_на_страницу_.html @@ -0,0 +1,83 @@ + + + + + + + + Web-BPM Docs – Как добавить кнопку очистки фильтра на страницу? + + + + + + +
+
+ + + +
+
+

Как добавить кнопку очистки фильтра на страницу?

+

Постановка задачи: необходимо реализовать на пользовательской странице элемент Кнопка очистки фильтра, которая будет иметь следующие настройки:

+
    + +
  • надпись поля -Сбросить
  • +
  • компонет “Набор фильтров” -набор фильтров
  • +
  • сбросить значения фильтров на значения по умолчанию - отмечено
  • +
  • применить фильтры после сброса - отмечено
  • +
+

Решение задачи:

+

Предполагается, что пользовательская страницауже создана бизнес-аналитиком, где имеется ***основные компоненты Форма и Набор фильтров***. Для добавления на страницу и настройки кнопки для фильтрации необходимо сделать следующее:

+
    + +
  • добавить внутрь Формы компоненту Кнопка для фильтрации (рис.1)
  • +
  • произвести настройки согласно условию задачи (рис.1)
  • +
+

+

рис.1. Добавление кнопки очистки фильтра на страницу

+

Результат выполнения задачи:

+

После применения изменений на странице, в экранной форме пользовательского приложения, мы видим, что условия задачи соблюдены (рис.2)

+

+

рис.2. Визуальное отображение выполнения условий задачи

+ +
+
+

Attachments:

+
+ + +
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Как_добавить_кнопку_сохранения_на_страницу_.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Как_добавить_кнопку_сохранения_на_страницу_.html new file mode 100644 index 0000000..8288286 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Как_добавить_кнопку_сохранения_на_страницу_.html @@ -0,0 +1,86 @@ + + + + + + + + Web-BPM Docs – Как добавить кнопку сохранения на страницу? + + + + + + +
+
+ + + +
+
+

Как добавить кнопку сохранения на страницу?

+

Постановка задачи: необходимо реализовать на пользовательской странице элемент Кнопка сохранения, которая будет иметь следующие настройки:

+
    + +
  • надпись поля -Сохранить
  • +
  • поле должно иметь всплывающую подсказку -Для сохранения нажмите на кнопку
  • +
  • поле должно иметь текст подтверждения при нажатии -Вы действительно хотите сохранить изменения?
  • +
+

Решение задачи:

+

Предполагается, что пользовательская страницауже создана бизнес-аналитиком, где имеется ***основная компонента Форма***. Для добавления на страницу и настройки кнопки сохранения необходимо сделать следующее:

+
    + +
  • добавить внутрь Формы компоненту Кнопка сохранения (рис.1)
  • +
  • произвести настройки согласно условию задачи (рис.1)
  • +
+

+

рис.1. Добавление кнопки сохранения на страницу

+

Для заполнения параметра Компонент “Форма” необходимо перетащить с помощью мыши объект “Основная форма страницы” из дерева структуры страницы в окно настройки параметров Кнопки сохранения.

+

Также существует удобная функциональность обратного быстрого перехода по дереву структуры страницы к задействованной компоненте посредством клика на параметре Компонент “Форма” Кнопки сохранения, когда есть необходимость уточнить, на какую именно компоненту в дереве ссылается интересующий параметр.

+

рис.2. Заполнение параметра Компонент “Форма”

+

Результат выполнения задачи:

+

После применения изменений на странице, в экранной форме пользовательского приложения, мы видим, что условия задачи соблюдены (рис.3)

+

+

рис.3. Визуальное отображение выполнения условий задачи

+ +
+
+

Attachments:

+
+ + +
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Как_добавить_кнопку_удаления_на_страницу_.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Как_добавить_кнопку_удаления_на_страницу_.html new file mode 100644 index 0000000..e18c330 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Как_добавить_кнопку_удаления_на_страницу_.html @@ -0,0 +1,84 @@ + + + + + + + + Web-BPM Docs – Как добавить кнопку удаления на страницу? + + + + + + +
+
+ + + +
+
+

Как добавить кнопку удаления на страницу?

+

Постановка задачи: необходимо реализовать на пользовательской странице элемент Кнопка удаления, которая будет иметь следующие настройки:

+
    + +
  • надпись поля -Удалить
  • +
  • поле должно иметь всплывающую подсказку -Для удаления нажмите на кнопку
  • +
  • поле должно иметь текст подтверждения при нажатии -Вы действительно хотите удалить запись?
  • +
+

Решение задачи:

+

Предполагается, что пользовательская страницауже создана бизнес-аналитиком, где имеется ***основная компонента Форма***. Для добавления на страницу и настройки кнопки сохранения необходимо сделать следующее:

+
    + +
  • добавить внутрь Формы компоненту Кнопка удаления (рис.1)
  • +
  • произвести настройки согласно условию задачи (рис.1)
  • +
+

+

рис.1. Добавление кнопки удаления на страницу

+

Результат выполнения задачи:

+

После применения изменений на странице, в экранной форме пользовательского приложения, мы видим, что условия задачи соблюдены (рис.2)

+

+

рис.2. Визуальное отображение выполнения условий задачи

+ +
+
+

Attachments:

+
+ + +
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Кнопка.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Кнопка.html new file mode 100644 index 0000000..23e8347 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Кнопка.html @@ -0,0 +1,105 @@ + + + + + + + + Web-BPM Docs – Кнопка + + + + + + +
+
+ + + +
+
+

Кнопка

+

Кнопка - это компонента, которая не выполняет никаких действий, но на нее могут быть добавлены скрипты,которые позволят выполнять действий с формой (активация компонент, изменение свойств, т.д.), действий с переменными и действий над данными.

+

Свойства

+

Компонента имеет набор общих свойств. Ниже отображены свойства, специфичные только для данной компоненты.

+ + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Надпись на кнопке позволяет задать наименование кнопки пример возможного значения: Перейти в реестр услуг
Текст подтверждения при нажатии позволяет задать текст сообщения, который отобразится в диалоговом окне после нажатия на кнопку пример возможного значения: Вы действительно хотите перейти в реестр услуг?
+

Функции

+

В ходе настройки свойств компоненты (заданных по умолчанию) может оказаться недостаточно для выполнения поставленной задачи и получения необходимого результата.

+

Для каждой компоненты предусмотрен перечень функций, расширяющих её базовую функциональность, которые можно добавить нажатием кнопки

+

Вследствие технических особенностей реализации скриптов (

+

- скрипты выполняются удаленно на сервере приложений,

+

- скрипты выполняются в браузере пользователя), они имеют разные иконки, но это никак не влияет на их функциональность или предпочтительность использования.

+

Определить права текущего пользователя

+

Определить права текущего пользователя

+

Определить роли текущего пользователя

+

Определить роли текущего пользователя

+

Методические рекомендации по применению

+

Пошаговые инструкции по применению компонента в типовых задачах Вы можете найти в разделах:

+
+

Часто задаваемые вопросы

+ + + + + + + + + + + + + + + +
Вопрос Ответ
Чем отличается компонента Кнопка от компоненты Кнопка навигации Компонента Кнопка не выполняет никаких действий, но на нее могут быть добавлены скрипты, кнопка навигации используется для перехода по задачам процесса посредством заданной переменной.
Все ли свойства компоненты обязательны для заполнения Нет. Свойства компоненты определяются в зависимости от решаемой задачи.
+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Кнопка_выбора.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Кнопка_выбора.html new file mode 100644 index 0000000..7e8c43f --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Кнопка_выбора.html @@ -0,0 +1,117 @@ + + + + + + + + Web-BPM Docs – Кнопка выбора + + + + + + +
+
+ + + +
+
+

Кнопка выбора

+

Назначение

+

Кнопка выбора - этокомпонента, которая используется для выбора одного или нескольких значений в компоненте Таблица. Кнопка выбора становится активной после выбора хотя бы одной записи.

+

Компонента Кнопка выбора находится в разделе Компоненты - Кнопки - Кнопка выбора

+

Свойства

+

Компонента имеет набор общих свойств. Ниже отображены свойства, специфичные только для данной компоненты.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Надпись на кнопке позволяет задать наименование кнопки пример возможного значения: Сохранить
Текст подтверждения при нажатии позволяет задать текст сообщения, который отобразится в диалоговом окне после нажатия на кнопку пример возможного значения: Вы действительно хотите сохранить изменения?
Возможность выбора более одной записи позволяет задать возможность выбора нескольких элементов в таблице активно - более 1, не активно - только 1
Компонент для выбора записи позволяет задать компоненту Таблица в которой будут выбраны элементы
Получить идентификатор выбранной записи позволяет записать идентификатор выбранной записи в переменную процесса
+

Функции

+

В ходе настройки свойств компоненты (заданных по умолчанию) может оказаться недостаточно для выполнения поставленной задачи и получения необходимого результата.

+

Для каждой компоненты предусмотрен перечень функций, расширяющих её базовую функциональность, которые можно добавить нажатием кнопки

+

Вследствие технических особенностей реализации функций (функции, которые выполняются удаленно на сервере приложений, функции, которые выполняются в браузере пользователя), они имеют разные иконки, но это никак не влияет на их функциональность или предпочтительность использования.

+

Определить права текущего пользователя

+

Определить права текущего пользователя

+

Определить роли текущего пользователя

+

Определить роли текущего пользователя

+

Методические рекомендации по применению

+

Пошаговые инструкции по применению компонента в типовых задачах Вы можете найти в разделах:

+
+

Часто задаваемые вопросы

+ + + + + + + + + + + + + + + +
Вопрос Ответ
Чем отличается компонента Кнопка выбора от компоненты Кнопка Компонента Кнопка не выполняет никаких действий, но на нее могут быть добавлены дополнительные функции, кнопка выборка используется для выбора данных на текущей форме.
Все ли свойства компоненты обязательны для заполнения Нет. Свойства компоненты определяются в зависимости от решаемой задачи.
+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Кнопка_вызова_ошибки.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Кнопка_вызова_ошибки.html new file mode 100644 index 0000000..601b852 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Кнопка_вызова_ошибки.html @@ -0,0 +1,172 @@ + + + + + + + + Web-BPM Docs – Кнопка вызова ошибки + + + + + + +
+
+ + + +
+
+

Кнопка вызова ошибки

+

Назначение

+

Кнопка вызова ошибки - это компонента, которая используется для вызова события ошибки. При этом текущая страница будет закрыта и осуществлен переход по bpmn процессу.

+

Компонента Кнопка вызова ошибки находится в разделе Компоненты - Кнопки - Кнопка вызова ошибки

+

Свойства

+

Компонента имеет набор общих свойств. Ниже отображены свойства, специфичные только для данной компоненты.

+ + + + + + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Надпись на кнопке позволяет задать наименование кнопки пример возможного значения: Выполнить запрос
Текст подтверждения при нажатии позволяет задать текст сообщения, который отобразится в диалоговом окне после нажатия на кнопку пример возможного значения: Вы действительно хотите выполнить действие?
Наименование ошибки позволяет задать наименование ошибки пример возможного значения: Отсутсвует соединение
+

Функции

+

В ходе настройки свойств компоненты (заданных по умолчанию) может оказаться недостаточно для выполнения поставленной задачи и получения необходимого результата.

+

Для каждой компоненты предусмотрен перечень функций, расширяющих её базовую функциональность, которые можно добавить нажатием кнопки

+

Вследствие технических особенностей реализации функций (функции, которые выполняются удаленно на сервере приложений, функции, которые выполняются в браузере пользователя), они имеют разные иконки, но это никак не влияет на их функциональность или предпочтительность использования.

+

Определить права текущего пользователя

+

Определить права текущего пользователя

+

Определить роли текущего пользователя

+

Определить роли текущего пользователя

+

Методические рекомендации по применению

+

Пошаговые инструкции по применению компонента в типовых задачах Вы можете найти в разделах:

+
+

Пример настройки

+

Настройка производится в дизайнере процессов и студии.

+

Настройка в дизайнере процессов

+

Промежуточное событие ошибки отражает факт возникновения и/или обработки ошибки в процессе.

+

На Task устанавливается Catching Intermediate Events → Error:

+

+

Таких событий на таск может быть установлено множество. Для того, чтобы осуществлять переход на нужное событие, мы должны прописать уникальную ссылку ErrorRef:

+

+

Это значит, что если по _ErrorButton придет значение “error-connect-client”, то будет выбрано наше событие ошибки.

+

Настройка в студии

+

Кидаем на страницу компонент ErrorButton.

+

Настраиваем его.

+

В свойство “Error Name” прописываем тот же ErrorRef (см. Настройка в дизайнере процессов), для того чтобы перейти на нужное событие ошибки.

+

+
    + +
  1. Добавляем ErrorButton на страницу
  2. +
  3. В поле errorName задаем имя ошибки.
  4. +
+


+

Обработка события в BPMN процессе

+

Обработать событие ошибки можно двумя способами:

+
    + +
  1. Повесить граничный слушатель события (boundary event) на текущий элемент (можно повесить на задачу, вызов подпросцесса, ad-hoc подпроцесс, embedded подпроцесс). В данном случае будет отлавливаться только событие произошедшее в рамках данного элемента.
  2. +
  3. Создать event подпроцесс, в котором стартовое событие будет типа Ошибка. Данный процесс будет обрабатывать событие произошедшее в любом месте диаграммы, в которой он находится.
  4. +
+

При этом в свойствах bpmn элемента события нужно поставить свойство _CancelActivity _в_true _и в _ErrorRef прописать имя ошибки (должно совпадать с указанным в кнопке).

+

+

Примеры:

+ + + + + + + + + + + + + + + + + + + + + +
Тип обработки Процесс
Прокидывание ошибки на уровень выше. Имя ошибки у начального и конечного события должно быть разным, иначе jbpm зациклится.
Обработка ошибки event подпроцессом
Граничный обработчик (boundary event)
Граничный обработчик на встроенном подпроцессе
+

вопрос: почему error event не прерывает остальные задачи?

+

По концепции bpmn события не должны сами по себе вызывать никаких действий в процессе. Если нужно прекратить исходную задачу, то нужно использовать прерывающий boundary event или event subprocess. В случае ошибки event subprocess обязан быть прерывающим.

+

В случае jbpm, у него есть особенность, что event subprocess прерывает действие родительского процесса не при старте, а при финише, соответственно получается что и задачи открыто две.

+

Частный случай предыдущего: в Embedded-подпроцессе error event и переход в подпроцесс:

+


+В этом случае процесс переходит в список задач с ошибкой. Нужно обходить указанную ситуацию с помощью первого примера типа обработки.

+

Доп. информация

+
    + +
  1. Описание BPMN событий от Camunda
  2. +
+

Часто задаваемые вопросы

+ + + + + + + + + + + + + + + +
Вопрос Ответ
В каких случаях целесообразно использование кнопки вызова ошибки? Компонента Кнопка вызова ошибки предназначена для вызова события ошибки, она используется когда в bpmn процессе пользователю позволяется вызвать ошибку с последующим переходом на новую задачу.
Все ли свойства компоненты обязательны для заполнения Нет. Свойства компоненты определяются в зависимости от решаемой задачи.
+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Кнопка_выполнения_SQL.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Кнопка_выполнения_SQL.html new file mode 100644 index 0000000..aa5d763 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Кнопка_выполнения_SQL.html @@ -0,0 +1,117 @@ + + + + + + + + Web-BPM Docs – Кнопка выполнения SQL + + + + + + +
+
+ + + +
+
+

Кнопка выполнения SQL

+

Назначение

+

Кнопка выполнения SQL - это компонента, которая используется для асинхронного выполнения SQL-запроса без покидания/перезагрузки страницы.

+

Свойства

+

Компонента имеет набор общих свойств. Ниже отображены свойства, специфичные только для данной компоненты.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Надпись на кнопке позволяет задать наименование кнопки пример возможного значения: Выполнить запрос
Текст подтверждения при нажатии позволяет задать текст сообщения, который отобразится в диалоговом окне после нажатия на кнопку пример возможного значения: Вы действительно хотите выполнить SQL запрос?
Набор параметров для выполнения запроса настройка связи источника значений для подстановки в переменные (параметры) запроса, указывается последовательный номер параметра в запросе (начиная с 1) и объект-источник значения
Тело SQL запроса к базе данных ввод текста SQL
+

Функции

+

В ходе настройки свойств компоненты (заданных по умолчанию) может оказаться недостаточно для выполнения поставленной задачи и получения необходимого результата.

+

Для каждой компоненты предусмотрен перечень функций, расширяющих её базовую функциональность, которые можно добавить нажатием кнопки .

+

Вследствие технических особенностей реализации скриптов(

+

- скрипты выполняются удаленно на сервере приложений,

+

- скрипты выполняются в браузере пользователя), они имеют разные иконки, но это никак не влияет на их функциональность или предпочтительность использования.

+

Определить права текущего пользователя

+

Определить права текущего пользователя

+

Определить роли текущего пользователя

+

Определить роли текущего пользователя

+

Методические рекомендации по применению

+

Пошаговые инструкции по применению компонента в типовых задачах Вы можете найти в разделах:

+
+

Часто задаваемые вопросы

+ + + + + + + + + + + + + + + + + + +
Вопрос Ответ
Чем отличается компонента Кнопка выполнения SQL от компоненты Кнопка Компонента Кнопкане выполняет никаких действий, но на нее могут быть добавлены скрипты, кнопка выполнения SQLиспользуется для асинхронного выполнения SQL-запроса.
Все ли свойства компоненты обязательны для заполнения Нет. Свойства компоненты определяются в зависимости от решаемой задачи.
Как получить для использования на странице результат выполнения запроса после того, как кнопка была нажата Следует воспользоваться методом компоненты getResult в компоненте Обработка событий. Однако, этот метод возвращает значение только строкового типа (String), поэтому полученное в результате значение может быть передано только в компонент, оперирующий текстовыми значениями.
+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Кнопка_выполнения_бизнес-процесса.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Кнопка_выполнения_бизнес-процесса.html new file mode 100644 index 0000000..174e9a7 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Кнопка_выполнения_бизнес-процесса.html @@ -0,0 +1,86 @@ + + + + + + + + Web-BPM Docs – Кнопка выполнения бизнес-процесса + + + + + + +
+
+ + + +
+
+

Кнопка выполнения бизнес-процесса

+

ExecProcessButton - компонента для запуска определённого бизнес-процесса с возможностью первоначальной установки значений переменных процесса. При нажатии на кнопку выполняется процесс, указанный в параметре BusinessProcessToStart (Запускаемый процесс). Имеет событие завершения выполнения процесса и метод для получения переменных.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Надпись на кнопке позволяет задать наименование кнопки строка
Текст подтверждения при нажатии позволяет задать текст сообщения, который отобразится в диалоговом окне после нажатия на кнопку. Если не задать, то диалоговое окно не отобразиться строка
Бизнес-процесс для запуска (Модель процесса с переменными) наименование бизнес-процесса, который будет запущен при нажатии на кнопку относительный путь до файла, *.bpmn2, содержащий описание бизнес-процесса
Переменные (Модель процесса с переменными) наименование переменной bpmn-процесса, значение которой необходимо задать значение, соответствующее типу выбранной переменной процесса
Событие завершения бизнес-процесса (processCompleted) событие, которое можно использовать в AC, чтобы узнать, когда бизнес-процесс завершил свою работу
Метод получения результирующих переменных (getResult) метод, который можно использовать в AC, для получения результирующих переменных имя переменной
+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Кнопка_для_фильтрации.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Кнопка_для_фильтрации.html new file mode 100644 index 0000000..84cf308 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Кнопка_для_фильтрации.html @@ -0,0 +1,110 @@ + + + + + + + + Web-BPM Docs – Кнопка для фильтрации + + + + + + +
+
+ + + +
+
+

Кнопка для фильтрации

+

Назначение

+

Кнопка для фильтрации - это компонента, которая используется для срабатывания фильтра.

+

Компонента Кнопка для фильтрации находится в разделе Компоненты - Кнопки - Кнопка для фильтрации

+

Свойства

+

Компонента имеет набор общих свойств. Ниже отображены свойства, специфичные только для данной компоненты.

+ + + + + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Надпись на кнопке позволяет задать наименование кнопки пример возможного значения: Применить
Текст подтверждения при нажатии позволяет задать текст сообщения, который отобразится в диалоговом окне после нажатия на кнопку пример возможного значения: Вы действительно хотите применить фильтрацию?
Набор фильтров позволяет задать компоненту Набор фильтров
+

Функции

+

В ходе настройки свойств компоненты (заданных по умолчанию) может оказаться недостаточно для выполнения поставленной задачи и получения необходимого результата.

+

Для каждой компоненты предусмотрен перечень функций, расширяющих её базовую функциональность, которые можно добавить нажатием кнопки

+

Вследствие технических особенностей реализации скриптов (

+

- скрипты выполняются удаленно на сервере приложений,

+

- скрипты выполняются в браузере пользователя), они имеют разные иконки, но это никак не влияет на их функциональность или предпочтительность использования.

+

Определить права текущего пользователя

+

Определить права текущего пользователя

+

Определить роли текущего пользователя

+

Определить роли текущего пользователя

+

Методические рекомендации по применению

+

Пошаговые инструкции по применению компонента в типовых задачах Вы можете найти в разделах:

+
+

Часто задаваемые вопросы

+ + + + + + + + + + + + + + + +
Вопрос Ответ
Чем отличается компонента Кнопка для фильтрации от компоненты Кнопка Компонента Кнопка не выполняет никаких действий, но на нее могут быть добавлены скрипты, кнопка для фильтрации используется для срабатывания фильтра.
Все ли свойства компоненты обязательны для заполнения? Нет. Свойства компоненты определяются в зависимости от решаемой задачи.
+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Кнопка_загрузки.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Кнопка_загрузки.html new file mode 100644 index 0000000..f2030f4 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Кнопка_загрузки.html @@ -0,0 +1,115 @@ + + + + + + + + Web-BPM Docs – Кнопка загрузки + + + + + + +
+
+ + + +
+
+

Кнопка загрузки

+

Назначение

+

Кнопка загрузки - это компонента, которая используется для скачивания файла.

+

Компонента Кнопка загрузки находится в разделе Компоненты - Кнопки - Кнопка загрузки

+

Свойства

+

Компонента имеет набор общих свойств. Ниже отображены свойства, специфичные только для данной компоненты.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Надпись на кнопке позволяет задать наименование кнопки пример возможного значения: Скачать
Текст подтверждения при нажатии позволяет задать текст сообщения, который отобразится в диалоговом окне после нажатия на кнопку пример возможного значения: Вы действительно хотите скачать файл?
Компонент для выбора записи позволяет задать компоненту Таблица из которой будет скачен файл
Скачать файл из базы данных позволяет задать таблицу базы данных из которой будет скачан файл
+

Функции

+

В ходе настройки свойств компоненты (заданных по умолчанию) может оказаться недостаточно для выполнения поставленной задачи и получения необходимого результата.

+

Для каждой компоненты предусмотрен перечень функций, расширяющих её базовую функциональность, которые можно добавить нажатием кнопки .

+

Вследствие технических особенностей реализации скриптов(

+

- скрипты выполняются удаленно на сервере приложений,

+

- скрипты выполняются в браузере пользователя), они имеют разные иконки, но это никак не влияет на их функциональность или предпочтительность использования.

+

Определить права текущего пользователя

+

Определить права текущего пользователя

+

Определить роли текущего пользователя

+

Определить роли текущего пользователя

+

Методические рекомендации по применению

+

Пошаговые инструкции по применению компонента в типовых задачах Вы можете найти в разделах:

+
+

Часто задаваемые вопросы

+ + + + + + + + + + + + + + + +
Вопрос Ответ
Чем отличается компонента Кнопка загрузки от компоненты Кнопка Компонента Кнопка не выполняет никаких действий, но на нее могут быть добавлены скрипты, кнопка навигациииспользуется для перехода по задачам процесса посредством заданной переменной.
Все ли свойства компоненты обязательны для заполнения Нет. Свойства компоненты определяются в зависимости от решаемой задачи.
+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Кнопка_запуска_бизнес-процесса.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Кнопка_запуска_бизнес-процесса.html new file mode 100644 index 0000000..c5f327d --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Кнопка_запуска_бизнес-процесса.html @@ -0,0 +1,81 @@ + + + + + + + + Web-BPM Docs – Кнопка запуска бизнес-процесса + + + + + + +
+
+ + + +
+
+

Кнопка запуска бизнес-процесса

+

Кнопка запуска BPMN-процесса - компонента для запуска определённого бизнес-процесса с возможностью первоначальной установки значений переменных процесса. При нажатии на кнопку запускается процесс, указанный в параметре BusinessProcessToStart (Запускаемый процесс) и происходит переход на первую страницу процесса. Текущие процесс и задача, при этом, не завершаются. Таким, образом, кнопка может бить использована на статических страницах, которые не привязаны к задачам бизнес-процессов.

+

Компонента Кнопка запуска BPMN-процесса находится в разделе Компоненты - Кнопки - Кнопка запуска BPMN-процесса.

+

Свойства

+

Компонента имеет набор общих свойств. Ниже отображены свойства, специфичные только для данной компоненты.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Надпись на кнопке позволяет задать наименование кнопки пример возможного значения: Открыть карточку
Текст подтверждения при нажатии позволяет задать текст сообщения, который отобразится в диалоговом окне после нажатия на кнопку пример возможного значения: Вы действительно хотите открыть карточку услуги?
Бизнес процесс для запуска (Модель процесса с переменными) Наименование бизнес-процесса, который будет запущен при нажатии на кнопк Относительный путь до файла, *.bpmn2, содержащий описание бизнес-процесса
Переменные (Модель процесса с переменными) Наименование переменной bpmn-процесса, значение которой необходимо задать Значение, соответствующее типу выбранной переменной процесса
+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Кнопка_навигации.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Кнопка_навигации.html new file mode 100644 index 0000000..1f9ca2f --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Кнопка_навигации.html @@ -0,0 +1,107 @@ + + + + + + + + Web-BPM Docs – Кнопка навигации + + + + + + +
+
+ + + +
+
+

Кнопка навигации

+

Кнопка навигации - это компонента, которая используется для навигации по задачам процесса. При нажатии на кнопку текущая задача закрывается. Компонента Кнопка навигации находится в разделе Компоненты - Кнопки - Кнопка навигации

+

Свойства

+

Компонента имеет набор общих свойств. Ниже отображены свойства, специфичные только для данной компоненты.

+ + + + + + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Надпись на кнопке позволяет задать наименование кнопки пример возможного значения: Открыть карточку
Текст подтверждения при нажатии позволяет задать текст сообщения, который отобразится в диалоговом окне после нажатия на кнопку пример возможного значения: Вы действительно хотите открыть карточку услуги?
Значение переменной навигации позволяет задать значение, которое принимает переменная процесса. пример возможного значения: open
+

Функции

+

В ходе настройки свойств компоненты (заданных по умолчанию) может оказаться недостаточно для выполнения поставленной задачи и получения необходимого результата.

+

Для каждой компоненты предусмотрен перечень функций, расширяющих её базовую функциональность, которые можно добавить нажатием кнопки

+

Вследствие технических особенностей реализации функций (функции, которые выполняются удаленно на сервере приложений, функции, которые выполняются в браузере пользователя), они имеют разные иконки, но это никак не влияет на их функциональность или предпочтительность использования.

+

Определить права текущего пользователя

+

Определить права текущего пользователя

+

Определить роли текущего пользователя

+

Определить роли текущего пользователя

+

Методические рекомендации по применению

+

Пошаговые инструкции по применению компонента в типовых задачах Вы можете найти в разделах:

+
+

Часто задаваемые вопросы

+ + + + + + + + + + + + + + + +
Вопрос Ответ
Чем отличается компонента Кнопка навигации от компоненты Кнопка Компонента Кнопка не выполняет никаких действий, но на нее могут быть добавлены скрипты, кнопка навигации используется для перехода по задачам процесса посредством заданной переменной.
Все ли свойства компоненты обязательны для заполнения Нет. Свойства компоненты определяются в зависимости от решаемой задачи.
+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Кнопка_отмены.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Кнопка_отмены.html new file mode 100644 index 0000000..02659fe --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Кнопка_отмены.html @@ -0,0 +1,107 @@ + + + + + + + + Web-BPM Docs – Кнопка отмены + + + + + + +
+
+ + + +
+
+

Кнопка отмены

+

Назначение

+

Кнопка отмены - это компонента, которая используется для завершения таска без сохранения внесенных изменений на форме страницы.

+

Компонента Кнопка отмены находится в разделе Компоненты - Кнопки - Кнопка отмены

+

Свойства

+

Компонента имеет набор общих свойств. Ниже отображены свойства, специфичные только для данной компоненты.

+ + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Надпись на кнопке позволяет задать наименование кнопки пример возможного значения: Отмена
Текст подтверждения при нажатии позволяет задать текст сообщения, который отобразится в диалоговом окне после нажатия на кнопку пример возможного значения: Вы действительно хотите отменить изменения?
+

Функции

+

В ходе настройки свойств компоненты (заданных по умолчанию) может оказаться недостаточно для выполнения поставленной задачи и получения необходимого результата.

+

Для каждой компоненты предусмотрен перечень функций, расширяющих её базовую функциональность, которые можно добавить нажатием кнопки

+

Вследствие технических особенностей реализации скриптов(

+

- скрипты выполняются удаленно на сервере приложений,

+

- скрипты выполняются в браузере пользователя), они имеют разные иконки, но это никак не влияет на их функциональность или предпочтительность использования.

+

Определить права текущего пользователя

+

Определить права текущего пользователя

+

Определить роли текущего пользователя

+

Определить роли текущего пользователя

+

Методические рекомендации по применению

+

Пошаговые инструкции по применению компонента в типовых задачах Вы можете найти в разделах:

+ +

Часто задаваемые вопросы

+ + + + + + + + + + + + + + + +
Вопрос Ответ
Чем отличается компонента Кнопка отмены от компоненты Кнопка? Компонента Кнопкане выполняет никаких действий, но на нее могут быть добавлены скрипты, кнопка отмены используется для сброса внесенных изменений на текущей форме.
Все ли свойства компоненты обязательны для заполнения Нет. Свойства компоненты определяются в зависимости от решаемой задачи.
+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Кнопка_очистки_фильтра.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Кнопка_очистки_фильтра.html new file mode 100644 index 0000000..919445d --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Кнопка_очистки_фильтра.html @@ -0,0 +1,118 @@ + + + + + + + + Web-BPM Docs – Кнопка очистки фильтра + + + + + + +
+
+ + + +
+
+

Кнопка очистки фильтра

+

Назначение

+

Кнопка очистки фильтра - это компонента, которая используется для очищения полей фильтра.

+

Компонента Кнопка очистки фильтра находится в разделе Компоненты - Кнопки - Кнопка очистки фильтра

+

Свойства

+

Компонента имеет набор общих свойств. Ниже отображены свойства, специфичные только для данной компоненты.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Надпись на кнопке позволяет задать наименование кнопки пример возможного значения: Сбросить
Текст подтверждения при нажатии позволяет задать текст сообщения, который отобразится в диалоговом окне после нажатия на кнопку пример возможного значения: Вы действительно хотите сбросить фильтрацию?
Набор фильтров позволяет задать компоненту Набор фильтров
Сбросить значение фильтров на значение по умолчанию при нажатии на кнопку возвращает значения заданных фильтров к значениям по умолчанию не сбрасывать - значение по умолчанию
Применить фильтры после сброса позволяет задать возможность возврата фильтруемой Таблицы в первоначальное состояние при нажатии на кнопку не применять значения фильтров - значение по умолчанию
+

Функции

+

В ходе настройки свойств компоненты (заданных по умолчанию) может оказаться недостаточно для выполнения поставленной задачи и получения необходимого результата.

+

Для каждой компоненты предусмотрен перечень функций, расширяющих её базовую функциональность, которые можно добавить нажатием кнопки

+

Вследствие технических особенностей реализации скриптов (

+

- скрипты выполняются удаленно на сервере приложений,

+

- скрипты выполняются в браузере пользователя), они имеют разные иконки, но это никак не влияет на их функциональность или предпочтительность использования.

+

Определить права текущего пользователя

+

Определить права текущего пользователя

+

Определить роли текущего пользователя

+

Определить роли текущего пользователя

+

Методические рекомендации по применению

+

Пошаговые инструкции по применению компонента в типовых задачах Вы можете найти в разделах:

+ +

Часто задаваемые вопросы

+ + + + + + + + + + + + + + + +
Вопрос Ответ
Чем отличается компонента Кнопка очистки фильтра от компоненты Кнопка? Компонента Кнопка не выполняет никаких действий, но на нее могут быть добавлены скрипты, кнопка очистки фильтра используется для очищения полей фильтра.
Все ли свойства компоненты обязательны для заполнения? Нет. Свойства компоненты определяются в зависимости от решаемой задачи.
+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Кнопка_подписи.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Кнопка_подписи.html new file mode 100644 index 0000000..34b30fd --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Кнопка_подписи.html @@ -0,0 +1,152 @@ + + + + + + + + Web-BPM Docs – Назначение компонента + + + + + + +
+
+ + + +
+
+

Назначение компонента

+

Составной компонент SignButton служит для создания электронной подписи и отображения подписываемых данных

+

Настройка компонента

+

Настройка скрипта SignButton: в HBox → SignButton

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование Назначение Значение по умолчанию Параметр обязателен
Sign Type Выбор типа электронной подписи. Возможные варианты: CMS, CADES_BES, CADES_T, CADES_X_LONG_TYPE_1 - да
Selectable Component Объект для выбора подписываемого документа из списка. Необходим для получения id подписываемого документа, если не указана переменная процесса documentId в SignButtonRpcService. В случае, если указан и Document Id, и Selectable Component, то по приоритету будет взят id, выбранный пользователем из Selectable Component. - Обязательно заполнение либо Document Id, либо Selectable Component
Complete Task After Signing В случае значения true, после подписания текущий таск будет завершен - да
Navigate To Параметр для перенаправления пользователя после завершения текущего таска. Параметр не используется, если completeTaskAfterSigning = false - нет
Реализация провайдера электронной подписи Для использования конкретной реализации электронной подписи. Необходимо добавить соответствующий ts-файл в объект SignButton. На данный момент есть две реализации: EsmartPlugin.ts и CadesPluginApi.ts. При использовании EsmartPlugin.ts и типа подписи CADES_T необходимо указать системную переменную webbpm_components.electronic_sign.esmart_extension_url со ссылкой для расширения подписи “_dsig/ibs_dSig.asmxhttp://dsig.ibsdemo.ru/ibs - да
Other Остальные параметры настраивать только в случае, если не устраивает стандартное устройство компонента
+

Настройка скрипта SignButtonRpcService: HBox → SignButton

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование Назначение Значение по умолчанию Параметр обязателен
Document Id Параметр необходим для получения Id подписываемого документа, если не указан параметр Selectable Component со списком записей. В случае, если указан и Document Id, и Selectable Component, то по приоритету будет взят id, выбранный пользователем из Selectable Component. - Обязательно заполнение либо Document Id, либо Selectable Component
Document Provider Провайдер подписываемых данных. Реализация класса ru.cg.webbpm.electronic_sign.DocumentProvider. - да
Document Dao Класс для сохранения и получения подписанных данных. Реализация класса ru.cg.webbpm.electronic_sign.DocumentDao - да
+

Сценарий использования кнопки подписи:

+
    + +
  1. + +

    Пользователь в процессе работы над документом или после его выбора в списке уже созданных нажимает на кнопку “Подписать”

    +
  2. +
  3. + +

    Если подходящий сертификат для подписания единственен, то окно выбора отображено не будет; в противном случае пользователь должен выбрать подходящий сертификат в окне “Выбор сертификата”.

    +
  4. +
  5. + +

    Пользователю выводится окно ввода пароля с возможностью отмены операции

    +
  6. +
  7. + +

    Происходит подписание документа, сохранение подписи в байтах в базе данных

    +
  8. +
+

КриптоПро

+

Для работы компоненты требуется установить КриптоПро CSP и КриптоПро ЭЦП Browser plug-in. Тестовый сертификат можно получить тут, при этом нужно установаить сертификат тестового центра как довереный корневой сертификат. Страница проверки работы плагина.

+

Esmart

+

Для работы компоненты требуется установить:

+
    + +
  • 32-битную firefox версии 38 - 52 (рекомендуется 52.5.2esr).
  • +
  • PKI Client и ESMART Token Web Плагин последних версий с официального сайта ESMART - demo.esmart.ru.
  • +
+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Кнопка_проверки_подписи.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Кнопка_проверки_подписи.html new file mode 100644 index 0000000..ba21c46 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Кнопка_проверки_подписи.html @@ -0,0 +1,100 @@ + + + + + + + + Web-BPM Docs – Назначение компонента + + + + + + +
+
+ + + +
+
+

Назначение компонента

+

Составной компонент SignVerification служит для проверки электронной подписи и отображения подписанных данных.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование Назначение Значение по умолчанию Параметр обязателен
Sign Type Выбор типа электронной подписи. Возможные варианты: CMS, CADES_BES, CADES_T, CADES_X_LONG_TYPE_1 - да
Use Verify Chain Значение true указывает, что необходимо проверить цепочку сертификатов, false - не проверять цепочку, в этом случае проверяется только подпись. - по умолчанию, цепочка сертификатов не используется нет
Реализация провайдера электронной подписи Для использования конкретной реализации электронной подписи. Необходимо добавить соответствующий ts-файл в объект SignVerificationButton. На данный момент есть две реализации: EsmartPlugin.ts и CadesPluginApi.ts. При использовании EsmartPlugin.ts и типа подписи CADES_T необходимо указать системную переменную webbpm_components.electronic_sign.esmart_extension_url со ссылкой для расширения подписи “_dsig/ibs_dSig.asmxhttp://dsig.ibsdemo.ru/ibs - да
Document Id Параметр необходим для получения Id подписываемого документа. - да
Document Provider Провайдер подписываемых данных. Реализация класса ru.cg.webbpm.electronic_sign.DocumentProvider. - да
Document Dao Класс для сохранения и получения подписанных данных. Реализация класса ru.cg.webbpm.electronic_sign.DocumentDao - да
+

Компонента проверки отображает корректность электронной подписи с помощью иконки:

+
    + +
  • Красного цвета в том случае, если электронная подпись не валидна
  • +
  • Зеленого цвета в том случае, если электронная подпись валидна
  • +
  • Серого цвета в том случае, если актовая запись не подписана
  • +
+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Кнопка_сохранения.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Кнопка_сохранения.html new file mode 100644 index 0000000..1813cc1 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Кнопка_сохранения.html @@ -0,0 +1,112 @@ + + + + + + + + Web-BPM Docs – Кнопка сохранения + + + + + + +
+
+ + + +
+
+

Кнопка сохранения

+

Назначение

+

Кнопка сохранения - это компонента, которая используется для завершения задачи с сохранением данных на форме страницы. Компонента Кнопка сохранения находится в разделе Компоненты - Кнопки - Кнопка сохранения

+

Свойства

+

Компонента имеет набор общих свойств. Ниже отображены свойства, специфичные только для данной компоненты.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Надпись на кнопке позволяет задать наименование кнопки пример возможного значения: Сохранить
Текст подтверждения при нажатии позволяет задать текст сообщения, который отобразится в диалоговом окне после нажатия на кнопку пример возможного значения: Вы действительно хотите сохранить изменения?
Компонент “Форма” позволяет задать основную компоненту Форма поля которой сохранятся при нажатии на кнопку
Complete Task позволяет задать будет ли завершена текущая задача
+

Функции

+

В ходе настройки свойств компоненты (заданных по умолчанию) может оказаться недостаточно для выполнения поставленной задачи и получения необходимого результата.

+

Для каждой компоненты предусмотрен перечень функций, расширяющих её базовую функциональность, которые можно добавить нажатием кнопки

+

Вследствие технических особенностей реализации функций (функции, которые выполняются удаленно на сервере приложений, функции, которые выполняются в браузере пользователя), они имеют разные иконки, но это никак не влияет на их функциональность или предпочтительность использования.

+

Определить права текущего пользователя

+

Определить права текущего пользователя

+

Определить роли текущего пользователя

+

Определить роли текущего пользователя

+

Методические рекомендации по применению

+

Пошаговые инструкции по применению компонента в типовых задачах Вы можете найти в разделах:

+
+

Часто задаваемые вопросы

+ + + + + + + + + + + + + + + +
Вопрос Ответ
Чем отличается компонента Кнопка сохранения от компоненты Кнопка? Компонента Кнопка не выполняет никаких действий, но на нее могут быть добавлены дополнительные функции, кнопка сохранения используется для сохранения данных на текущей форме.
Все ли свойства компоненты обязательны для заполнения Нет. Свойства компоненты определяются в зависимости от решаемой задачи.
+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Кнопка_удаления.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Кнопка_удаления.html new file mode 100644 index 0000000..1e5158e --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Кнопка_удаления.html @@ -0,0 +1,110 @@ + + + + + + + + Web-BPM Docs – Кнопка удаления + + + + + + +
+
+ + + +
+
+

Кнопка удаления

+

Назначение

+

Кнопка удаления - это компонента, которая используется для удаления элементов из Таблица.

+

Компонента Кнопка удаления находится в разделе Компоненты - Кнопки - Кнопка удаления

+

Свойства

+ + + + + + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Надпись на кнопке позволяет задать наименование кнопки пример возможного значения: Удалить
Текст подтверждения при нажатии позволяет задать текст сообщения, который отобразится в диалоговом окне после нажатия на кнопку пример возможного значения: Вы действительно хотите удалить запись?
Удалить из таблицы позволяет задать основную компоненту Таблица из которой будет удалена запись
+

Функции

+

В ходе настройки свойств компоненты (заданных по умолчанию) может оказаться недостаточно для выполнения поставленной задачи и получения необходимого результата.

+

Для каждой компоненты предусмотрен перечень функций, расширяющих её базовую функциональность, которые можно добавить нажатием кнопки

+

Вследствие технических особенностей реализации скриптов(

+

- скрипты выполняются удаленно на сервере приложений,

+

- скрипты выполняются в браузере пользователя), они имеют разные иконки, но это никак не влияет на их функциональность или предпочтительность использования.

+

Определить права текущего пользователя

+

Определить права текущего пользователя

+

Определить роли текущего пользователя

+

Определить роли текущего пользователя

+

Методические рекомендации по применению

+

Пошаговые инструкции по применению компонента в типовых задачах Вы можете найти в разделах:

+
+

Часто задаваемые вопросы

+ + + + + + + + + + + + + + + +
Вопрос Ответ
Чем отличается компонента Кнопка удаления от компоненты Кнопка? Компонента Кнопка не выполняет никаких действий, но на нее могут быть добавлены скрипты, кнопка удаления используется для удаления записи из таблицы.
Все ли свойства компоненты обязательны для заполнения? Нет.Свойства компоненты определяются в зависимости от решаемой задачи.
+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Кнопки.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Кнопки.html new file mode 100644 index 0000000..e4d7a8b --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/buttons/Кнопки.html @@ -0,0 +1,69 @@ + + + + + + + + Web-BPM Docs – Кнопки + + + + + + + +
+
+
+
+

© 2022 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/ContainerValueByEventLoader_и_ContainerValueByEventLoaderRpcService.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/ContainerValueByEventLoader_и_ContainerValueByEventLoaderRpcService.html new file mode 100644 index 0000000..1ea9472 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/ContainerValueByEventLoader_и_ContainerValueByEventLoaderRpcService.html @@ -0,0 +1,53 @@ + + + + + + + + Web-BPM Docs – + + + + + + +
+
+ + + +
+
+

Описание: Скрипты предназначены для подгрузки значений в контейнеры по массиву параметров, которая происходит после заданных событий.

+

Использование:

+

Настройка внутри контейнера - На контейнере в скрипте ContainerValueByEventLoader.ts в массив “Params” добавить объекты и выбрать их параметры, по которым будет происходить подгрузка. В массив “Events Refs” добавить объекты и выбрать события, после которых будет отрабатывать подгрузка. - В скрипте ContainerValueByEventLoaderRpcService.java, в комбобоксе “Script” выбрать необходимую реализацию сервиса(к примеру ContainerByPkValueLoaderServiceImpl). Настроить Load Dao выбрав необходимую реализацию скрипта и настроить граф сущностей.

+

Настройка внутри объекта - На объектах в которые будет происходить подгрузка (к примеру в TextField это TextFieldValueByEvent) задать параметр, аналогично DefaultValue.

+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/index.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/index.html new file mode 100644 index 0000000..49882b8 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/index.html @@ -0,0 +1,130 @@ + + + + + + + + Web-BPM Docs – Контейнеры + + + + + + +
+
+ + + +
+
+

Контейнеры

+
+

Правила наследования значений свойств Подлежит сохранению, Обязательность дочерними компонентами, входящими в состав родительской компоненты контейнера

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
значение свойства у компоненты-контейнера значение свойства дочерней компоненты итоговое значение свойства
True True True
True False False
False True False
False False False
Undefined True True
Undefined False False
+

Правила наследования значений свойства Видимость дочерними компонентами, входящими в состав родительской компоненты контейнера

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
значение свойства у компоненты-контейнера значение свойства дочерней компоненты итоговое значение свойства
True True True
True False False
False True False
False False False
+

Скрипты - Дополнительная подгрузка

+

Функции - Стили контейнеров

+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Вертикальный_контейнер.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Вертикальный_контейнер.html new file mode 100644 index 0000000..8c1ab99 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Вертикальный_контейнер.html @@ -0,0 +1,162 @@ + + + + + + + + Web-BPM Docs – Вертикальный контейнер + + + + + + +
+
+ + + +
+
+

Вертикальный контейнер

+

Назначение

+

Вертикальный контейнер - это невидимая компонента-контейнер, которая позволяет расположить внутри себя набор видимых компонент в вертикальной последовательности, когда каждая следующая видимая компонента находится на новой строке под предыдущей.

+

Используется для оптимизации расположения компонентов в интерфейсе системы, обеспечивая возможность группировки и логического объединения компонентов в определенных секторах web-страницы и общее эстетическое и интуитивное восприятие экранного интерфейса пользователем системы.

+

Как правило, в состав Вертикального контейнера включаются визуальные компоненты, но также Вертикальные контейнеры могут быть размещены обособлено в дереве редактора интерфейса для облегчения чтения аналитиком структуры страницы ивключать в себя невизуальные компоненты для служебного использования (предзагрузка значений переменных процесса в компоненты, компоненты с подгруженными значениями по умолчанию, компоненты Обработка событий и т.п.)

+

Компонента Вертикальный контейнер находится в разделе Компоненты - Контейнеры - Вертикальный контейнер

+

Свойства

+

Компонента имеет набор общих свойств и подгрузка данных по умолчанию

+

Дополнительные функции

+

В ходе настройки свойств компоненты (заданных по умолчанию) может оказаться недостаточно для выполнения поставленной задачи и получения необходимого результата.

+

Для каждой компоненты предусмотрен перечень функций, расширяющих её базовую функциональность, которые можно добавить нажатием кнопки Добавить скрипт

+

Вследствие технических особенностей реализации функций (

+

- функции, которые выполняются удаленно на сервере приложений,

+

- функции, которые выполняются в браузере пользователя), они имеют разные иконки, но это никак не влияет на их функциональность или предпочтительность использования.

+

Рекурсивно копировать составные объекты сложных компонент

+

TODO: описать

+

Определить права текущего пользователя

+

Определить права текущего пользователя

+

Определить роли текущего пользователя

+

Определить роли текущего пользователя

+

Методические рекомендации по применению

+

Пошаговые инструкции по применению компонента в типовых задачах Вы можете найти в разделах:

+
+

Часто задаваемые вопросы

+ + + + + + + + + + + + + + + + + + + + + +
Вопрос Ответ
В чем заключаются лучшие практики использования контейнеров? Чаще всего контейнерами зонируют экранный интерфейс, чтобы добиться эргономичного расположения компонентов на web-странице. Например, в горизонтальный контейнер вкладывают несколько вертикальных, добиваясь, колончатой структуры страницы. Пример такой реализации можно посмотреть в методических рекомендациях по применению.
Что происходит в горизонтальном контейнере, если ширины экрана не хватает для размещения в горизонтальном направлении всех компонент? После заполнения всей доступной ширины web-страницы, система автоматически начинает переносить оставшиеся компоненты на строчку ниже и продолжать заполнять ими ширину экрана, располагая оставшиеся компоненты друг за другом в горизонтальной последовательности.
Насколько глубокую иерархию вложенности можно создать, комбинируя контейнеры между собой? Теоретически, глубина вложенности контейнеров разного типа друг в друга не ограничена. Но на практике комбинирование вложенностью контейнеров применяется для решения конкретной проблемы эргономичного расположения визуальных компонентов на странице.
Чем отличается функциональность набора свойств (Видимость, Обязательность, Недоступно для управления, Подлежит сохранению) у компоненты-контейнера от функциональности одноименных свойств обычной компоненты? Функциональность набора свойств (Видимость, Обязательность, Недоступно для управления, Подлежит сохранению) у компоненты-контейнера отличается от функциональности одноименных свойств у обычной компоненты тем, что значение указанных свойств наследуется с компоненты-контейнерана все компоненты, входящие в состав такой компоненты-контейнера. Правила наследования таковы, что если увложенного объекта соответствующее свойство выставлено в значение Истина, то оно следует судьбе этого же свойства у компоненты-контейнера, если же значение соответствующего свойства у вложенной компоненты Ложь, то наследования значения этого свойства от компоненты-контейнера не происходит, компонента функционирует в соответствии с собственными настройками.
+

Правила наследования значений свойств Подлежит сохранению, Обязательность дочерними компонентами, входящими в состав родительской компоненты контейнера

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
значение свойства у компоненты-контейнера значение свойства дочерней компоненты итоговое значение свойства
True True True
True False False
False True False
False False False
Undefined True True
Undefined False False
+

Правила наследования значений свойства Видимость дочерними компонентами, входящими в состав родительской компоненты контейнера

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
значение свойства у компоненты-контейнера значение свойства дочерней компоненты итоговое значение свойства
True True True
True False False
False True False
False False False
+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Вкладка.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Вкладка.html new file mode 100644 index 0000000..a7036c8 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Вкладка.html @@ -0,0 +1,92 @@ + + + + + + + + Web-BPM Docs – Вкладка + + + + + + +
+
+ + + +
+
+

Вкладка

+

Назначение

+

Вкладка - невидимая компонента, используемая только совместно и внутри компоненты Контейнер вкладок, в свою очередь, сама является вышестоящим контейнером для дочерних визуальных компонент, которые аналитик планирует разместить в ограниченном пространстве экранного интерфейса. В запущенном приложении выбранная пользователем вкладка отображается поверх других вкладок, не занимая дополнительного места на web странице и закрывая своим содержимым содержимое других вкладок.

+

Используется для оптимизации расположения визуальных компонент в интерфейсе системы, обеспечивая возможность группировки и логического объединения компонент в определенных зонах web-страницы и общее эстетическое и интуитивное восприятие экранного интерфейса пользователем системы.

+

Компонента Вкладка схожа с компонентой Вертикальный контейнер и без дополнительных манипуляций располагает включенные в нее визуальные компоненты в вертикальной последовательности.

+

Компонента Вкладка находится в разделе Компоненты - Контейнеры - Вкладка

+

Свойства

+

Компонента имеет набор общих свойств и подгрузка данных по умолчанию.

+

Дополнительные функции

+

Для каждой компоненты предусмотрен перечень функций, расширяющих её базовую функциональность, которые можно добавить нажатием кнопки Добавить скрипт

+

Вследствие технических особенностей реализации функций (функции, которые выполняются удаленно на сервере приложений, функции, которые выполняются в браузере пользователя), они имеют разные иконки, но это никак не влияет на их функциональность или предпочтительность использования.

+

Рекурсивно копировать составные объекты сложных компонент

+

TODO: описать

+

Определить права текущего пользователя

+

Определить права текущего пользователя

+

Определить роли текущего пользователя

+

Определить роли текущего пользователя

+

Методические рекомендации по применению

+

Пошаговые инструкции по применению компонента в типовых задачах Вы можете найти в разделах:

+
+

Часто задаваемые вопросы

+ + + + + + + + + + + + + + + + + + +
Вопрос Ответ
Можно ли в компоненту Вкладка вложить другие контейнеры (Вертикальный, Горизонтальный)? Не только можно, но и должны быть вложены для горизонтального и вертикального выравнивания пользовательского интерфейса
Можно ли расположить визуальные компоненты сразу в Контейнер вкладок, а не в компоненте Вкладка ? Можно, но тогда Контейнер вкладок ничем не будет отличаться от Вертикальный контейнер
Чем отличается функциональность набора свойств (Видимость, Обязательность, Недоступно для управления, Подлежит сохранению) у компоненты-контейнера от функциональности одноименных свойств обычной компоненты? Функциональность набора свойств (Видимость, Обязательность, Недоступно для управления, Подлежит сохранению) у компоненты-контейнера отличается от функциональности одноименных свойств у обычной компоненты тем, что значение указанных свойств наследуется с компоненты-контейнера на все компоненты, входящие в состав такой компоненты-контейнера. Правила наследования таковы, что если у вложенного объекта соответствующее свойство выставлено в значение Истина, то оно следует судьбе этого же свойства у компоненты-контейнера, если же значение соответствующего свойства у вложенной компоненты Ложь, то наследования значения этого свойства от компоненты-контейнера не происходит, компонента функционирует в соответствии с собственными настройками.
+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Вкладки_Управление_Вкладкой_Переход_из_текущей_на_последующую.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Вкладки_Управление_Вкладкой_Переход_из_текущей_на_последующую.html new file mode 100644 index 0000000..a4804fa --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Вкладки_Управление_Вкладкой_Переход_из_текущей_на_последующую.html @@ -0,0 +1,82 @@ + + + + + + + + Web-BPM Docs – Вкладки. Управление Вкладкой. Переход из текущей на последующую + + + + + + +
+
+ + + +
+
+

Вкладки. Управление “Вкладкой”. Переход из текущей на последующую

+

Функция, которая используется при работе с компонентой Контейнер вкладок со вложенными компонентами Вкладка и позволяет перейти из текущей вкладки на последующую в пользовательском приложении. Может быть активирована только на компоненте Кнопка.

+

Особенности функции:

+
    + +
  • в запущенном приложении исполняется явно (не требует использования компоненты “Обработка событий” и формирования алгоритма работы с задействованием вновь предоставляемых методов)
  • +
  • имеет параметры для настройки аналитиком
  • +
+

+

Рис. 1 Внешний вид активированной функции

+

Параметры функции

+ + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Пример заполнения
Компонента Вкладки позволяет указать компоненту Контейнер вкладок, на котором размещены вкладки
Шаг перехода к следующей вкладке позволяет указать количество шагов, на которые нужно перейти пример возможного значения: 1
+

Пример настройки и применения

+

+

Рис.1 Активация функции на компоненте Кнопки

+
+
+
+
+
+
+

© 2022 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Вкладки_Управление_Вкладкой_Переход_из_текущей_на_предыдущую.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Вкладки_Управление_Вкладкой_Переход_из_текущей_на_предыдущую.html new file mode 100644 index 0000000..4999b57 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Вкладки_Управление_Вкладкой_Переход_из_текущей_на_предыдущую.html @@ -0,0 +1,82 @@ + + + + + + + + Web-BPM Docs – Вкладки. Управление Вкладкой. Переход из текущей на предыдущую + + + + + + +
+
+ + + +
+
+

Вкладки. Управление “Вкладкой”. Переход из текущей на предыдущую

+

Функция, которая используется при работе с компонентой Контейнер вкладок со вложенными компонентами Вкладка и позволяет перейти из текущей вкладки на предыдущую в пользовательском приложении. Может быть активирована только на компоненте Кнопка.

+

Особенности функции:

+
    + +
  • в запущенном приложении исполняется явно (не требует использования компоненты “Обработка событий” и формирования алгоритма работы с задействованием вновь предоставляемых методов)
  • +
  • имеет параметры для настройки аналитиком
  • +
+

+

Рис. 1 Внешний вид активированной функции

+

Параметры функции

+ + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Пример заполнения
Компонента Вкладки позволяет указать компоненту Контейнер вкладок, на котором размещены вкладки
Шаг перехода к следующей вкладке позволяет указать количество шагов, на которые нужно перейти пример возможного значения: 1
+

Пример настройки и применения

+

+

Рис.1 Активация функции на компоненте Кнопки

+
+
+
+
+
+
+

© 2022 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Вкладки_Управление_Вкладкой_Переход_на_вкладку_по_номеру.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Вкладки_Управление_Вкладкой_Переход_на_вкладку_по_номеру.html new file mode 100644 index 0000000..5c41c06 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Вкладки_Управление_Вкладкой_Переход_на_вкладку_по_номеру.html @@ -0,0 +1,82 @@ + + + + + + + + Web-BPM Docs – Вкладки. Управление Вкладкой. Переход на вкладку по номеру + + + + + + +
+
+ + + +
+
+

Вкладки. Управление “Вкладкой”. Переход на вкладку по номеру

+

Функция, которая используется при работе с компонентой Контейнер вкладок со вложенными компонентами Вкладка и позволяет перейти из текущей вкладки на указанную в функции вкладку в пользовательском приложении. Может быть активирована только на компоненте Кнопка.

+

Особенности функции:

+
    + +
  • в запущенном приложении исполняется явно (не требует использования компоненты “Обработка событий” и формирования алгоритма работы с задействованием вновь предоставляемых методов)
  • +
  • имеет параметры для настройки аналитиком
  • +
+

+

Рис. 1 Внешний вид активированной функции

+

Параметры функции

+ + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Пример заполнения
Компонента Вкладки позволяет указать компоненту Контейнер вкладок, на котором размещены вкладки
Шаг перехода к следующей вкладке позволяет указать номер вкладки (начиная с 0), на которую нужно перейти пример возможного значения: 1
+

Пример настройки и применения

+

+

Рис.1 Активация функции на компоненте Кнопки

+
+
+
+
+
+
+

© 2022 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Горизонтальный_контейнер.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Горизонтальный_контейнер.html new file mode 100644 index 0000000..024dbcd --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Горизонтальный_контейнер.html @@ -0,0 +1,98 @@ + + + + + + + + Web-BPM Docs – Горизонтальный контейнер + + + + + + +
+
+ + + +
+
+

Горизонтальный контейнер

+

Назначение

+

Горизонтальный контейнер - это невидимая компонента-контейнер, которая позволяет расположить внутри себя набор видимых компонент в горизонтальной последовательности, когда каждая последующая видимая компонента находится справа от предыдущей.

+

Используется для оптимизации расположения компонентов в интерфейсе системы, обеспечивая возможность группировки и логического объединения компонентов в определенных секторах web-страницы и общее эстетическое и интуитивное восприятие экранного интерфейса пользователем системы.

+

Как правило, в состав Горизонтального контейнера включаются визуальные компоненты, но также Горизонтальные контейнеры могут быть размещены обособлено в дереве редактора интерфейса для облегчения чтения аналитиком структуры страницы и включать в себя невизуальные компоненты для служебного использования (предзагрузка значений переменных процесса в компоненты, компоненты с подгруженными значениями по умолчанию, компоненты Обработка событий и т.п.)

+

Компонента Горизонтальный контейнер находится в разделе Компоненты - Контейнеры - Горизонтальный контейнер

+

Свойства

+

Компонента имеет набор общих свойств и подгрузка данных по умолчанию

+

Дополнительные функции

+

В ходе настройки свойств компоненты (заданных по умолчанию) может оказаться недостаточно для выполнения поставленной задачи и получения необходимого результата.

+

Для каждой компоненты предусмотрен перечень функций, расширяющих её базовую функциональность, которые можно добавить нажатием кнопки Добавить скрипт

+

Вследствие технических особенностей реализации функций (

+

- функции, которые выполняются удаленно на сервере приложений,

+

- функции, которые выполняются в браузере пользователя), они имеют разные иконки, но это никак не влияет на их функциональность или предпочтительность использования.

+

Рекурсивно копировать составные объекты сложных компонент

+

TODO: описать

+

Определить права текущего пользователя

+

Определить права текущего пользователя

+

Определить роли текущего пользователя

+

Определить роли текущего пользователя

+

Методические рекомендации по применению

+

Пошаговые инструкции по применению компонента в типовых задачах Вы можете найти в разделах:

+
+

Часто задаваемые вопросы

+ + + + + + + + + + + + + + + + + + + + + +
Вопрос Ответ
В чем заключаются лучшие практики использования контейнеров? Чаще всего контейнерами зонируют экранный интерфейс, чтобы добиться эргономичного расположения компонентов на web-странице. Например, в горизонтальный контейнер вкладывают несколько вертикальных, добиваясь, колончатой структуры страницы. Пример такой реализации можно посмотреть в методических рекомендациях по применению.
Что происходит в горизонтальном контейнере, если ширины экрана не хватает для размещения в горизонтальном направлении всех компонент? После заполнения всей доступной ширины web-страницы, система автоматически начинает переносить оставшиеся компоненты на строчку ниже и продолжать заполнять ими ширину экрана, располагая оставшиеся компоненты друг за другом в горизонтальной последовательности.
Насколько глубокую иерархию вложенности можно создать, комбинируя контейнеры между собой? Теоретически, глубина вложенности контейнеров разного типа друг в друга не ограничена. Но на практике комбинирование вложенностью контейнеров применяется для решения конкретной проблемы эргономичного расположения визуальных компонентов на странице
Чем отличается функциональность набора свойств (Видимость, Обязательность, Недоступно для управления, Подлежит сохранению) у компоненты-контейнера от функциональности одноименных свойствобычной компоненты? Функциональность набора свойств (Видимость, Обязательность, Недоступно для управления, Подлежит сохранению) у компоненты-контейнера отличается от функциональности одноименных свойств у обычной компоненты тем, что значение указанных свойств наследуется с компоненты-контейнера на все компоненты, входящие в состав такой компоненты-контейнера. Правила наследования таковы, что если у вложенного объекта соответствующее свойство выставлено в значение Истина, то оно следует судьбе этого же свойства у компоненты-контейнера, если же значение соответствующего свойства у вложенной компоненты Ложь, то наследования значения этого свойства от компоненты-контейнера не происходит, компонента функционирует в соответствии с собственными настройками.
+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Группа_полей.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Группа_полей.html new file mode 100644 index 0000000..196e3a9 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Группа_полей.html @@ -0,0 +1,123 @@ + + + + + + + + Web-BPM Docs – Группа полей + + + + + + +
+
+ + + +
+
+

Группа полей

+

Назначение

+

Группа полей - это визуальная компонента-контейнер, которая позволяет расположить внутри себя набор других видимых компонент в вертикальной последовательности, когда каждая следующая видимая компонента находится на новой строке под предыдущей. По функциональности компонента Группа полей очень близка к компоненте Вертикальный контейнер и отличается от него только визуальным обозначением границ контейнера и возможностью дать заголовок.

+

Используется для оптимизации расположения компонентов в интерфейсе системы, обеспечивая возможность группировки и логического объединения компонентов в определенных секторах web-страницы и общее эстетическое и интуитивное восприятие экранного интерфейса пользователем системы.

+

Компонента Группа полей находится в разделе Компоненты - Контейнеры - Группа полей

+

Свойства

+

Компонента имеет набор общих свойств. Ниже отображены свойства, специфичные только для данной компоненты.

+ + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Заголовок позволяет указать тест заголовка для контейнера Группа полей пример возможного значения: Общие сведения
+

Функции

+

В ходе настройки свойств компоненты (заданных по умолчанию) может оказаться недостаточно для выполнения поставленной задачи и получения необходимого результата.

+

Для каждой компоненты предусмотрен перечень функций, расширяющих её базовую функциональность, которые можно добавить нажатием кнопки .

+

Вследствие технических особенностей реализации функций(

+

- функции, которые выполняются удаленно на сервере приложений,

+

- функции, которые выполняются в браузере пользователя),

+

они имеют разные иконки, но это никак не влияет на их функциональность или предпочтительность использования.

+

Рекурсивно копировать составные объекты сложных компонент

+

TODO: описать

+

Определить права текущего пользователя

+

Определить права текущего пользователя

+

Определить роли текущего пользователя

+

Определить роли текущего пользователя

+

Методические рекомендации по применению

+

Пошаговые инструкции по применению компонента в типовых задачах Вы можете найти в разделах:

+
+

Часто задаваемые вопросы

+ + + + + + + + + + + + + + + + + + +
Вопрос Ответ
В чем заключаются лучшие практики использования контейнеров? Чаще всего контейнерами зонируют экранный интерфейс, чтобы добиться эргономичного расположения компонентов на web-странице. Контейнер Группа полей используется для объединения логически родственных полей ввода и отображения информации в видимую область на экране и явного наименования этой области объединяющим заголовком. По функциональности компонента Группа полей очень близка к компоненте Вертикальный контейнер и отличается от него только визуальным обозначением границ контейнера и возможностью дать заголовок. Все возможности взаимного комбинирования разных видов компонент - контейнеров внутри компоненты-контейнера Группа полей остаются такими же, как и у других компонент-контейнеров.
Насколько глубокую иерархию вложенности можно создать, комбинируя контейнеры между собой Теоретически, глубина вложенности контейнеров разного типа друг в друга не ограничена. Но на практике комбинирование вложенностью контейнеров применяется для решения конкретной проблемы эргономичного расположения визуальных компонентов на странице.
Чем отличается функциональность набора свойств (Видимость, Обязательность, Недоступно для управления, Подлежит сохранению) у компоненты-контейнера от функциональности одноименных свойств обычной компоненты Функциональность набора свойств (Видимость, Обязательность, Недоступно для управления, Подлежит сохранению) у компоненты-контейнера отличается от функциональности одноименных свойств у обычной компоненты тем, что значение указанных свойств наследуется с компоненты-контейнера на все компоненты, входящие в состав такой компоненты-контейнера. Правила наследования таковы, что если у вложенного объекта соответствующее свойство выставлено в значение Истина, то оно следует судьбе этого же свойства у компоненты-контейнера, если же значение соответствующего свойства у вложенной компоненты Ложь, то наследования значения этого свойства от компоненты-контейнера не происходит, компонента функционирует в соответствии с собственными настройками.
+

Пример настройки

+

Задача: сгруппировать поля в панель с рамочкой “Паспортные данные”:

+

+

1.Добавить компонент FieldSet на страницу:

+

+
    + +
  1. Добавить компоненты, которые хотите сгруппировать на панели с рамочкой:
  2. +
+

+

. Настройте свойство Label для добавленных компонентов.

+

. Задайте текст заголовка панели в свойстве heading компонента FieldSet:

+

+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Диалог.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Диалог.html new file mode 100644 index 0000000..a019508 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Диалог.html @@ -0,0 +1,118 @@ + + + + + + + + Web-BPM Docs – Диалог + + + + + + +
+
+ + + +
+
+

Диалог

+

Назначение

+

Диалог - это компонента, которая используется для отображения всплывающего диалогового окна на форме страницы. В зависимости от решаемой задачи, по усмотрению бизнес-аналитика, элемент может включать в себя другие компоненты из библиотеки.

+

Свойства

+

Каждая компонента имеет набор общих свойств. Ниже отображены свойства, специфичные только для данной компоненты.

+ + + + + + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Заголовок позволяет задать заголовок диалога на странице
TODO: переименовать Допускается скрытие через системную позволяет задать возможность закрытия диалога по нажатию на системный - возможно закрыть диалог через . Значение по умолчанию - невозможно закрыть диалог (системный скрыт)
TODO: адаптироватьresetValidationStatus позволяет сбросить значения и валидацию полей диалога после его скрытия true - сбрасывать валидацию, false - нет
+

Функции

+

В ходе настройки свойств компоненты (заданных по умолчанию) может оказаться недостаточно для выполнения поставленной задачи и получения необходимого результата.

+

Для каждой компоненты предусмотрен перечень функций, расширяющих её базовую функциональность, которые можно добавить нажатием кнопки .

+

Вследствие технических особенностей реализации функций (

+

- функции, которые выполняются удаленно на сервере приложений,

+

- функции, которые выполняются в браузере пользователя), они имеют разные иконки, но это никак не влияет на их функциональность или предпочтительность использования.

+

Рекурсивно копировать составные объекты сложных компонент

+

TODO: описать

+

Определить права текущего пользователя

+

Определить права текущего пользователя

+

Определить роли текущего пользователя

+

Определить роли текущего пользователя

+

Методические рекомендации по применению

+

Пошаговые инструкции по применению компонента в типовых задачах Вы можете найти в разделах:

+
+

Часто задаваемые вопросы

+ + + + + + + + + + + + + + + + + + + + + +
Вопрос Ответ
В каких случаях чаще всего используется элемент Диалог? В большинстве случаев, Диалог используется для вывода уведомлений, предупреждений и дополнительной информации пользователю.
Как управлять видимостью компоненты Диалог? Регулировать видимость Диалога можно с помощью Обработчика событий, где для Диалога необходимо задействовать методы “Показать”, “Скрыть”, но не метод “Задать видимость”
Как задать возможность закрытия всплывающего Диалога на странице по нажатию на Кнопку? Для того, чтобы реализовать возможность закрытия Диалога по нажатию на конкретную Кнопку, необходимо добавить на страницу Обработчик событий с соответствующим условием: Если произошло нажатие на Кнопку, тогда скрывать Диалог.
Может ли Диалог выступать в качестве самостоятельного элемента на странице приложения? Нет, Диалог всегда должен содержать в себе вложенные элементы (статичный Текст или Кнопки), иначе его применение не целесообразно.
+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Диалог_Вызвать.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Диалог_Вызвать.html new file mode 100644 index 0000000..4daacc7 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Диалог_Вызвать.html @@ -0,0 +1,78 @@ + + + + + + + + Web-BPM Docs – Диалог. Вызвать + + + + + + +
+
+ + + +
+
+

Диалог. Вызвать

+

Функция, которая в режиме исполнения приложения (runtime mode) позволяет вызвать заданное в настройках функции модальное диалоговое окно поверх основной web-страницы экранного интерфейса.

+

Без взаимодействия с этим модальным диалоговым окном, которое впоследствии должно завершиться его закрытием в соответствии с каким-либо алгоритмом, пользователь не сможет продолжить работу с основной web-страницы экранного интерфейса.

+

Функция может быть активирована на любом из видов компоненты Кнопка, но обычной практикой является использование функции Диалог. Вызватьс компонентой Кнопка.

+

+

Рис. 1 Внешний вид активированной функции

+

Параметры функции (табл.1)

+ + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Вызвать диалог Ссылка на компоненту Диалог, обязательный. позволяет указать компоненту Диалог для вызова модального окна поверх основной web-страницы экранного интерфейса
+

Пример настройки и применения

+

+

Рис.2 Активация функции на компоненте Кнопка

+

+

Рис. 3 Компонента Диалог, которая будет вызываться функцией

+

+

Рис. 4 Внешний вид вызванного функцией модального окна диалога

+
+
+
+
+
+
+

© 2022 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Диалог_Скрыть.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Диалог_Скрыть.html new file mode 100644 index 0000000..1be9086 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Диалог_Скрыть.html @@ -0,0 +1,79 @@ + + + + + + + + Web-BPM Docs – Диалог. Скрыть + + + + + + +
+
+ + + +
+
+

Диалог. Скрыть

+

Функция, которая в режиме исполнения приложения (runtime mode) позволяет скрыть заданное в настройках функции модальное диалоговое окно и продолжить работу с основной web-страницы экранного интерфейса.

+

Функция может быть активирована на любом из видов компоненты Кнопка, но обычной практикой является использование функции Диалог. Скрыть с компонентой Кнопка.

+

+

Рис. 1 Внешний вид активированной функции

+

Параметры функции (табл.1)

+ + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Скрыть диалог Ссылка на компоненту Диалог, обязательный. позволяет указать компоненту Диалог для сокрытия модального окна поверх основной web-страницы экранного интерфейса
+

Пример настройки и применения

+

+

Рис.2 Активация функции на компоненте Кнопка

+

+

Рис. 3 Компонента Диалог, которая будет скрываться функцией

+

+

Рис. 4 Внешний вид модального окна диалога, который будет скрыт

+

+

Рис. 5 Внешний вид web-страницы, когда модальное окно Диалога скрыто функцией

+
+
+
+
+
+
+

© 2022 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Как_добавить_компоненту_Вертикальный_контейнер_на_страницу_.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Как_добавить_компоненту_Вертикальный_контейнер_на_страницу_.html new file mode 100644 index 0000000..1079a23 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Как_добавить_компоненту_Вертикальный_контейнер_на_страницу_.html @@ -0,0 +1,166 @@ + + + + + + + + Web-BPM Docs – Как добавить компоненту Вертикальный контейнер на страницу? + + + + + + +
+
+ + + +
+
+

Как добавить компоненту “Вертикальный контейнер” на страницу?

+

Постановка задачи: необходимо расположить на пользовательской странице Карточка задачи набор параметров задачи таким образом, чтобы визуально страница воспринималась, как состоящая из двух одинаковых по ширине колонок, параметры задачи в каждой из которых идут друг под другом.

+

Решение задачи:

+

Предполагается, что страница Карточка задачи уже создана бизнес-аналитиком и визуальные компоненты и источник данных компоненты Форма настроен.

+

Для оптимизации расположения параметров в соответствии с условиями задачи необходимо сделать следующее:

+
    + +
  • внутрь компоненты Форма добавить компоненту Горизонтальный контейнер (рис.1)
  • +
+

+

Рис.1 Добавление компоненты Горизонтальный контейнер

+
    + +
  • внутрь компоненты Горизонтальный контейнер добавить две компоненты Вертикальный контейнер (рис. 2)
  • +
+

+

Рис.2 Добавление двух компонент Вертикальный контейнер

+
    + +
  • в настройках компоненты Вертикальный контейнер перейти в Расширенные настройки и задать ширину каждой из компонент Вертикальный контейнер в размере 50% (рис. 3)
  • +
+ +
+ +

+
+ +

+

Рис.3 Выставление параметра Ширина в 50% у компонент Вертикальный контейнер

+
    + +
  • внутрь каждой из компонент Вертикальный контейнер расположить визуальные компоненты (рис.4)
  • +
+

+

Рис.4 Добавление визуальных компонентов в скомбинированные Горизонтальный и вертикальные контейнеры

+

На этом настройка предложенного порядка расположения визуальных компонентов на странице, предусмотренная заданием, завершена.

+

При проверке результата в работающем приложении визуальные компоненты должны выглядеть так:

+ +
+ + + + + + + + + + + + + + +
+
+ +

+
+

Рис. 5 Представление визуальных компонентов после использования Горизонтального и Вертикального контейнеров.

+ +

Страница воспринимается как состоящая из 2 столбцов одинаковой ширины, в которых визуальные компоненты расположены в вертикальном направлении друг за другом

+
+ +

Тот же самый набор визуальных компонентов, расположенный в составе компоненты Форма, без использования контейнеров выглядел бы так:

+ +
+ + + + + + + + + + + + + + + + + + +
+
+ +

+
+
+ +

+
+

Рис. 6 Все визуальные компоненты расположены внутри компоненты Форма.

+ +

Компонента Форма сама по себе является Вертикальным контейнером !

+

Рис. 7 Расположение визуальных компонентов в запущенное приложении без использования комбинации Горизонтальных и Вертикальных контейнеров.

+ +

Поскольку Компонента Форма сама по себе является Вертикальным контейнером, то все визуальные компоненты расположены в один столбик в вертикальной последовательности

+
+ +
+
+

Attachments:

+
+ + +
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Как_добавить_компоненту_Вкладка_на_страницу_.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Как_добавить_компоненту_Вкладка_на_страницу_.html new file mode 100644 index 0000000..328dabb --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Как_добавить_компоненту_Вкладка_на_страницу_.html @@ -0,0 +1,115 @@ + + + + + + + + Web-BPM Docs – Как добавить компоненту Вкладка на страницу? + + + + + + +
+
+ + + +
+
+

Как добавить компоненту “Вкладка” на страницу?

+

Постановка задачи: необходимо расположить на пользовательской странице Карточка задачи набор параметров задачи таким образом, чтобы визуально страница воспринималась, как состоящая из двух вкладок, каждая со своим набором параметров задачи (вкладка “общие параметры” и вкладка “сотрудники”).

+

Решение задачи:

+

Предполагается, что страницаКарточка задачиуже создана бизнес-аналитиком и визуальные компоненты и источник данных компоненты Форма настроен.

+

Для оптимизации расположения параметров в соответствии с условиями задачи необходимо сделать следующее:

+
    + +
  • внутрь компоненты Форма добавить компоненту Контейнер вкладок (рис.1)
  • +
+

+

Рис.1 Добавление компоненты Контейнер вкладок

+
    + +
  • внутрь компоненты Контейнер вкладок добавить две компоненты Вкладка (рис. 2)
  • +
+

+

Рис.2 Добавление двух компонент Вкладка

+
    + +
  • + +

    оставляем значения параметров компоненты “Контейнер вкладок” в состоянии ‘по умолчанию’

    +
  • +
  • + +

    внутрь каждой из компонент Вкладка располагаем визуальные компоненты (рис.4)

    +
  • +
+

+

Рис.4 Добавление визуальных компонентов в скомбинированные компоненты-контейнеры “Контейнер вкладок” и “Вкладка”

+

На этом настройка предложенного порядка расположения визуальных компонентов на странице, предусмотренная заданием, завершена.

+

При проверке результата в работающем приложении визуальные компоненты должны выглядеть так:

+ +
+ +

+
+ +

+

Рис. 5 Представление визуальных компонентов после использования компоненты-контейнеры “Контейнер вкладок” и “Вкладка”

+

Страница воспринимается как состоящая из 2 вкладок, в которых визуальные компоненты расположены в вертикальном направлении друг за другом

+ +
+
+

Attachments:

+
+ + +
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Как_добавить_компоненту_Горизонтальный_контейнер_на_страницу_.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Как_добавить_компоненту_Горизонтальный_контейнер_на_страницу_.html new file mode 100644 index 0000000..4189554 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Как_добавить_компоненту_Горизонтальный_контейнер_на_страницу_.html @@ -0,0 +1,173 @@ + + + + + + + + Web-BPM Docs – Как добавить компоненту Горизонтальный контейнер на страницу? + + + + + + +
+
+ + + +
+
+

Как добавить компоненту “Горизонтальный контейнер” на страницу?

+

Постановка задачи: необходимо расположить на пользовательской странице Карточка задачи набор параметров задачи таким образом, чтобы визуально страница воспринималась, как состоящая из двух одинаковых по ширине колонок, параметры задачи в каждой из которых идут друг под другом.

+

Решение задачи:

+

Предполагается, что страница Карточка задачи уже создана бизнес-аналитиком и визуальные компоненты и источник данных компоненты Форма настроен.

+

Для оптимизации расположения параметров в соответствии с условиями задачи необходимо сделать следующее:

+
    + +
  • внутрь компоненты Форма добавить компоненту Горизонтальный контейнер (рис.1)
  • +
+

+

Рис.1 Добавление компоненты Горизонтальный контейнер

+
    + +
  • внутрь компоненты Горизонтальный контейнер добавить две компоненты Вертикальный контейнер (рис. 2)
  • +
+

+

Рис.2 Добавление двух компонент Вертикальный контейнер

+
    + +
  • в настройках компоненты Вертикальный контейнер перейти в Расширенные настройки и задать ширину каждой из компонент Вертикальный контейнер в размере 50% (рис. 3)
  • +
+ +
+ +

+
+ +

+

Рис.3 Выставление параметра Ширина в 50% у компонент Вертикальный контейнер

+
    + +
  • внутрь каждой из компонент Вертикальный контейнер расположить визуальные компоненты (рис.4)
  • +
+

+

Рис.4 Добавление визуальных компонентов в скомбинированные Горизонтальный и вертикальные контейнеры

+

На этом настройка предложенного порядка расположения визуальных компонентов на странице, предусмотренная заданием, завершена.

+

При проверке результата в работающем приложении визуальные компоненты должны выглядеть так:

+ +
+ + + + + + + + + + + + + + +
+
+ +

+
+

Рис. 5 Представление визуальных компонентов после использования Горизонтального и Вертикального контейнеров.

+ +

Страница воспринимается как состоящая из 2 столбцов одинаковой ширины, в которых визуальные компоненты расположены в вертикальном направлении друг за другом

+
+ +

Тот же самый набор визуальных компонентов, расположенный в составе компоненты Форма, без использования контейнеров выглядел бы так:

+ +
+ + + + + + + + + + + + + + + + + + +
+
+ +

+
+
+ +

+
+

Рис. 6 Все визуальные компоненты расположены внутри компоненты Форма.

+ +

Компонента Форма сама по себе является Вертикальным контейнером !

+

Рис. 7 Расположение визуальных компонентов в запущенное приложении без использования комбинации Горизонтальных и Вертикальных контейнеров.

+ +

Поскольку Компонента Форма сама по себе является Вертикальным контейнером, то все визуальные компоненты расположены в один столбик в вертикальной последовательности

+
+ +
+
+

Attachments:

+
+ + +
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Как_добавить_компоненту_Группа_полей_на_страницу_.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Как_добавить_компоненту_Группа_полей_на_страницу_.html new file mode 100644 index 0000000..848ae61 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Как_добавить_компоненту_Группа_полей_на_страницу_.html @@ -0,0 +1,157 @@ + + + + + + + + Web-BPM Docs – Как добавить компоненту Группа полей на страницу? + + + + + + +
+
+ + + +
+
+

Как добавить компоненту “Группа полей” на страницу?

+

Постановка задачи: необходимо на пользовательской странице Карточка задачи сгруппировать и расположить набор параметров задачи по подразделам “Общие сведения”, “Сроки”, “Действующие лица”.

+

Решение задачи:

+

Предполагается, что страница Карточка задачи уже создана бизнес-аналитиком, визуальные компоненты и источник данных компоненты Форма настроен.

+

Для расположения параметров в соответствии с условиями задачи необходимо сделать следующее:

+
    + +
  • внутрь компоненты Форма добавить несколько компонент Группа полей (рис.1)
  • +
+

+

Рис.1 Добавление компоненты Группа полей

+
    + +
  • переименовать компоненты Группа полей и дать им одноименные заголовки (рис. 2)
  • +
+

+

Рис.2 Переименование и озаглавливание компонент Группа полей

+
    + +
  • внутри каждой из компонент Группа полей расположить визуальные компоненты для ввода и отображения информации (рис. 3)
  • +
+ +
+ + + + + + + + + + + + + + +
+
+ +

+
Рис.3 Распределение полей ввода и отображения информации по компонентам Группа полей
+
+ +

На этом настройка предложенного порядка расположения визуальных компонентов на странице, предусмотренная заданием, завершена.

+

При проверке результата в работающем приложении визуальные компоненты должны выглядеть так:

+

Рис. 4 Представление визуальных компонентов после использования компонент - контейнеров Группа полей Страница воспринимается как совокупность 3 логических блоков, следующих в вертикальном направлении друг за другом

+

Тот же самый набор визуальных компонентов, расположенный в составе компоненты Форма, без использования контейнеров выглядел бы так:

+ +
+ + + + + + + + + + + + + + + + + + +
+
+ +

+
+
+ +

+
+

Рис. 5 Все визуальные компоненты расположены внутри компоненты Форма.

+ +

Компонента Форма сама по себе является Вертикальным контейнером !

+

Рис. 6 Расположение визуальных компонентов в запущенном приложении без использования компонент- контейнеров Группа полей.

+ +

Поскольку Компонента Форма сама по себе является Вертикальным контейнером, то все визуальные компоненты расположены в один столбик в вертикальной последовательности

+
+ +
+
+

Attachments:

+
+ + +
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Как_добавить_компоненту_Контейнер_вкладок_на_страницу_.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Как_добавить_компоненту_Контейнер_вкладок_на_страницу_.html new file mode 100644 index 0000000..c780f69 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Как_добавить_компоненту_Контейнер_вкладок_на_страницу_.html @@ -0,0 +1,90 @@ + + + + + + + + Web-BPM Docs – Как добавить компоненту Контейнер вкладок на страницу? + + + + + + +
+
+ + + +
+
+

Как добавить компоненту “Контейнер вкладок” на страницу?

+

Постановка задачи: необходимо расположить на пользовательской странице Карточка задачи набор параметров задачи таким образом, чтобы визуально страница воспринималась, как состоящая из двух вкладок, каждая со своим набором параметров задачи (вкладка “общие параметры” и вкладка “сотрудники”).

+

Решение задачи:

+

Предполагается, что страница Карточка задачи уже создана бизнес-аналитиком и визуальные компоненты и источник данных компоненты Форма настроен.

+

Для оптимизации расположения параметров в соответствии с условиями задачи необходимо сделать следующее:

+
    + +
  • внутрь компоненты Форма добавить компоненту Контейнер вкладок (рис.1)
  • +
+

+

Рис.1 Добавление компоненты Контейнер вкладок

+
    + +
  • внутрь компоненты Контейнер вкладок добавить две компоненты Вкладка (рис. 2)
  • +
+

+

Рис.2 Добавление двух компонент Вкладка

+
    + +
  • + +

    оставляем значения параметров компоненты “Контейнер вкладок” в состоянии ‘по умолчанию’

    +
  • +
  • + +

    внутрь каждой из компонент Вкладка располагаем визуальные компоненты (рис.4)

    +
  • +
+

+

Рис.4 Добавление визуальных компонентов в скомбинированные компоненты-контейнеры “Контейнер вкладок” и “Вкладка”

+

На этом настройка предложенного порядка расположения визуальных компонентов на странице, предусмотренная заданием, завершена.

+

При проверке результата в работающем приложении визуальные компоненты должны выглядеть так:

+ +
+ +

+
+ +

+

Рис. 5 Представление визуальных компонентов после использования компоненты-контейнеры “Контейнер вкладок” и “Вкладка”

+

Страница воспринимается как состоящая из 2 вкладок, в которых визуальные компоненты расположены в вертикальном направлении друг за другом

+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Как_добавить_компоненту_Контейнер_кнопок_на_страницу_.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Как_добавить_компоненту_Контейнер_кнопок_на_страницу_.html new file mode 100644 index 0000000..ecc033a --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Как_добавить_компоненту_Контейнер_кнопок_на_страницу_.html @@ -0,0 +1,191 @@ + + + + + + + + Web-BPM Docs – Как добавить компоненту Контейнер кнопок на страницу? + + + + + + +
+
+ + + +
+
+

Как добавить компоненту “Контейнер кнопок” на страницу?

+

Постановка задачи: на пользовательской странице Карточка задачи требуется эргономично реализовать кнопки печати карточки задачи, карточки проекта, списка всех изменений по задаче. списка всех задействованных по задаче специалистов.

+

Решение задачи:

+

Предполагается, что страница Карточка задачи уже создана бизнес-аналитиком, визуальные компоненты с основными параметрами задачи и источник данных компоненты Форма настроен.

+

Для выполнения поставленных в задаче требований:

+
    + +
  • в состав page добавить Горизонтальный контейнер и назвать его Кнопки (рис.1)
  • +
+

+

Рис.1 Добавление Горизонтального контейнера

+
    + +
  • внутри горизонтального контейнера расположить компоненту “Контейнер с кнопками”, а также несколько простых компонент “Кнопка” (рис. 2)
  • +
+

+

Рис.2 Добавление компоненты Контейнер с кнопками и несколькообычных кнопок

+
    + +
  • внутри компоненты “Контейнер с кнопками” расположить визуальные компоненты “Кнопка печати” для печати форм отчетов, определенных условиями задачи (рис. 3)
  • +
+ +
+ + + + + + + + + + + + + + +
+
+ +

+
Рис.3 Наполнение компоненты "Контейнер с кнопками" простыми визуальными компонентами "Кнопка печати"
+
+ +

На этом настройка предложенного порядка расположения визуальных компонентов на странице, предусмотренная заданием, завершена.

+

При проверке результата в работающем приложении визуальные компоненты должны выглядеть так:

+ +
+ + + + + + + + + + + + + + + + + + +
+
+ +

+
+
+ +

+
+

Рис. 4 Представление визуальных компонентов после использования компоненты "Контейнер с кнопками".

+ +

Все возможности печати скрыты за объединяющей кнопкой.

+

Рис. 5 Представление визуальных компонентов после использования компоненты "Контейнер с кнопками" с раскрытыми кнопками, предоставляющими заданные возможности распечатки отчетов.

+ +


+

+
+ +

Тот же самый набор возможностей печати без использования компоненты “Контейнер с кнопками” выглядел бы так:

+ +
+ + + + + + + + + + + + + + + + + + +
+
+ +

+
+
+ +

+
+

Рис. 6 Все компоненты "Кнопка" последовательно расположены внутри "Горизонтального контейнера".

+ +


+

+

Рис. 7 Расположение визуальных компонентов в приложении без использования компоненты "Контейнер с кнопками".

+
+ +
+
+

Attachments:

+
+ + +
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Как_добавить_компоненту_Набор_фильтров_на_страницу_.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Как_добавить_компоненту_Набор_фильтров_на_страницу_.html new file mode 100644 index 0000000..10f28b3 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Как_добавить_компоненту_Набор_фильтров_на_страницу_.html @@ -0,0 +1,135 @@ + + + + + + + + Web-BPM Docs – Как добавить компоненту Набор фильтров на страницу? + + + + + + +
+
+ + + +
+
+

Как добавить компоненту “Набор фильтров” на страницу?

+

Постановка задачи:

+

На пользовательской странице необходимо расположить “Набор фильтров” который будет включать в себя текстовый фильтр.

+

Элементы на странице должны иметь следующие настройки:

+
    + +
  • Блок фильтрации на странице должен иметь подзаголовок-Фильтр по сотрудникам, реализованный с помощью компоненты Текст
  • +
  • Набор фильтров должен содержать внутри себя Текстовое поле (фильтр) и ссылаться на Таблицу поиска. Поиск по таблице должен осуществляться после ввода данных в поле фильтрации.
  • +
+

Решение задачи:

+

Предполагается, что страница, где необходимо разместить Таблицу и Набор фильтров, уже создана бизнес-аналитиком и включена в логику бизнес-процесса. Для добавления на страницу и настройки компонент по условиям задачинеобходимо сделать следующее:

+

1. Добавление элементов:

+ +

+

рис.1 Добавление элемента Набор фильтров

+
    + +
  • Добавить компоненту Текст внутрь Набора фильтров, которая будет являться заголовком блока фильтрации (рис.2)
  • +
+

+

рис.2 Добавление элемента Текст

+
    + +
  • Добавить внутрь контейнера Набор фильтров компоненту Фильтр по текстовому полю (рис.3)
  • +
+

+

рис.3 Добавление компонент Фильтр по текстовому полю

+
    + +
  • Добавить на страницу Таблицу,в которой будет отображаться информация о сотрудниках и по значениям которой будет осуществляться поиск записей с помощью фильтров (рис.4)
  • +
+

+

рис.4 Добавление элемента Таблица

+

2. Настройка элементов:

+
    + +
  • Настройка Набора фильтров: переносим объект Таблица, удерживая левую кнопку мыши, в свойство “Применить к…” Набор фильтров как показано на рисунке (рис.5) и настроить остальные свойства (рис.6)
  • +
+

+

рис.5 Настройка Набор фильтров

+

+

рис.6 Настройка Набор фильтров

+
    + +
  • Заполняем свойство Надпись у компоненты Текст значением Фильтр по сотрудникам (рис.7)
  • +
+

+

рис.7 Настройка элемента Текст

+
    + +
  • Заполняем у элемента Таблица следующие свойства: Таблица. Подгрузка данных - Источник данных - Граф сущностей (как описано в разделе Настройка Графа сущностей) и настраиваем колонки Таблицы (как описано в разделе Настройка колонок Таблицы) в блоке Таблица. Настроить колонки таблицы согласно условиям задачи (рис.8)
  • +
+

+

рис.8 Настройка элемента Таблица

+
    + +
  • Заполняем свойства компонент фильтрации по текстовому полю согласно условиям задачи (рис.9)
  • +
+

+

рис.9 Настройка Фильтра по текстовому полю

+

Результат выполнения задачи:

+

После применения изменений на странице, в экранной форме пользовательского приложения, мы видим, что условия задачи соблюдены и на странице отображается блок фильтрации, включающий в себя фильтры по тестовому полю (рис.10).

+

+

рис.10 Визуальное отображение выполнения условий задачи

+ +
+
+

Attachments:

+
+ + +
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Как_добавить_компоненту_Сворачиваемая_панель_на_страницу_.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Как_добавить_компоненту_Сворачиваемая_панель_на_страницу_.html new file mode 100644 index 0000000..eefbb4f --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Как_добавить_компоненту_Сворачиваемая_панель_на_страницу_.html @@ -0,0 +1,161 @@ + + + + + + + + Web-BPM Docs – Как добавить компоненту Сворачиваемая панель на страницу? + + + + + + +
+
+ + + +
+
+

Как добавить компоненту “Сворачиваемая панель” на страницу?

+

Постановка задачи:

+

На пользовательской странице необходимо расположить “Сворачиваемую панель” которая будет включать в себя Поле многострочного ввода, поле Дата и денежное поле.

+

Элементы на странице должны иметь следующие настройки:

+
    + +
  • Сворачиваемая панель: +
      + +
    • заголовок: Дополнительная информация об услуге
    • +
    +
  • +
  • Дата: +
      + +
    • Надпись: Дата предоставления услуги
    • +
    • Формат: Дата со временем
    • +
    +
  • +
  • Поле многострочного ввода: +
      + +
    • Надпись: Описание проведенных работ
    • +
    +
  • +
  • Денежное поле: +
      + +
    • Надпись: Стоимость услуг
    • +
    • Количество знаков после запятой
    • +
    +
  • +
+

Решение задачи:

+

Предполагается, что страница, где необходимо разместить Таблицуи Набор фильтров, уже создана бизнес-аналитиком и включена в логику бизнес-процесса. Для добавления на страницу и настройки компонент по условиям задачинеобходимо сделать следующее:

+

1. Добавление элементов:

+
    + +
  • Добавить на страницу контейнер Сворачиваемая панель (рис.1)
  • +
+

+

рис.1 Добавление элемента Сворачиваемая панель

+
    + +
  • Добавить компоненту Дата внутрь Сворачиваемой панели (рис.2)
  • +
+

+

рис.2 Добавление элемента Дата.

+ +

+

рис.2 Добавление элемента Поле многострочного ввода.

+
    + +
  • Добавить внутрь Сворачиваемой панели компоненту Денежное поле (рис.3)
  • +
+

+

рис.3 Добавление элемента Денежное поле.

+

2. Настройка элементов:

+
    + +
  • НастройкаСворачиваемой панели, заполняем Заголовок. Как показано на рисунке (рис.4).
  • +
+

+

рис.4 НастройкаСворачиваемая панель

+
    + +
  • Настройка поля Дата, заполняем Надпись. Как показано на рисунке (рис.5).
  • +
+

+

рис.5 Настройка Дата

+
    + +
  • Настройка Поле многострочного ввода, заполняем Надпись. Как показано на рисунке (рис.6).
  • +
+

+

рис.6 НастройкаПоле многострочного ввода.

+
    + +
  • Настройка Денежное поле, заполняем Надпись. Указываем количество знаков после запятой. Как показано на рисунке (рис.7).
  • +
+

+

рис.7 Настройка Денежного поля.

+

Результат выполнения задачи:

+

После применения изменений на странице, в экранной форме пользовательского приложения, мы видим, что условия задачи соблюдены и на странице отображается Сворачиваемая панель, включающий в себя необходимые поля. Сворачиваемая панель в свернутом состоянии рис.8. Сворачиваемая панель в развернутом виде рис. 9.**
+**

+

+

рис.8 Визуальное отображение выполнения условий задачи

+

+

рис.9 Визуальное отображение выполнения условий задачи

+ +
+
+

Attachments:

+
+ + +
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Как_добавить_компоненту_Форма_на_страницу_.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Как_добавить_компоненту_Форма_на_страницу_.html new file mode 100644 index 0000000..6a9b870 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Как_добавить_компоненту_Форма_на_страницу_.html @@ -0,0 +1,184 @@ + + + + + + + + Web-BPM Docs – Как добавить компоненту Форма на страницу? + + + + + + +
+
+ + + +
+
+

Как добавить компоненту “Форма” на страницу?

+

Постановка задачи: необходимо расположить на пользовательской странице Карточка задачи набор параметров задачи, представленных визуальными компонентами, с возможностью подгрузить информацию из таблиц базы данных в режиме редактирования карточки, либо сохранить введенные значения (в режиме добавления новой записи или обновления ранее созданной записи).

+

Карточка задачидолжна иметь следующие настройки:

+
    + +
  • в Граф сущностей в качестве Главной сущности должна быть определена таблица задач(tasks), которая может быть связана с другими таблицами базы данных, где содержитсядополнительная информация для вывода на страницу - наименование и описание задачи, дата постановки задачи
  • +
  • при настройке функции Подгрузка данных основная компонентыФормав параметре Переменная процесса с идентификатором следует выбрать из списка наименование переменной процесса task_id, содержащей идентификатор задачи. Эта переменная может быть заполнена каким-либо значением или быть пустым. Как правило, если при открытии страницы с карточкой задачи эта переменная уже заполнена некоторым числом, то карточка задачи открывается на редактирование (выполняется SQL запрос SELECT при открытии и UPDATE при попытке сохранения), поскольку этот идентификатор задачи был указан пользователем на одном из предыдущих этапов. Если при открытии страницы с карточкой задачи эта переменная пуста, то функция Подгрузка данных основная автоматически определяет, что данные для подгрузки на страницу отсутствуют, а при попытке сохранения карточки следует выполнить SQL запрос INSERT.
  • +
  • внутри компоненты-контейнера Форма следует расположить 3 компоненты: Текстовое поле для параметра Наименование задачи, Текстовое поле для параметра Описание задачи и Дата для параметра Дата постановки задачи.
  • +
+

Решение задачи:

+

Предполагается, что страница Карточка задачи уже создана бизнес-аналитиком и в логике бизнес-процесса определена необходимая переменная процесса task_id, значение которой заполняется перед открытием страницы пользователем. Для добавления на страницу и настройки компоненты Форма необходимо сделать следующее:

+
    + +
  • добавить внутрь страницы компоненту Форма (рис.1)
  • +
  • в настройках добавленной Формы перейти к разделу Подгрузка данных основная - Источник данных - Граф сущностей и настроить его в соответствии с условием задачи (рис.2).
  • +
+

+ +
+
     рис.1 Добавление компоненты Форма на страницу    
+                 рис.2 Настройка Графа
+
+ +

сущностей компоненты Форма

+ +

+ +
+
        рис.3 Настройка переменной процесса
+
+ +
    + +
  • расположить компоненты для отображения параметров Наименование задачи, Описание задачи, Дата постановки задачи и настроить их на отображение информации из источника данных (рис.4, рис.5, рис.6)
  • +
+ +
+ + + + + + + + + + + + + + + + + + + + + + +
+
+ +

+
+
+ +

+
+
+ +

+
рис.4 Добавление элемента Наименованиерис.5 Добавление элемента Описаниерис.6 Добавление элемента Дата постановки задачи
+
+ +

На этом настройка компоненты Форма для отображения информации из базы данных завершена. В указанной конфигурации при попытке открыть веб-страницу поля будет заполнены имеющимися в базе данных значениями.

+

Для возможности создания новой записи (INSERT) или изменения имеющихся значений (UPDATE), необходимо добавить на страницу компоненту Кнопка сохранения и указать этой кнопке на Форму, согласно Графу сущностей которой следуют провести операцию добавления новой записи или обновления существующей информации после нажатия на кнопку (рис.7)

+ +
+ + + + + + + + + + + + + + +
+
+ +


+

+
+

рис.7 Настройка элемента Кнопка сохранения

+ +

Заполнение параметра Компонент "Форма" Кнопки сохранения происходит путем перетаскивания манипулятором мышь объекта "Основная Форма страницы " из дерева структуры страницы в окно параметра Компонент "Форма" Кнопки сохранения (как показано стрелкой на скриншоте).

+ +

Также существует удобная функциональность обратного быстрого перехода по дереву структуры страницы к задействованной компоненте посредством клика на параметре Компонент "Форма" Кнопки сохранения, когда есть необходимость уточнить, на какую именно компоненту в дереве ссылается интересующий параметр.

+
+ +

Кнопку сохранения необязательно располагать внутри компоненты Форма, что является обычной практикой при разработке приложений, поскольку кнопки располагаютcя в определенных областях экрана с использованием компонент Горизонтальный или Вертикальный контейнер. Кроме того, компонента Кнопка сохранения не имеет своего источника данных, как те компоненты, которые отображают информацию из базы данных, и которые по этой причине должны быть расположены внутри компоненты Форма.

+

После применения изменений и настройки всех необходимых элементов, веб-страница может не только заполнять поля значениями из базы данных при открытии, но и сохранять измененные значения или добавлять новую запись, в зависимости от состояния значения переменной task_id. Если она пуста, то данные после нажатия Кнопки сохранения добавятся в таблицу, а если не пуста - то обновятся, и система перейдет к следующей задаче согласно логике бизнес-процесса.

+ +
+
+

Attachments:

+
+ +
+ +

image2019-3-7_15-26-43.png (image/png)
+ Screenshot_9.png (image/png)
+ Screenshot_6.png (image/png)
+ Screenshot_7.png (image/png)
+ Screenshot_8.png (image/png)
+ Screenshot_3.png (image/png)
+ Screenshot_4.png (image/png)
+ image2019-3-7_17-38-11.png (image/png)
+ image2019-3-7_17-39-51.png (image/png)
+ image2019-3-7_18-12-24.png (image/png)
+ image2019-3-7_18-15-45.png (image/png)
+ image2019-3-11_10-15-47.png (image/png)
+ image2019-3-11_10-16-20.png (image/png)
+ image2019-3-11_10-34-55.png (image/png)
+ image2019-3-11_18-6-34.png (image/png)
+ image2019-3-11_18-8-46.png (image/png)

+
+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Как_задействовать_компоненту_Окно_.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Как_задействовать_компоненту_Окно_.html new file mode 100644 index 0000000..89512bd --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Как_задействовать_компоненту_Окно_.html @@ -0,0 +1,137 @@ + + + + + + + + Web-BPM Docs – Как задействовать компоненту Окно? + + + + + + +
+
+ + + +
+
+

Как задействовать компоненту “Окно”?

+

Постановка задачи: на одном из этапов прохождения бизнес - процесса следует проинформировать пользователя о готовности Системы отправить сообщение электронной почтой на основе тех данных, что пользователь последовательно на нескольких формах и в несколько этапов вводил в Систему до этого момента. Предоставить пользователю возможность 1) обойти отправку и пойти дальше по процессу, 2) вернуться на первый этап и повторить (откорректировать ввод данных), 3) отправить e-mail на основе всех введенных им данных.

+

Решение задачи:

+
    + +
  1. В редакторе бизнес-процессов предусмотреть отдельную пользовательскую задачу (UserTaks).
  2. +
+

+
    + +
  1. Создать новую экранную форму (page) и соотнести ее с этой пользовательской задачей в редакторе бизнес- процессов.
  2. +
+

+
    + +
  1. Открыть экранную форму в редакторе экранных форм и перенести из библиотеки компонентов компоненту Окно в дерево страницы page.
  2. +
+

+
    + +
  1. Настроить каждую входящую состав компоненты “Окно” простую визуальную компоненту следующим образом:
  2. +
+ +
+ + + + + + + + + + + + + + + + + + + + + + +
+
+ +

+
+
+ +

+
+
+ +

+
Дать заголовок компоненте Окно, задействовав компоненту ТекстСформулировать тело сообщения пользователю, которое будет отображаться Системой и заполнить предназначенный для этого параметр компоненты TextAreaНастроить параметры компонент Кнопка, с помощью которых пользователь будет принимать решение о дальнейшем движении маркера процесса
+
+ +

На этом выполнение поставленной задачи можно считать завершенным.

+

При проверке результата в работающем приложении компонента выглядит так:

+

+ +
+
+

Attachments:

+
+ + +
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Как_использовать_Диалог_для_вывода_предупреждения_пользователю_на_странице_.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Как_использовать_Диалог_для_вывода_предупреждения_пользователю_на_странице_.html new file mode 100644 index 0000000..8dd4b39 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Как_использовать_Диалог_для_вывода_предупреждения_пользователю_на_странице_.html @@ -0,0 +1,146 @@ + + + + + + + + Web-BPM Docs – Как использовать Диалог для вывода предупреждения пользователю на странице? + + + + + + +
+
+ + + +
+
+

Как использовать Диалог для вывода предупреждения пользователю на странице?

+

Постановка задачи: необходимо реализовать на пользовательской странице Карточки проверки всплывающее Диалоговое окно с предупреждением о некорректном заполнении пользователем Дат проведения проверки (дата начала проверки и дата окончания проверки). Вывод Диалога предупреждения и проверка корректности введенных пользователем значений в поле дат должны осуществляться согласно условию, что Дата окончания проверки не должна быть раньше Даты начала проверки, и Дата начала проверки не должна быть позднее Даты окончания проверки, соответственно. В случае некорректного заполнения одной из Дат, помимо вывода всплывающего Диалогового окна, введенная пользователем Дата должна очищаться.

+

Элементы на странице должны иметь следующие настройки:

+
    + +
  • Дата (с возможностью сохранения) №1:
    +надпись -Дата начала проверки
    +формат - Дата
    +введенноепользователем значение должно сохраняться в базу данных
  • +
  • Дата (с возможностью сохранения) №2:
    +надпись -Дата окончания проверки
    +формат-Датавведенноепользователем значение должно сохраняться в базу данных
  • +
  • Диалог вывода предупреждения №1:
    +элемент Текст -Дата начала проверки не должна быть позднее Даты окончания проверки
    +кнопка закрытия Диалога - Ок
    +диалог должен быть скрыт по умолчанию, его видимость будет регулироваться с помощью Обработчика событий
  • +
  • Диалог вывода предупреждения №2:
    +элемент Текст-Дата окончания проверки не должна быть раньше Даты начала проверкикнопка закрытия Диалога- Окдиалог должен быть скрыт по умолчанию, его видимость будет регулироваться с помощью Обработчика событий
  • +
+

**Решение задачи:**предполагается, чтостраница Карточка проверки уже создана бизнес-аналитиком, где имеется основная компонента Форма, в структуру сущностей которой включена необходимая таблица, куда будут сохраняться введенные пользователем значения. Для добавления на страницу полей с Датами и Диалоговых окон необходимосделать следующее:

+ +

рис.1 Добавление Дат на Форму

+

рис.2 Настройка элемента Дата начала проверки

+

рис.3 Настройка элемента Дата окончания проверки

+
    + +
  • добавить внутрь Формы первое Диалоговое окно со вложенными элементами Текст и Кнопка, которое будет отображаться при условии: Дата окончания проверки не должна быть раньше Даты начала проверки (рис.4, рис.5, рис.6)
    +
    +рис.4 Диалог с проверкой корректности Даты окончания проверки
    +рис.5 Текст с предупреждением для пользователя
    +рис.6 Кнопка закрытия Диалога
  • +
  • добавить Обработчик событий, где регулируется видимость Диалога, всплывающего в случае, еслиДата окончания проверкираньшеДаты начала проверки и очищается значение поля Дата окончания проверки при выполнении этого условия(рис.7)
  • +
  • добавить Обработчик событий, с помощью которого выполняется закрытие Диалога с проверкой Даты окончания при нажатии на Кнопку внутри Диалога (рис.8)
  • +
+

рис.7 Настройка Обработчика событий для отображения Диалога
+рис.8 Настройка Обработчика событий для закрытия Диалога

+
    + +
  • добавить внутрь Формы второе Диалоговое окно со вложенными элементами Текст и Кнопка, которое будет отображаться при условии: Дата начала проверкине должна быть позднее Даты окончания проверки (рис.9, рис.10, рис.11)
    +
    +рис.9 Диалог с проверкой корректности Даты начала проверки
    +рис.10 Текст с предупреждением для пользователя
    +рис.11 Кнопка закрытия Диалога
  • +
  • добавить О бработчик событий, где регулируется видимость Диалога, всплывающего в случае, если Дата начала проверки позднее Даты окончания проверкии очищается значение поля Дата начала проверки при выполнении этого условия (рис.12)
  • +
  • добавить Обработчик событий, с помощью которого выполняется закрытие Диалога с проверкой Даты начала при нажатии на Кнопку внутри Диалога (рис.13) +


    +рис.12 Настройка Обработчика событий для отображения Диалога
    +рис.13 Настройка Обработчика событий для закрытия Диалога

  • +
+

Результат выполнения задачи:

+

После применения изменений на странице, в экранной форме пользовательского приложения, мы видим, что условия задачи выполнены: на странице отображается два элемента Дата начала проверки и Дата окончания проверки (рис.14). В случае некорректного заполнения пользователем одного из этих полей (в любом порядке), автоматически срабатывает проверка по условиям, заданным в Обработчиках событий, и всплывает Диалоговое окно с предупреждением о допущенной ошибке (рис.15, рис.16).

+

+

+

рис.15 Вывод Диалогового окна при некорректном заполнении Даты начала проверки

+

+

рис.14.Визуальное отображение элементов с Датами на странице
+рис.16 Вывод Диалогового окнапри некорректном заполнении Даты окончания проверки

+ +
+
+

Attachments:

+
+ + +
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Контейнер_вкладок.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Контейнер_вкладок.html new file mode 100644 index 0000000..6f424f5 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Контейнер_вкладок.html @@ -0,0 +1,121 @@ + + + + + + + + Web-BPM Docs – Контейнер вкладок + + + + + + +
+
+ + + +
+
+

Контейнер вкладок

+

Назначение

+

Контейнер вкладок - невидимая компонента-контейнер позволяет экономно и эффективно организовать отображение на одном и том же месте экранного интерфейса разного набора визуальных компонентов, используя режим переключения вкладок, при котором выбранная пользователем вкладка отображается поверх других вкладок, не занимая дополнительного места на web странице и закрывая своим содержимым содержимое других вкладок.

+

Используется для оптимизации расположения визуальных компонент в интерфейсе системы, обеспечивая возможность группировки и логического объединения компонент в определенных зонах web-страницы и общее эстетическое и интуитивное восприятие экранного интерфейса пользователем системы.

+

Компонента Контейнер вкладок обязательно должна содержать в своем составе несколько компонент Вкладка, на которых располагаются прочие визуальные компоненты, позволяющие пользователю взаимодействовать с системой.

+

Компонента Контейнер вкладок находится в разделе Компоненты - Контейнеры - Контейнер вкладок

+

Свойства

+

Компонента имеет набор общих свойств и подгрузка данных по умолчанию. Ниже отображены свойства, специфичные только для данной компоненты.

+ + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Цикличность вкладок (isLoopTabs) Значения True или False
+

Методические рекомендации по применению

+

Пошаговые инструкции по применению компонента в типовых задачах Вы можете найти в разделах:

+
+

Часто задаваемые вопросы

+ + + + + + + + + + + + + + + + + + + + + + + + +
Вопрос Ответ
Можно ли вложить Контейнер вкладок в другие контейнеры? Да, может быть вложен в Вертикальный или Горизонтальный контейнеры
Как сделать Контейнер вкладок из горизонтального вертикальным? Для этого необходимо задать css класс “tab-menu” для TabContainer
Как выбрать вкладку в Контейнере вкладок по названию/номеру? Нужно использовать методы Контейнера вкладок “Сделать вкладку активной по заголовку”, “Сделать вкладку активной по индексу” в компоненте Обработка событий. Для выбора вкладки по индексу следует учитывать, что индекс вкладок начинается с 0 (первая по счету вкладка имеет индекс 0)
Можно ли расположить визуальные компоненты сразу в Контейнере вкладок, а не в компоненте Вкладка? Можно, но тогда Контейнер вкладок ничем не будет отличаться от Вертикального контейнера
Чем отличается функциональность набора свойств (Видимость, Обязательность, Недоступно для управления, Подлежит сохранению) у компоненты-контейнера от функциональности одноименных свойств обычной компоненты? Функциональность набора свойств (Видимость, Обязательность, Недоступно для управления, Подлежит сохранению) у компоненты-контейнера отличается от функциональности одноименных свойств у обычной компоненты тем, что значение указанных свойств наследуется с компоненты-контейнера на все компоненты, входящие в состав такой компоненты-контейнера. Правила наследования таковы, что если у вложенного объекта соответствующее свойство выставлено в значение Истина, то оно следует судьбе этого же свойства у компоненты-контейнера, если же значение соответствующего свойства у вложенной компоненты Ложь, то наследования значения этого свойства от компоненты-контейнера не происходит, компонента функционирует в соответствии с собственными настройками.
+

CSS классы

+ + + + + + + + + + + + + + + +
Название класса css Описание
tab-menu класс присваивается компоненте TabContainer, делает его вертикальным
menu-header класс присваивается компоненте TabItem (подзаголовок меню) при необходимости визуально выделить элемент меню
+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Контейнер_с_кнопками.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Контейнер_с_кнопками.html new file mode 100644 index 0000000..ec738ad --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Контейнер_с_кнопками.html @@ -0,0 +1,98 @@ + + + + + + + + Web-BPM Docs – Контейнер с кнопками + + + + + + +
+
+ + + +
+
+

Контейнер с кнопками

+

Назначение

+

Контейнер с кнопками - это визуальная компонента-контейнер, которая позволяет скрыть несколько визуальных компонентов Кнопка под единственной видимой кнопкой, при нажатии на которую все скрытые ранее кнопки выпадают списком, предоставляя возможность пользователю нажать нужную. Используется для группировки схожих по функциональности кнопок и оптимизации расположения компонентов в интерфейсе системы, обеспечивая общее эстетическое и интуитивное восприятие.

+

Свойства

+

Компонента имеет набор общих свойств. Ниже отображены свойства, специфичные только для данной компоненты.

+ + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Надпись на кнопке позволяет задать наименование кнопки пример возможного значения: Печать
Текст подтверждения при печати позволяет задать текст сообщения, который отобразится в диалоговом окне после нажатия на кнопку
+

Функции

+

Дополнительных функций у этой компоненты нет.

+

Методические рекомендации по применению

+

Пошаговые инструкции по применению компонента в типовых задачах Вы можете найти в разделах:

+
+

Часто задаваемые вопросы

+ + + + + + + + + + + + + + + +
Вопрос Ответ
Чем предпочтительнее использование контейнера кнопок вместо совокупности самостоятельных кнопок? Допустим, на web-странице требуется реализовать кнопки печати заявления, распорядительного акта на основе заявления, журнала распорядительных актов. расписку о получении распорядительного акта. Если расположить эти кнопки друг за другом, то такая web-страница будет смотреться перегруженной. Для облегчения восприятия страницы можно разместить только одну кнопку “Печать”, а при нажатии на нее уже будет раскрываться список вариантов (в виде самостоятельных кнопок) тех документов, которые можно распечатать. Подробнее этот пример будет рассмотрен в разделе методических рекомендаций.
Сколько вложенных компонентов Кнопка может быть у компоненты Контейнер кнопок? Теоретически, количество вложенных Кнопок не ограничено и определяется целесообразностью использования в каждом конкретном случае.
+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Контейнеры.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Контейнеры.html new file mode 100644 index 0000000..27a2528 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Контейнеры.html @@ -0,0 +1,53 @@ + + + + + + + + Web-BPM Docs – Контейнеры + + + + + + + +
+
+
+
+

© 2022 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Набор_фильтров.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Набор_фильтров.html new file mode 100644 index 0000000..206ca58 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Набор_фильтров.html @@ -0,0 +1,181 @@ + + + + + + + + Web-BPM Docs – Набор фильтров + + + + + + +
+
+ + + +
+
+

Набор фильтров

+

Назначение

+

Набор фильтров - это невидимая компонента-контейнер, которая позволяет расположить внутри себя поля (Фильтры), с помощью которых будет происходить фильтрация и указать таблицу по которой будет происходить поиск.

+

Компонента Набор фильтров находится в разделе **Компоненты - Контейнеры -Набор фильтров

+

Свойства

+

Компонента имеет набор общих свойств и подгрузка данных по умолчанию. Ниже отображены свойства, специфичные только для данной компоненты.

+

Общие

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Фильтровать сразу позволяет установить условие по которому будет происходить применение фильтрации. Иными словами, можно задать условие по которому применение фильтра будет происходить после нажатия на кнопку фильтрации, либо динамически, после ввода данных в поле фильтрации. +
    +
  • Null - значение не определено
  • +
  • False - фильтр будет срабатывать только после нажатия на Кнопку для фильтрации - значение по умолчанию
  • +
  • True - фильтр будет срабатывать сразу после внесения изменения в поля фильтра.
Запоминать значения фильтра позволяет восстанавливать значения фильтров при возврате на страницу, т.е.запоминать значения фильтров (сохранять в кэше). При этом значение фильтра, заданное пользователем имеет приоритет над значением фильтра по умолчанию +
    +
  • значение не определено - по умолчанию
  • +
  • true - запоминать значения фильтров
  • +
  • false - не запоминать значения фильтров
Пропустить подгрузку данных (Skip initial loading) позволяет исключать подгрузку данных в таблицу без указания значений фильтров (пустыми фильтрами) +
    +
  • значение не определено - по умолчанию
  • +
  • true - исключает возможность подгрузки данных в таблицу без указания значений фильтров, т.е. при пустых значениях фильтров при первоначальном открытии страницы или по кнопке “Найти” запрос в базу данных (по Графу сущностей таблицы) выполняться не будет
  • +
  • false - позволяет подгружать данные в таблицу без указания значений фильтров, т.е. при первоначальном открытии страницы или по кнопке “Найти” будет осуществляться запрос в базу данных по пустым значениям фильтров
Шаблон текста при валидации позволяет задать шаблон вывода сообщения (текст сообщения), отображаемого в окне ошибки при валидации значений фильтров По умолчанию шаблон сообщения выставлен как:“#{label}: #{message}”, где параметры интерпретируются следующим образом: #{label} - наименование компоненты, в которой произошла ошибка #{message} -текст сообщения об ошибке Примеры возможной настройки: При пустом значений в поле* Message Validation Template* текст в окне об ошибке, отображаемом, например, при не заполнении значения в обязательном поле, будет отображаться по шаблону "#{label}: #{message}", где #{label} - наименование компоненты, в которой произошла ошибка (например, поле ФИО) #{message} - текст сообщения об ошибке (значение по умолчанию Поле обязательно).
+

Сохранение и загрузка значений в локальном хранилище

+

Система позволяет с помощью свойства filterValuesSaveStrategy сохранять значения полей фильтрации в локальном хранилище браузера. А с помощью свойства filterValuesLoadStrategy подставлять значения из локального хранилища браузера в поля фильтрации.

+

Время жизни определяется параметром filter_cleanup_interval_hours.

+

Если страница в контексте BPMN процесса, то сохранение/восстановление работает в рамках одного экземпляра процесса.

+

Сценарий 1. Необходимо подставлять предыдущее значение полей фильтрации при возврате на страницу.

+

Вариант решения: на странице в наборе фильтров (FilterGroup) задать filterValuesSaveStrategy = BY_PAGE_OBJECT_ID, filterValuesLoadStrategy = BY_PAGE_OBJECT_ID.

+

Сценарий 2. Необходимо подставить значений полей фильтрации из страницы 1 на страницу 2, при условии, что имена полей фильтрации и имя набора фильтров (FilterGroup) совпадают.

+

Вариант решения:

+
    + +
  1. + +

    На странице 1

    +
  2. +
  3. + +

    Значения полей фильтрации сохраняем в хранилище по имени объекта. Для этого задаём filterValuesSaveStrategy = BY_OBJECT_NAME.

    +
  4. +
  5. + +

    На странице 2

    +
  6. +
  7. + +

    Значения полей фильтрации берём из хранилища по имени объекта. Для этого задаём filterValuesLoadStrategy = BY_OBJECT_NAME.

    +
  8. +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
filterValuesLoadStrategy Стратегия загрузки значений вложенных компонент-фильтров - BY_PAGE_OBJECT_ID - Подгрузка значений фильтров по ключу = идентификатор страницы + идентификатор объекта + id процесса если это bpmn процесс
- BY_OBJECT_NAME - Подгрузка значений фильтров по ключу = имя объекта + id процесса если это bpmn процесс
- BY_CUSTOM_NAME - Подгрузка значений фильтров по ключу = ключ указанный в поле filterValuesLoadStorageName + id процесса если это bpmn процесс
filterValuesLoadStorageName ключ по которому необходимо загружать значения фильтров из локального хранилища
filterValuesSaveStrategy Стратегия сохранения значений вложенных компонент-фильтров - BY_PAGE_OBJECT_ID - сохранение значений фильтров по ключу = идентификатор страницы + идентификатор объекта + id процесса если это bpmn процесс
- BY_OBJECT_NAME - сохранение значений фильтров по ключу = имя объекта + id процесса если это bpmn процесс
- BY_CUSTOM_NAME - сохранение значений фильтров по ключу = ключ указанный в поле filterValuesSaveStorageName + id процесса если это bpmn процесс
filterValuesSaveStorageName ключ по которому необходимо сохранять значения фильтров в локальное хранилище
+

Функции

+

В ходе настройки свойств компоненты (заданных по умолчанию) может оказаться недостаточно для выполнения поставленной задачи и получения необходимого результата.

+

Для каждой компоненты предусмотрен**перечень функций, расширяющих её базовую функциональность,**которые можно добавить нажатием кнопки.

+

Вследствие технических особенностей реализации функций (-функции, которые выполняются удаленно на сервере приложений,- функции, которые выполняются в браузере пользователя), они имеют разные иконки, но это никак не влияет на их функциональность или предпочтительность использования.

+

Рекурсивно копировать составные объекты сложных компонент

+

TODO: описать

+

Определить права текущего пользователя

+

Определить права текущего пользователя

+

Определить роли текущего пользователя

+

Определить роли текущего пользователя

+

Методические рекомендации по применению

+ +

Часто задаваемые вопросы

+ + + + + + + + + + + + + + + +
Вопрос Ответ
В чем заключаться главная необходимость использования Набора фильтров? Главная необходимость заключается в задании таблицы к которой будет применяться фильтр. Таким образом мы можем наложить несколько фильтров на необходимую нам таблицу и выводить записи которые ищет пользователь.
Можно ли задавать несколько наборов фильтров на странице? Да, при условии что они будут обращаться к разным таблицам.
+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Окно.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Окно.html new file mode 100644 index 0000000..0f13608 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Окно.html @@ -0,0 +1,179 @@ + + + + + + + + Web-BPM Docs – Окно + + + + + + +
+
+ + + +
+
+

Окно

+

Назначение

+

Окно - это составная компонента, которая используется для вывода на экран сообщений (уведомлений, предупреждений, дополнительной информации) Системы, стилизованных под окно системных сообщений операционной системы Windows, в ответ на какую-то активность пользователя, с опциональным выбором одного из возможных последующих действий. Представляет из себя родительский Вертикальный контейнер с вложенными в него дочерними визуальными компонентами, заранее взаимо-увязанными и назначенными стилями.

+

Несмотря на то, что основным предназначением является вывод статической информации для пользователя, компонента может быть модифицирована добавлением источника данных Форма и, вследствие этого, отображать уже динамически получаемую запросом к базе данных информацию, либо сохранять информацию в базу данных при выборе пользователем того или иного варианта действий из заложенных аналитиком при настройке компоненты.

+

Свойства

+

Компонента имеет набор общих свойств. Ниже отображены свойства, специфичные только для данной компоненты.

+ + + + + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Заголовок позволяет указать текст заголовка для контейнера Окно пример возможного значения: Общие сведения
Тело сообщения позволяет указать текст сообщения в теле контейнера Окно пример возможного значения: Общие данные
Кнопки позволяет указать Кнопки навигации
+

Функции

+

В ходе настройки свойств компоненты (заданных по умолчанию) может оказаться недостаточно для выполнения поставленной задачи и получения необходимого результата.

+

Для каждой компоненты предусмотрен перечень функций, расширяющих её базовую функциональность, которые можно добавить нажатием кнопки .

+

Вследствие технических особенностей реализации функций (

+

- функции, которые выполняются удаленно на сервере приложений,

+

- функции, которые выполняются в браузере пользователя), они имеют разные иконки, но это никак не влияет на их функциональность или предпочтительность использования.

+

Рекурсивно копировать составные объекты сложных компонент

+

TODO - описать возможности

+

Определить права текущего пользователя

+

Определить права текущего пользователя

+

Определить роли текущего пользователя

+

Определить роли текущего пользователя

+

Методические рекомендации по применению

+

Пошаговые инструкции по применению компонента в типовых задачах Вы можете найти в разделах:

+
+

Часто задаваемые вопросы

+ + + + + + + + + + + + + + + + + + +
Вопрос Ответ
В каких случаях чаще всего используется элемент Окно Для информирования пользователя о последствиях его возможных действий или событиях, происходящих в Системе (вывод уведомлений, предупреждений и дополнительной информации). С точки зрения реализации бизнес-процесса, для использования компоненты Окно необходимо выделение отдельной Пользовательской задачи (UserTask), эту компоненту нецелесообразно интегрировать в обычную страницу (для такой взаимной интеграции служит компонента Диалог), компоненту Окно целесообразнее использовать когда нужно уведомить пользователя о событиях или вариантах действий в ходе исполнения бизнес - процесса.
Можно ли как-то дополнительно модифицировать компоненту Окно для расширения функциональности? Да Поскольку компонента Окно является составной компонентой, родительской компонентой которой является Вертикальный контейнер, то допустимы совмещение любых известных аналитику приемов и компонент, используемых при проектировании обычной страницы. При большом объеме внесенных модификаций, оригинальными от компоненты останутся только предустановленные стилистические настройки.
Чем отличается функциональностьнабора свойств (Видимость, Обязательность, Недоступно для управления, Подлежит сохранению) у компоненты-контейнера от функциональности одноименных свойств обычной компоненты? Функциональность набора свойств (Видимость, Обязательность, Недоступно для управления, Подлежит сохранению) у компоненты-контейнер аотличается от функциональности одноименных свойств у обычной компоненты тем, что значение указанных свойств наследуется с компоненты-контейнерана все компоненты, входящие в состав такой компоненты-контейнера. Правила наследования таковы, что если у вложенного объекта соответствующее свойство выставлено в значение Истина, то оно следует судьбе этого же свойства у компоненты-контейнера, если же значениесоответствующего свойства у вложенной компоненты Ложь, то наследования значения этого свойства от компоненты-контейнера не происходит, компонента функционирует в соответствии с собственными настройками.
+

Правила наследования значений свойств Подлежит сохранению, Обязательность дочерними компонентами, входящими в состав родительской компоненты контейнера

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
значение свойства у компоненты-контейнера значение свойства дочерней компоненты итоговое значение свойства
True True True
True False False
False True False
False False False
Undefined True True
Undefined False False
+

Правила наследования значений свойства Видимость дочерними компонентами, входящими в состав родительской компоненты контейнера

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
значение свойства у компоненты-контейнера значение свойства дочерней компоненты итоговое значение свойства
True True True
True False False
False True False
False False False
+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Сворачиваемая_панель.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Сворачиваемая_панель.html new file mode 100644 index 0000000..ab3ec68 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Сворачиваемая_панель.html @@ -0,0 +1,107 @@ + + + + + + + + Web-BPM Docs – Сворачиваемая панель + + + + + + +
+
+ + + +
+
+

Сворачиваемая панель

+

Назначение

+

Сворачиваемая панель - это видимая компонента, которая используется для хранения содержимого в небольшом пространстве. Пользователь скрывает или открывает содержимое в сворачиваемой панели, щелкая вкладку графического элемента.

+

Как правило используется для группировки полей объеденных единым смыслом (например, относящихся к организации, либо разделу сотрудников).

+

Свойства

+

Компонента имеет набор общих свойств. Ниже отображены свойства, специфичные только для данной компоненты.

+ + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Заголовок позволяет задать заголовок сворачиваемой панели на странице пример возможного значения: Выбор
Открывать развернутым Задает условие по которому “Сворачиваемая панель” может быть по умолчанию развернута, либо свернута. +
    +
  • свернута- значение по умолчанию
  • +
  • развернута
+

Функции

+

Подгрузка данных по умолчанию

+

Рекурсивно копировать составные объекты сложных компонент

+

TODO - описать возможности

+

Определить права текущего пользователя

+

Определить права текущего пользователя

+

Определить роли текущего пользователя

+

Определить роли текущего пользователя

+

Методические рекомендации по применению

+
+

Часто задаваемые вопросы

+ + + + + + + + + + + + + + + +
Вопрос Ответ
В чем заключаться главная полезность использования Сворачиваемой панели? Главная полезность заключается в возможности пользователю самому определять, хочет ли он чтобы данные внутри сворачиваемой панели отображались на странице или нет.
Какое отображение принимает Сворачиваемая панель на странице пользователя? Настроить отображение по умолчанию можно с помощью свойства компоненты. Таким образом,при переходе на страницу,существует выбор отображать свернутую или раскрытую панель.
+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Стили-контейнеров.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Стили-контейнеров.html new file mode 100644 index 0000000..1672e3c --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Стили-контейнеров.html @@ -0,0 +1,129 @@ + + + + + + + + Web-BPM Docs – Блок с фиксированными кнопками + + + + + + +
+
+ + + +
+
+

Блок с фиксированными кнопками

+ + + + + + + + + + + + + + + + + + +
Название класса css Описание
block-fixed класс для контейнера - оболочки
block-fixed-content класс для контейнера с содержимым
block-fixed-buttons класс для контейнера с прижатыми к низу кнопками
+

Если вам необходимо отобразить фиксированную (не перекрывается другими и не может быть скролом смещена со своей позиции) область с кнопками внизу страницы, то необходимо сделать:

+
    + +
  1. Добавить block-fixed на корневой контейнер (VBox) страницы. В него добавить два других контейнера: +
      + +
    1. для отображения основной области страницы (VBox). На него необходимо добавить класс block-fixed-content
    2. +
    3. для отображения кнопок (VBox). На него необходимо добавить класс block-fixed-buttons
    4. +
    +
  2. +
+

Внимание! Для корректной работы скрипта, объектов с классом «block-content» или «block-menu» должно быть не более одного.

+

Блок для работы со многими столбцами

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Название класса css Описание
block-border рамка для контейнера
block-border-top-line отчертить контейнер линией сверху
block-space-empty класс убирает внутренние отступы до вложенных элементов для контейнеров типа tab или block-content
block-horiz-cols класс выстраивает внутренние контейнеры в виде равновысотных столбцов
block-independent класс для создания автономного скроллируемого блока.
block-top класс для шапки. Цветовой блок, чаще всего используемый для размещения нередактируемых базовых элементов. Все поля формы внутри блока отображаются как подчеркнутый текст
+

При этом, если контейнеры не растянуты по высоте экрана, то автономный блок примет высоту, равною большему из имеющихся блоков.
+Либо будет равен высоте, заданной вручную через соответствующий параметр в студии.

+
    + +
  • HBox - block-horiz-cols +
      + +
    • VBox +
        + +
      • block-independent (Внутри VBox!)
      • +
      • +
      +
    • +
    • VBox
    • +
    +
  • +
+

Внимание! Для корректной работы скрипта, объектов с классом «block-horiz-col» должно быть не более одного.

+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Форма.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Форма.html new file mode 100644 index 0000000..7d7d591 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Форма.html @@ -0,0 +1,162 @@ + + + + + + + + Web-BPM Docs – Форма + + + + + + +
+
+ + + +
+
+

Форма

+

Назначение

+

Форма - это невидимая компонента-контейнер, которая является источником подгрузки данных на странице пользовательского интерфейса. С помощью элемента Форма осуществляется запрос информации из базы данных во вложенные в Форму дочерние компоненты и сохранение введенной пользователем информации из дочерних компонент в базу данных по единственному идентификатору основной единицы создаваемого интерфейса (например, одной задаче в проекте, одному артикулу товара, одному сотруднику в коллективе и прочее).

+

Все другие визуальные компоненты, которые будут отображать или сохранять информацию в/из базы данных на странице приложения, должны обязательно находится внутри компоненты-контейнераФорма, поскольку именно из неё, как из источника данных, они берут ссылки на таблицы и колонки базы данных, с которыми будут оперировать.

+

Форма может работать в двух режимах:

+
    + +
  • После события сохранения (обновления) данных в визуальных компонентах, входящих в компоненту Форма, веб-страница запущенного приложения завершает текущую задачу (BPMNUSER TASK) и переходит к следующей задаче по бизнес-процессу;
  • +
  • После события сохранения (обновления) данных в визуальных компонентах, входящих в компоненту Форма, веб-страница запущенного приложения не завершает текущую задачу (BPMNUSER TASK), не переходит к следующей задаче по бизнес-процессу, а остается в том же экранном интерфейсе. Для принудительного завершения текущей задачи (BPMNUSER TASK) и перехода к следующей задаче по бизнес-процессу, необходимо воспользоваться компонентой Кнопка навигации.
  • +
+

Компонента Форма находится в разделе Компоненты - Контейнеры - Форма

+

Свойства

+

Компонента имеет набор общих свойств, подгрузка данных, подгрузка данных по умолчанию.

+

Подгрузка данных основная

+

+

описывает запрос к базе данных, результаты которого позволяют наполнить вложенные видимые компоненты значениями из базы данных при открытии веб-страницы приложения. Является обязательным к заполнению и настройке.

+
    + +
  • с помощью визуального конструктора запросов позволяет задать Граф сущностей, т.е. указать объекты базы данных, условия и взаимосвязи между ними для получения и отображения информации на веб-странице и/или ее сохранения.
  • +
  • с помощью параметра Переменная процесса с идентификатором позволяет ограничить результаты полученного запроса единственным идентификатором смысловой единицы создаваемого интерфейса. - Datasource Jndi Name - позволяет задать иной источник (базу данных) для выполнения запроса, заданного с помощью элементов базы данных в редакторе Графа сущностей элемента.
  • +
+

Значение данного свойства может быть задано следующим образом: java:/webbpm/AppRepDS, а сам адрес базы данных, логин и пароль для подключения должен быть указан в файле standalone.xml (аналогично тому, как указывается, например, подключение к базе данных безопасности) (рис.1)

+

+

рис.1 Настройка файла standalone.xml

+

В случае, если данное свойство не заполнено, запрос выполняется в базе данных, указанной в конфигурации проекта (во вкладке База данных).

+

Подгрузка данных по умолчанию

+

+

описывает запрос к базе данных, результаты которого позволяют наполнить вложенные видимые компоненты значениями по умолчанию из базы данных при открытии веб-страницы приложения, для тех случаев, когда результат запроса из основной подгрузки данных пуст. Не является обязательным к заполнению и настройке.

+
    + +
  • с помощью визуального конструктора запросов позволяет задать Граф сущностей, т.е. указать объекты базы данных и взаимосвязи между ними для получения и отображения на веб-странице информации по умолчанию, но не ее сохранения
  • +
  • с помощью параметра Переменная процесса с идентификатором позволяет ограничить результаты полученного запроса единственным идентификатором смысловой единицы создаваемого интерфейса.
  • +
+

Datasource Jndi Name - позволяет задать иной источник (базу данных) для выполнения запроса, заданного с помощью элементов базы данных в редакторе Графа сущностей элемента.

+

Значение данного свойства может быть задано следующим образом:java:/webbpm/AppRepDS, а сам адрес базы данных, логин и пароль для подключения должен быть указан в файлеstandalone.xml(аналогично тому, как указывается, например, подключение к базе данных безопасности) (рис.1)

+

+

рис.1 Настройка файла standalone.xml

+

В случае, если данное свойство не заполнено, запрос выполняется в базе данных, указанной в конфигурации проекта (во вкладке База данных).

+ + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Шаблон сообщения валидации (Message validation template) позволяет задать шаблон вывода сообщения (текст сообщения), отображаемого в окне ошибки при валидации значений фильтров. По умолчанию шаблон сообщения выставлен как: "\#{label}: \#{message}", где параметры интерпретируются следующим образом: \#{label} - наименование компоненты, в которой произошла ошибка \#{message} - текст сообщения об ошибке Примеры возможной настройки: При пустом значений в поле* Message Validation Template* текст в окне об ошибке, отображаемом, например, при не заполнении значения в обязательном поле, будет отображаться по шаблону "\#{label}: \#{message}", где \#{label} - наименование компоненты, в которой произошла ошибка (например, поле ФИО) \#{message} - текст сообщения об ошибке (значение по умолчанию Поле обязательно).
+

Базовые функции

+

Функция основных свойств компоненты “Форма в режиме перехода”

+

По умолчанию компонента Форма работает в режиме перехода к следующей задаче послесохранения (обновления) данных.

+

Указанную функциональность обеспечивает функция “Форма с переходом.Основные параметры”, и она автоматически назначается на компоненту Форма при переносе ее из библиотеки компонентов в структуру страницы в конструкторе экранного интерфейса.

+

Является альтернативой функции Форма_без_перехода_Основные_параметры. Для компоненты “Форма” может быть назначена только одна из этих функций, иначе система будет генерировать ошибку при сборке приложения.

+

Описание параметров функции находится в таблице Свойства → Основные параметры.

+

+

+

Дополнительные функции

+

После настройки базовых свойств и функций компоненты может возникнуть необходимость в расширении базовой функциональности компоненты для выполнения поставленной задачи и получения необходимого результата.

+

Для каждой компоненты предусмотрен перечень функций, расширяющих её базовую функциональность, которые можно добавить нажатием кнопки Добавить скрипт.

+

Для удаления из компоненты ошибочно добавленной функции или функции в которой нет необходимости используется элемент Ключ с шестеренкой, расположенный справа от наименования функции. По нажатию на элемент есть возможность Удалить функцию.

+

Вследствие технических особенностей реализации функций (

+

- функции, которые выполняются удаленно на сервере приложений,

+

- функции, которые выполняются в браузере пользователя), они имеют разные иконки, но это никак не влияет на их функциональность или предпочтительность использования.

+

Функция основных свойств компоненты “Форма без перехода”

+

По умолчанию компонента Форма работает в режиме перехода к следующей задаче послесохранения (обновления) данных.

+

Для перевода компоненты Форма в режим “без перехода” следует удалить скрипт Форма с переходом. Основные параметрыиз компоненты (рис.1) и назначить функцию Форма без перехода. Основные параметры (рис. 2).

+

Является альтернативой функции Форма с переходом. Основные параметры. Для компоненты “Форма” может быть назначена только одна из этих функций, иначе система будет генерировать ошибку при сборке приложения.

+

Описание параметров функции находится в таблице Свойства → Основные параметры.

+

+

Рис.1

+

+

Рис.2

+

Определить права текущего пользователя

+

Определить права текущего пользователя

+

Определить роли текущего пользователя

+

Определить роли текущего пользователя

+

Методические рекомендации по применению

+

Пошаговые инструкции по применению компонента в типовых задачах Вы можете найти в разделах:

+ +

Часто задаваемые вопросы

+ + + + + + + + + + + + + + + + + + + + + + + + +
Вопрос Ответ
Если компонента Форма является источником данных для входящих в нее элементов, обязательно ли ее присутствие на любой создаваемой странице ? Нет, не обязательно.Использование компоненты Форма чаще всего обуславливается необходимостью отображения так называемой “карточки сущности”, когда на одной странице нужно вывести в отдельных полях разных типов несколько характеристик одной единицы учета. Но для страниц, содержащих, например, табличное представление данных, так называемый “реестр единиц учета”, компонента Форма не нужна (поскольку компонент Таблица имеет собственный настраиваемый источник данных).
Что такое имплементация и функций и для чего они нужны? Имплементация - это один из вариантов реализации. Функция выполняет некоторое полезное с точки зрения аналитика действие, задуманное им для реализации поставленной задачи. Но внутри функции это полезное действие может быть исполнено разными способами, предложенными разработчиками платформы. Ярким примером служит функция подгрузки данных. Она выполняет полезное действие - подгружает данные, но может подгружать их способом формирования и исполнения SQL запроса, а может подгружать способом считывания из переменной. В данном случае функция одна, а вариантов реализации полезного действия - два. Значит, существует две имплементации одной функции.
Можно ли сохранить/подгрузить данные в визуальные компоненты не только в/из базы данных, но и в/из переменной процесса? Да, можно. Для подгрузки значения в визуальную компоненту из переменной процесса следует воспользоваться функцией Заполнить значением из переменной процесса, а для сохранения значения из визуального компонента в переменную процесса - функцией Сохранить значение в переменную процесса.
Можно ли заполнить визуальный компонент внутри компоненты Форма значением по умолчанию, когда страница с “карточкой сущности” открывается пустой для создания новой записи? Да, можно. Поскольку источником данных для визуального компонента является компонента Форма, то следует воспользоваться функцией Подгрузка данных по умолчанию и настроить подгрузку данных по умолчанию. В самой визуальной компоненте указать таблицу и колонку из ‘графа сущностей для получения значений по умолчанию’. Тогда при открытии веб-страницы приложения компонент Форма сформирует 2 запроса - по основному графу сущности данных не будет (поскольку это веб-страница создания карточки), а по ‘графу сущностей данных по умолчанию’ (с иной логикой формирования запроса, чем в основной ) будут выбраны и смогут быть предустановлены в визуальные компоненты в качестве предлагаемых по умолчанию
Чем отличается функциональность набора свойств (Видимость, Обязательность, Недоступно для управления, Подлежит сохранению) у компоненты-контейнера от функциональности одноименных свойств обычной компоненты? Функциональность набора свойств (Подлежит сохранению,Обязательность, Видимость,Недоступно для управления) у компоненты-контейнера отличается от функциональности одноименных свойств у обычной компоненты тем, что значение указанных свойств наследуется с компоненты-контейнера на все компоненты, входящие в состав такой компоненты-контейнера. Правила наследования таковы, что если у вложенного объекта соответствующее свойство выставлено в значение Истина, то оно следует судьбе этого же свойства у компоненты-контейнера, если же значение соответствующего свойства у вложенной компоненты отличается от значения Истина, то наследования значения этого свойства от компоненты-контейнера не происходит, компонента функционирует в соответствии с собственными настройками.
+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Форма_без_перехода_Основные_параметры.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Форма_без_перехода_Основные_параметры.html new file mode 100644 index 0000000..2e8d513 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Форма_без_перехода_Основные_параметры.html @@ -0,0 +1,56 @@ + + + + + + + + Web-BPM Docs – Форма без перехода. Основные параметры + + + + + + +
+
+ + + +
+
+

Форма без перехода. Основные параметры

+

По умолчанию компонента Форма работает в режиме перехода к следующей задаче после сохранения (обновления) данных.

+

Для перевода компоненты Форма в режим “без перехода” следует удалить () скрипт Форма с переходом. Основные параметры из компоненты (рис.1) и назначить функцию Форма без перехода. Основные параметры (рис. 2).

+

Является альтернативой функции Форма с переходом. Основные параметры. Для компоненты “Форма” может быть назначена только одна из этих функций, иначе система будет генерировать ошибку при сборке приложения.

+

Описание параметров функции находится в таблице Свойства → Основные параметры.

+

+

+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Форма_с_переходом_Основные_параметры.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Форма_с_переходом_Основные_параметры.html new file mode 100644 index 0000000..7df4cad --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/containers/Форма_с_переходом_Основные_параметры.html @@ -0,0 +1,56 @@ + + + + + + + + Web-BPM Docs – Форма с переходом. Основные параметры + + + + + + +
+
+ + + +
+
+

Форма с переходом. Основные параметры

+

По умолчанию компонента Форма работает в режиме перехода к следующей задаче послесохранения (обновления) данных.

+

Указанную функциональность обеспечивает функция “Форма с переходом.Основные параметры”, и она автоматически назначается на компоненту Форма при переносе ее из библиотеки компонентов в структуру страницы в конструкторе экранного интерфейса.

+

Является альтернативой функции Форма_без_перехода_Основные_параметры. Для компоненты Форма может быть назначена только одна из этих функций, иначе система будет генерировать ошибку при сборке приложения.

+

Описание параметров функции находится в таблице Свойства → Основные параметры.

+

+

+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/control-properties.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/control-properties.html new file mode 100644 index 0000000..f1898a9 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/control-properties.html @@ -0,0 +1,140 @@ + + + + + + + + Web-BPM Docs – Основные свойств компонент + + + + + + +
+
+ + + +
+
+

Основные свойств компонент

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Всплывающая подсказка позволяет указать текст всплывающей подсказки, которая появляется при наведении курсора на элемент пример возможного значения: Здесь отображается информация о сотрудниках
Видимость позволяет регулировать видимость элемента на странице - видимый. Значение по умолчанию
- невидимый
Недоступно для управления позволяет регулировать возможность редактирования (управления) элементом на странице - невозможно регулировать
- возможно регулировать. Значение по умолчанию
Подлежит сохранению позволяет указать будет ли значение компоненты передаваться на сервер; если значение установлено в , то
- при сохранении, значение данного поля не будет сохранено
- при использовании в фильтре, значение данного поля не будет участвовать в фильтрации
- значение не определено. Значение по умолчанию
- подлежит сохранению
- не подлежит сохранению
Обязательность позволяет задать обязательность заполнения поля на странице; обязательные поля проверяются на заполненность перед сохранением - значение не определено - значение по умолчанию
- обязательно для заполнения
- необязательно для заполнения
+

Расширенные настройки

+ + + + + + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Inherit Parent
Стили +
    +
  • внутренний отступ - (необходимо указывать единицы измерения)
  • +
  • внешний отступ - (необходимо указывать единицы измерения)
  • +
  • граница - (необходимо указывать единицы измерения)
  • +
  • высота - позволяет указать высоту элемента (необходимо указывать единицы измерения, например, 20px)
  • +
  • ширина - позволяет указать ширину элемента(необходимо указывать единицы измерения, например, 40px)
  • +
  • минимальная высота - позволяет указать минимальную высоту
  • +
  • элемента (необходимо указывать единицы измерения, например, 20px)
  • +
  • минимальная ширина - позволяет указать минимальную ширину
  • +
  • элемента (необходимо указывать единицы измерения,
  • +
  • например, 40px)
  • +
  • максимальная высота - позволяет указать максимальную высоту
  • +
  • элемента (необходимо указывать единицы измерения,
  • +
  • например, 20px)
  • +
  • максимальная ширина - позволяет указать максимальную ширину
  • +
  • элемента (необходимо указывать единицы измерения,
  • +
  • например, 40px)
CSS классы позволяет указать список CSS-классов, которые необходимо применить к элементу
+

Свойства полей для ввода

+ + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
requiredErrorMsg позволяет задать пользовательское сообщение об ошибке обязательности поля текст
+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/editable-grids/EditableGrid.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/editable-grids/EditableGrid.html new file mode 100644 index 0000000..ff42906 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/editable-grids/EditableGrid.html @@ -0,0 +1,244 @@ + + + + + + + + Web-BPM Docs – EditableGrid + + + + + + +
+
+ + + +
+
+

EditableGrid

+

Назначение компонента

+

Редактируемая таблица - это компонента, которая используется для отображения информации из базы данных в табличном виде с возможностью изменения значений.

+

Свойства

+

Компонента имеет набор общих свойств.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Multiselectable позволяет задать возможность единовременного выбора одной или нескольких записей в Таблице; выбранные строки окрашиваются в отличный от других строк цвет +
    +
  • возможность выбора сразу нескольких или одной строки
  • +
  • возможность выбора одной строки - значение по умолчанию
Checkbox Column позволяет поставить отметку в виде флажка на тех записях, которые выбраны пользователем в рамках работы с компонентой Таблица +
    +
  • значение не определено - по умолчанию
  • +
  • Активно - отображать колонку флагов +
  • Не активно - не отображать колонку флагов
Ref To Main Table PK указывает колонку, в которой записан Main Table PK Column
Main Table PK Column указывает id строки на основе, которой будет производиться выборка в таблицу
Row click selection type позволяет задать поведение выбора строк при клике на строку Таблицы +
    +
  • SINGLE_SELECT_CLICK – при клике на строку предыдущие выбранные строки сбрасываются, если не была зажата клавиша Ctrl или Shift- данный метод выбран по умолчанию
  • +
  • MULTI_SELECT_CLICK -при каждом клике на строку, предыдущие выбранные строки не сбрасываются, т.е если кликнули на одну строку, а затем на другую, то первая строка останется выбранной. Клик по уже выбранной строке снимает с неё выделение. Использования данного метода допустимо, в случае, если в таблице доступен выбор нескольких строк (при значениисвойстваMultiselectable)
  • +
  • SUPPRESS_SELECT_CLICK – исключает возможность выбора (выделения) строки по клику. В данном случае, выбор строки представляется возможным только при использовании чекбоксов.
Row edition type позволяет указать тип открытия редакторов ячеек +
    +
  • DOUBLE_CLICK–дефолтное поведение для открытия редакторов ячеек. При двойном клике открывается редактор ячейки.
  • +
  • SINGLE_CLICK– при одинарном клике открывается редактор ячейки. Эта настройка позволяет редактировать значения в ячейках по аналогии с Excel-ем.
  • +
  • NO_CLICK– ни одинарный, ни двойной клик не открывает редактор ячейки. Эта настройка полезна, если вы хотите редактировать значения в ячейках по другому, например при нажатии на кнопку в ячейке.
Row Height позволяет задать высоту строки в таблице в пикселях (px) пример возможного значения: 20
Auto Stretch Columns позволяет задать возможность автоматического выравнивания ширины столбцов по ширине +
    +
  • выравнивать ширину столбцов- значение по умолчанию
  • +
  • не выравнивать ширину столбцов
Pinned Bottom Row Label позволяет задать значение для названия итоговой строки таблицы (строки с агрегирующими значениями по колонкам таблицы) пример возможного значения: Итого
+

Для добавления колонки в таблицу необходимо добавить один из компонент:

+
    + +
  • AutoCompleteGridColumn
  • +
  • CheckBoxGridColumn
  • +
  • ComboboxGridColumn
  • +
  • DateTimePickerGridColumn
  • +
  • NumberFieldGridColumn
  • +
  • OneToManyGridColumn
  • +
  • TextAreaGridColumn
  • +
  • TextFieldGridColumn
  • +
  • TimePickerGridColumn
  • +
+

Настройка колонок компоненты

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование Назначение
Pinned Указывает с какой стороны закрепить колонку
Hidden Указывает видимость колонки
Editable Задает возможность изменять значения в колонке
Header Type Задает тип заголовка колонки(статичный или из переменной процесса)
Sortable Задает возможно сортировать таблицу по значениям колонки
Id Column Задает колонку из базы, откуда будут заполнятся значения в таблице
+

Скрипты

+
    + +
  • MaxAggregationRowValidator -
  • +
  • MinAggregationRowValidator -
  • +
  • RequiredAggregationRowValidator -
  • +
  • EditableGridColumnAggregator - скрипт для подсчёта данных с помощью математических функций или функций агрегации +
      + +
    • aggregationType - тип функции +
        + +
      • BY_COLUMNS - функция агрегации
      • +
      • MATH_EXPRESSION - математическое выражение
      • +
      +
    • +
    • aggregationFunction - Задает дополнительную ячейку со значением, полученным в результате выполнения выбранной функции агрегации. Одно из списка: MAX, MIN, AVG, COUNT, SUM, MULTIPLY. Если задан aggregationType==BY_COLUMNS
    • +
    • columns - колонки для агрегации. Если задан aggregationType==BY_COLUMNS
    • +
    • mathExpression - Математическое выражение. Например ${a_column_id}*${b_column_id}. Можно задать если MATH_EXPRESSION=MATH_EXPRESSION. Допустимые операции: сложение +, вычитание -, умножение *, деление /, остаток от деления %, возведение в степень **. См. https://developer.mozilla.org/en-US/docs/Learn/JavaScript/First_steps/Math#arithmetic_operators. Если задан aggregationType==MATH_EXPRESSION
    • +
    +
  • +
+

Форматеры

+ + + + + + + + + + + + + + + + + + +
Наименование форматера Назначение форматера Настраиваемые значения
NumberAggregationFormatter Форматирует агрегированное значение в ‘итого’. Script, Decimal Delimiter, Decimal Length, Sections Delimiter, Sections Length.
RoundingAggregationFormatter Округляет агрегированное числовое значение в ‘итого’. Decimals.
+

Часто задаваемые вопросы

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Вопрос Ответ
Какие таблицы БД необходимо включать в Граф сущностей редактируемого грида? Только те, в которые необходимо сохранять данные при сохранении или включать и те таблицы, которые используются и для отображения данных в элементах, входящих в таблицу (комбобокс например)? Включать необходимо все таблицы отображаемые в гриде.
При редактировании записей и последующем сохранении в БД производился INSERT новой записи, а не UPDATE уже существующей.? Неправильная настройка компоненты.
Каким образом настраивать свойство “Подлежит сохранению” у самого грида и элементов внутри него? В той ячейке, где мне не нужно сохранять данные в БД ставит значение FALSE ? Свойство"Подлежит сохранению"необходимо указывать только у EditableGrid.
Как будет работать компонента ОТМ внутри грида. При быстром просмотре и добавлении увидели, что нет возможности вызвать диалоговое окно для выбора записи Будет исправлено в последующих версиях
При использовании комбинации ctrl A, ctrl C и ctrl V в строке данные вставляются, но при переключении на другую строку сбрасываются. При копировании значения из одного эдитора в другой, значение вставляется, в случае вставки значения в Combobox необходимо дополнительно выбрать значение из списка.
Каким образом будет настроено удаление записи в гриде? Выделение строк и нажатие кнопки удаления.
Как подвести итоги по колонке, а не по строчке Чтобы подвести итог по колонке, необходимо в нужной колонке указать свойства Aggregation Function
Как обратиться к ячейке, чтобы задать значение с помощью ActionController, например, при нажатии на кнопку на форме Если нажата кнопка “Отклонить” на форме, то для всех ранее отмеченных строк (с помощью флага) в EG выставить значение ячеек статус (ComboBox) в этих строках в значение “Отклонить”. С помощью ActionController нельзя обратиться к ячейке.
Как реализовать проверку заполненности ячейки EG в зависимости от значения другой ячейки с выдачей диалога и последующим возвращением фокуса в ячейку, которая не должна остаться пустой. Как это сделать в рамках одной строчки, а также в рамках разных строчек, а также всего EG (например, в зависимости от каких то агрегатов - итогов по строчкам или колонкам). Если пользователь выбирает в ячейке EG статус “Отклонено” (ComboBox) , то соседняя ячейка в строке “Причина отклонения” не должна остаться пустой - выдать диалог и вернуться в пустую ячейку, не давая из нее выйти без заполнения .• Если за день списано больше 24 часов - то вызвать диалог “Много работаете”• Если в понедельник по первой задаче списано 8 часов, то в среду по связанной задаче не может быть меньше 4 часов.• Перед самым моментом сохранения формы, проверить ВСЕ ячейки EG в колонке “комментарий пользователя” на их заполненность , если в соседних ячейках “Статус” найдены значения “Отклонить”. С помощью ActionController нельзя обратиться к ячейке.
Как задать фиксированную ширину колонки EG в пикселях? Можно задать Width в ячейке. Чтобы зафиксировать ширину нужно задать Width Fixed, временно эта функция не работает, исправляем.
+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/EditableOneToMany.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/EditableOneToMany.html new file mode 100644 index 0000000..d5af35b --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/EditableOneToMany.html @@ -0,0 +1,118 @@ + + + + + + + + Web-BPM Docs – EditableOneToMany + + + + + + +
+
+ + + +
+
+

EditableOneToMany

+

Назначение компонента

+

Составной компонент EditableOneToMany служит для создания и редактирование записей. Работает по аналогии с EditableGrid, но работа происходит в отдельном окне.

+

+

При нажатии на кнопку “Создать”:

+

+

Настройка компонента

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование Назначение Значение по умолчанию
visible задаёт видимость компоненты true
disabled задаёт редактируемость компоненты false
tooltip задаёт текст всплывающей подсказки, которая появляется при наведении курсора на элемент
cssClasses список CSS классов (см. раздел Дизайн)
style список основных свойств: +
    +
  • padding (необходимо указывать единицы измерения)
  • +
  • margin (необходимо указывать единицы измерения). См. http://htmlbook.ru/css/margin. Например для задания отступа справа на 50px необходимо задать значение 0px 50px 0px 0px
  • +
  • border - задает размер, цвет и стиль рамки. Например “20px solid red”. Подробнее http://htmlbook.ru/css/border
  • +
  • height - задает высоту компонента
  • +
  • width - задает ширину компонента
  • +
  • minHeight - задает минимальную высоту компонента
  • +
  • minWidth - задает минимальную ширину компонента
  • +
  • maxHeight - задает максимальную высоту компонента
  • +
  • maxWidth - задает максимальную ширину компонента.
+
    + +
  1. + +

    Настройка кнопок
    +Buttons содержит в себе кнопки: создать, редактировать, удалить. Описание настройки кнопок можно посмотреть в разделе Компоненты > Кнопки.

    +
  2. +
  3. + +

    Настройка EditableGrid
    +Настроить EditableGrid

    +
  4. +
  5. Настройка диалогового окна: +
      + +
    1. Настроить Form
    2. +
    3. Настроить Buttons
      +Buttons содержит в себе кнопки диалогового окна. Описание настройки кнопок можно посмотреть в разделе Компоненты > Кнопки.
    4. +
    +
  6. +
+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/ManyToMany.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/ManyToMany.html new file mode 100644 index 0000000..8d015dc --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/ManyToMany.html @@ -0,0 +1,464 @@ + + + + + + + + Web-BPM Docs – ManyToMany + + + + + + +
+
+ + + +
+
+

ManyToMany

+

Назначение компонента

+

Компонент ManyToMany предназначен для выбора одного или нескольких значений. Выбранные значения будут отображены в поле таблицы.

+

Общий вид типового справочника для множественного выбора представлен на рисунке:

+

+

Логика работы

+

Для осуществления выбора требуемых значений из справочника нужно последовательно выполнить следующие операции:

+

+

Пошаговая работа пользователя с ManyToMany …

+

Поиск значений

+

Пустой добавленный компонент ManyToMany выглядит следующим образом:

+

рис. 1

+

По кнопке «Изменить» (текст кнопки может быть изменен), открывается диалоговое окно заполнения компонента:

+

+

Поиск требуемых значений в справочнике может осуществляться вручную (визуально).

+

Указание требуемых значений

+

После нахождения требуемого значения в справочнике нужно указать на него при помощи мыши. Поле указанного значения окрасится в серый цвет. Общий вид указанного требуемого значения приведен на рисунке:

+

Выбираем значения из справочника

+

Формирование списка требуемых значений

+

После указания требуемого значения в справочнике нужно переместить их в область выбранных значений в правой части диалогового окна при помощи кнопок:

+

Кнопки выбора

+

Добавим значения в список требуемых значений:

+

Добавляем значения, тем самым формируя список значений

+

Сохранение требуемых значений

+

После формирования списка требуемые значения нужно сохранить. Для этого нужно нажать на кнопку «Ок». После выполнения указанного действия диалоговое окно будет закрыто, а выбранное значение отобразится в поле формы, из которой было вызвано диалоговое окно.

+

Компонент заполнен выбранными значениями

+

Настройка компонента

+
    + +
  1. Необходимо добавить компонент ManyToMany на страницу. +

    Для того чтобы данные, отобранные с помощью этого компонента, сохранялись в базу данных, его необходимо вложить в компонент Form.

  2. +
+

+

ManyToMany – это составной компонент, состоящий из след. элементов:

+

+

Здесь:

+

+

Настроим каждый элемент отдельно.

+

шаг 0. Продумать состав данных…

+

Для этого определимся какие таблицы будем использовать:

+

+
    + +
  • Таблица А — таблица, к которой привязывается справочник (таблица B)
  • +
  • Таблица А_В — линковая (Link) таблица, она будет заполняться из А и В
  • +
  • Таблица В — таблица-справочник, из которой будут браться значения
  • +
+

шаг 1. Настройка Form…

+

Если компонент ManyToMany вложен в компонент Form, то предварительно необходимо настроить компонент Form.

+

Для этого в структуру сущностей Form добавьте таблицу А (см. шаг 0).

+

шаг 2. Настройка основной области — LinkField

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование Назначение Значение по умолчанию
visible задаёт видимость компоненты true
disabled задаёт редактируемость компоненты false
tooltip задаёт текст всплывающей подсказки, которая появляется при наведении курсора на элемент
cssClasses список CSS классов (см. раздел Дизайн)
style список основных свойств: +
    +
  • padding (необходимо указывать единицы измерения)
  • +
  • margin (необходимо указывать единицы измерения). См. http://htmlbook.ru/css/margin. Например для задания отступа справа на 50px необходимо задать значение 0px 50px 0px 0px
  • +
  • border - задает размер, цвет и стиль рамки. Например “20px solid red”. Подробнее http://htmlbook.ru/css/border
  • +
  • height - задает высоту компонента
  • +
  • width - задает ширину компонента
  • +
  • minHeight - задает минимальную высоту компонента
  • +
  • minWidth - задает минимальную ширину компонента
  • +
  • maxHeight - задает максимальную высоту компонента
  • +
  • maxWidth - задает максимальную ширину компонента.
rowsAddedEvent событие, которое триггерится при добавлении строк
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование Назначение Значение по умолчанию
LinkFieldRpcService → LinkFieldService linkFieldDao graph Выбор графа сущностей для подгрузки и сохранения данных. Главной сущностью должна быть таблица – справочник (таблица B), который линкуется (refToSecondTablePK)
LinkFieldRpcService LinkFieldService linkFieldDao distinct Исключить дублирующиеся записи
GridColumns Добавление колонок. С помощью кнопки « + » добавляем элементы. Каждый элемент является колонкой(столбцом). Имеет следующие свойства: +
    +
  • field – задает пару таблица:колонка в БД
  • +
  • displayName – отображаемое наименование колонки
  • +
  • sortOrder (ASC | DESC) – указывает порядок сортировки значений в указанном столбце — по возрастанию или по убыванию
  • +
  • width – задает ширину
  • +
  • formatter – задает скрипт для манипуляции с отображением данных при загрузке
LinkFieldSelectionScript multiselectable – возможность выбирать сразу несколько элементов
LinkFieldCustomSaveLoadScript Задание связи между таблицами: +
    +
  • refToSecondTablePKFromLinkTable – ссылка на справочник (таблица В) из линковой таблицы А_В
  • +
  • refToMainTablePKFromLinkTable – ссылка на таблицу А из линковой таблицы А_В
  • +
  • mainTablePKColumn – первичный ключ таблицы-сущности из структуры сущ. Form к которой привязывается справочник (не обязательно главная!)
+

шаг 3. Настройка ChangeButton…

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование Назначение Значение по умолчанию
visible задаёт видимость компоненты true
disabled задаёт редактируемость компоненты false
tooltip задаёт текст всплывающей подсказки, которая появляется при наведении курсора на элемент
cssClasses список CSS классов (см. раздел Дизайн)
style список основных свойств: +
    +
  • padding (необходимо указывать единицы измерения)
  • +
  • margin (необходимо указывать единицы измерения). См. http://htmlbook.ru/css/margin. Например для задания отступа справа на 50px необходимо задать значение 0px 50px 0px 0px
  • +
  • border - задает размер, цвет и стиль рамки. Например “20px solid red”. Подробнее http://htmlbook.ru/css/border
  • +
  • height - задает высоту компонента
  • +
  • width - задает ширину компонента
  • +
  • minHeight - задает минимальную высоту компонента
  • +
  • minWidth - задает минимальную ширину компонента
  • +
  • maxHeight - задает максимальную высоту компонента
  • +
  • maxWidth - задает максимальную ширину компонента.
+ + + + + + + + + + + + + + + + + + +
Наименование Назначение Значение по умолчанию
caption наименование кнопки, видимое пользователю Изменить
confirmation text если задать здесь текст, то пользователю будет отображёно диалоговое окно с этим текстом и кнопками Да/Нет. Используется для подтверждения действия
+

шаг 4. Настройка диалогового окна выбора значений SelectDialog…

+

Диалог выбора (SelectDialog) состоит из двух частей:

+

+
    + +
  • GridsPanel который включается в себя:
    +
  • +
  • ButtonsContainer который содержит в себе кнопки диалогового окна
  • +
+

Настроим каждый блок по отдельности:

+

Настройка GridsPanel


+
    + +
  1. +

    Настройка таблицы списка значений AvailableRecordsGrid

  2. +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование Назначение Значение по умолчанию
visible задаёт видимость компоненты true
disabled задаёт редактируемость компоненты false
tooltip задаёт текст всплывающей подсказки, которая появляется при наведении курсора на элемент
cssClasses список CSS классов (см. раздел Дизайн)
style список основных свойств: +
    +
  • padding (необходимо указывать единицы измерения)
  • +
  • margin (необходимо указывать единицы измерения). См. http://htmlbook.ru/css/margin. Например для задания отступа справа на 50px необходимо задать значение 0px 50px 0px 0px
  • +
  • border - задает размер, цвет и стиль рамки. Например “20px solid red”. Подробнее http://htmlbook.ru/css/border
  • +
  • height - задает высоту компонента
  • +
  • width - задает ширину компонента
  • +
  • minHeight - задает минимальную высоту компонента
  • +
  • minWidth - задает минимальную ширину компонента
  • +
  • maxHeight - задает максимальную высоту компонента
  • +
  • maxWidth - задает максимальную ширину компонента.
+ + + + + + + + + + + + + + + + + + +
Наименование Назначение Значение по умолчанию
GridRpcService → gridService → LoadDao → graph Выбор графа сущностей для подгрузки и сохранения данных. Главной сущностью должна быть та же таблица, что и в графе LinkField. Этот граф может быть чуть более расширенный – например для сортировки.
GridColumns Добавление колонок. С помощью кнопки « + » добавляем элементы. Каждый элемент является колонкой(столбцом). Имеет следующие свойства: +
    +
  • field – задает пару таблица:колонка в БД
  • +
  • displayName – отображаемое наименование колонки
  • +
  • sortOrder (ASC | DESC) – указывает порядок сортировки значений в указанном столбце — по возрастанию или по убыванию
  • +
  • width – задает ширину
  • +
  • formatter – задает скрипт для манипуляции с отображением данных при загрузке
+

2. Настройка кнопок действий Buttons

+

В этом контейнере находятся кнопки управления перемещением в/из таблицы списка значений. Они настраиваются аналогично любым другим кнопкам.

+

3. Настройка таблицы выбранных значений LinkFieldDialog

+

Настраивать необязательно. Настраивается для более детального вывода.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование Назначение Значение по умолчанию
visible задаёт видимость компоненты true
disabled задаёт редактируемость компоненты false
tooltip задаёт текст всплывающей подсказки, которая появляется при наведении курсора на элемент
cssClasses список CSS классов (см. раздел Дизайн)
style список основных свойств: +
    +
  • padding (необходимо указывать единицы измерения)
  • +
  • margin (необходимо указывать единицы измерения). См. http://htmlbook.ru/css/margin. Например для задания отступа справа на 50px необходимо задать значение 0px 50px 0px 0px
  • +
  • border - задает размер, цвет и стиль рамки. Например “20px solid red”. Подробнее http://htmlbook.ru/css/border
  • +
  • height - задает высоту компонента
  • +
  • width - задает ширину компонента
  • +
  • minHeight - задает минимальную высоту компонента
  • +
  • minWidth - задает минимальную ширину компонента
  • +
  • maxHeight - задает максимальную высоту компонента
  • +
  • maxWidth - задает максимальную ширину компонента.
+ + + + + + + + + + + + + + + + + + +
Наименование Назначение Значение по умолчанию
GridColumns Добавление колонок. С помощью кнопки « + » добавляем элементы. Каждый элемент является колонкой(столбцом). Имеет следующие свойства: +
    +
  • field – задает пару таблица:колонка в БД
  • +
  • displayName – отображаемое наименование колонки
  • +
  • sortOrder (ASC | DESC) – указывает порядок сортировки значений в указанном столбце — по возрастанию или по убыванию
  • +
  • width – задает ширину
  • +
  • formatter – задает скрипт для манипуляции с отображением данных при загрузке
LinkFieldSelectionScript multiselectable – возможность выбирать сразу несколько элементов
+

Настройка ButtonsContainer

+

В этом контейнере находятся кнопки управления перемещением в/из таблицы списка значений. Они настраиваются аналогично любым другим кнопкам.

+

Пример минимальной настройки компонента ManyToMany…

+

Задача: Необходимо организовать заполнение поля таблицы «Тема услуги, предоставленной гражданину» (Таблица А_В) путем выбора из справочника «Услуги» (Таблица В).

+

+

Дано:

+
    + +
  • Таблица А - таблица «Тема услуги, предоставленной гражданину»
  • +
  • Таблица А_В - линковая (Link) таблица
  • +
  • Таблица В - таблица-справочник «Услуги»
  • +
+
    + +
  1. В структуру сущностей Form добавляем таблицу А.
  2. +
  3. В Form добавляем компонент ManyToMany.
  4. +
  5. Настраиваем основную область LinkField в ManyToMany: +
      + +
    1. LinkFieldRpcService → LinkFieldService linkFieldDao__→ graph:
      +Главной сущностью является справочник (Таблица В). Добавьте линковую таблицу А_В и установите связь с главной сущностью (стрелка от справочника к линковой таблице).
      +Добавьте все остальные таблицы и связи, если хотите отобразить дополнительную информацию в основной области LinkField и настройте в GridColumns.
    2. +
    3. Зададим связи между таблицами в LinkFieldCustomSaveLoadScript:
    4. +
    +
      + +
    • refToSecondTablePKFromLinkTable – ссылка на справочник (Таблица В) из линковой таблицы А_В.
    • +
    • refToMainTablePKFromLinkTable – ссылка на таблицу А из линковой таблицы А_В.
    • +
    • mainTablePKColumn – выбираем первичный ключ таблицы, добавленной в структуру сущностей Form в п. 1.
    • +
    +
  6. +
  7. Настройка таблицы списка значений AvailableRecordsGrid в SelectDialog: +

    GridRpcService → gridService → LoadDao → graph:

    +

    Главной сущностью является та же таблица, что и в графе LinkField (см. п. 3а). Добавьте все остальные таблицы и связи, если хотите отобразить дополнительную информацию в таблице списка значений и настройте в GridColumns.

    +

    Не добавляйте линковую таблицу в структуру сущностей AvailableRecordsGrid! Это замножит записи.

  8. +
+

Формирование склейки на основе колонки из LinkField

+

SpliceColumnValues - скрипт для формирования склейки на основе колонки из LinkField

+ + + + + + + + + + + + + + + + + + + + + + + + +
Параметр Назначение
prefix префиксный символ склейки
glue разделитель элементов склейки
postfix постфиксный символ склейки
lineBreak флаг для использования переноса строк (если true, то используется перенос строк)
columnOrderNum номер колонки, по которому формируется склейка
+

Пример:

+

При параметрах prefix = ‘[’, glue = ’; ’, postfix = ’]’ и элементах el1, el2, el3, склейка будет выглядеть так: [el1; el2; el3]

+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/ManyToManyField.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/ManyToManyField.html new file mode 100644 index 0000000..c375387 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/ManyToManyField.html @@ -0,0 +1,115 @@ + + + + + + + + Web-BPM Docs – ManyToManyField + + + + + + +
+
+ + + +
+
+

ManyToManyField

+

Назначение компонента

+

Поле, для выбора нескольких значений из справочника.

+

Заполняется по аналогии с ManyToMany. Вместо LinkField заполняется MultiValueField.

+

Настройка компонента

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование Назначение Значение по умолчанию
visible задаёт видимость компоненты true
disabled задаёт редактируемость компоненты false
tooltip задаёт текст всплывающей подсказки, которая появляется при наведении курсора на элемент
cssClasses список CSS классов (см. раздел Дизайн)
style список основных свойств: +
    +
  • padding (необходимо указывать единицы измерения)
  • +
  • margin (необходимо указывать единицы измерения). См. http://htmlbook.ru/css/margin. Например для задания отступа справа на 50px необходимо задать значение 0px 50px 0px 0px
  • +
  • border - задает размер, цвет и стиль рамки. Например “20px solid red”. Подробнее http://htmlbook.ru/css/border
  • +
  • height - задает высоту компонента
  • +
  • width - задает ширину компонента
  • +
  • minHeight - задает минимальную высоту компонента
  • +
  • minWidth - задает минимальную ширину компонента
  • +
  • maxHeight - задает максимальную высоту компонента
  • +
  • maxWidth - задает максимальную ширину компонента.
+

MultiValueField:

+ + + + + + + + + + + + + + + + + + +
Наименование Назначение Значение по умолчанию
graph Граф, по которому будет загружено отображаемое значение. Нет. Обязательно для заполнения.
displayColumn Колонка для отображения. Нет. Обязательно для заполнения.
+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/OneToMany.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/OneToMany.html new file mode 100644 index 0000000..d126653 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/OneToMany.html @@ -0,0 +1,170 @@ + + + + + + + + Web-BPM Docs – OneToMany + + + + + + +
+
+ + + +
+
+

OneToMany

+

Назначение

+

Компонент OneToMany предназначен для выбора значений из справочника.

+

Незаполненный компонент выглядит следующим образом:

+

+

При нажатии на кнопку “…” открывается диалоговое окно:

+

+

Пример заполнения данными компонента:

+

+

Свойства

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование Назначение Значение по умолчанию
visible задаёт видимость компоненты true
disabled задаёт редактируемость компоненты false
tooltip задаёт текст всплывающей подсказки, которая появляется при наведении курсора на элемент
cssClasses список CSS классов (см. раздел Дизайн)
style список основных свойств: +
    +
  • padding (необходимо указывать единицы измерения)
  • +
  • margin (необходимо указывать единицы измерения). См. http://htmlbook.ru/css/margin. Например для задания отступа справа на 50px необходимо задать значение 0px 50px 0px 0px
  • +
  • border - задает размер, цвет и стиль рамки. Например “20px solid red”. Подробнее http://htmlbook.ru/css/border
  • +
  • height - задает высоту компонента
  • +
  • width - задает ширину компонента
  • +
  • minHeight - задает минимальную высоту компонента
  • +
  • minWidth - задает минимальную ширину компонента
  • +
  • maxHeight - задает максимальную высоту компонента
  • +
  • maxWidth - задает максимальную ширину компонента.
+

Пример заполнения:

+

Необходимо добавить компонент OneToMany на страницу.

+

Для того чтобы данные, отобранные с помощью этого компонента, сохранялись в базу данных, его необходимо вложить в компонент Form.

+

+

OneToMany – это составной компонент, состоящий из след. элементов:

+

+

Здесь:

+

+

Настроим каждый элемент отдельно.

+

1. Настройка OneToManyField:

+

Настроить аналогично Autocomplete.

+

2. Настройка кнопки диалогового окна “…”:

+

Настроить SelectButton.

+

3. Настройка диалогового окна:

+

3.1 Настроить Grid.

+

3.2 Настройка FilterPanel:

+

Заполнить FilterFieldSet:

+

В FilterFieldSet вкладываются компоненты из раздела Компоненты > Фильтры, в зависимости от того по полям какого типа собираетесь фильтровать: по дате - FilterDateTimePicker, по тексту - FilterTextField, по списку значений - FilterComboBox, и т. д.

+

Заполнить ButtonsContainer:

+

Контейнер ButtonsContainer содержит в себе кнопки диалогового окна. Описание настройки кнопок можно посмотреть в разделе Компоненты > Кнопки.

+

3.3 Заполнить ButtonsContainer:

+

Контейнер ButtonsContainer содержит в себе кнопки диалогового окна. Описание настройки кнопок можно посмотреть в разделе Компоненты > Кнопки.

+

Пример минимальной настройки компонента OneToMany…

+

Задача: Необходимо организовать выбор организации из списка организаций.

+

Добавляем OneToMany (если предполагается сохранение в БД – то в компонент Form)

+

1. Настройка OneToManyField:

+ + + + + + + + + + + + + + + +
Наименование Действие
graph задайте граф сущностей: в примере используются 2 таблицы: organization – организация и organization_version – версия организации (хранит нужную нам информацию по организации)
Column For Save колонка в БД для загрузки и сохранения значения (в списке – таблицы из структуры сущностей Form, в который вложен настраиваемый компонент) – здесь задаем таблицу:колонку куда будем класть выбранную организацию.
+

2. Настройка диалогового окна:

+

Настраиваем Grid:

+ + + + + + + + + + + + + + + + + + +
Наименование Назначение Результат
graph Граф сущностей аналогичен графу OneToManyField (см. п.1.):
columns[size] Отображаемые колонки в Grid. Для примера настроены две колонки: В результате настроенная таблица в диалоге выбора SelectDialog:
+

Настройка FilterPanel:

+

Необходимо настроить фильтрацию в настроенном Grid. Для примера настроим фильтрацию по колонке Full name.

+

В Full name хранится текст, следовательно необходимо в FilterFieldSet добавить фильтр FilterTextField.

+

FilterTextField настраивается аналогично TextField (имеет те же общие свойства), а также свойство, характерное свойство для фильтров – FilterControl:

+

+

Здесь мы выбрали операцию фильтрации CONTAINS – будут отобраны значения содержание введенные пользователем символы и Column For Filter – таблица:колонка, по которой происходит сортировка – в нашей задаче это поле full_name таблицы organization_version.

+

Скрипты

+

component/grid/renderers/Base64ImageCellRenderer.ts - скрипт для отображения изображения. Необходимо выбрать его в свойстве renderer необходимой колонки.

+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/TreeField.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/TreeField.html new file mode 100644 index 0000000..18a8969 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/TreeField.html @@ -0,0 +1,146 @@ + + + + + + + + Web-BPM Docs – TreeField и TreeMultiField + + + + + + +
+
+ + + +
+
+

TreeField и TreeMultiField

+

Назначение компонента

+

Сложные компоненты для выбора из древовидной структуры одной (TreeField) или нескольких записей (TreeMultiField).

+

TreeField:

+

+

+

TreeMultiField выглядит аналогично.

+

Настройка компонента

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование Назначение Значение по умолчанию
visible задаёт видимость компоненты true
disabled задаёт редактируемость компоненты false
tooltip задаёт текст всплывающей подсказки, которая появляется при наведении курсора на элемент
cssClasses список CSS классов (см. раздел Дизайн)
style список основных свойств: +
    +
  • padding (необходимо указывать единицы измерения)
  • +
  • margin (необходимо указывать единицы измерения). См. http://htmlbook.ru/css/margin. Например для задания отступа справа на 50px необходимо задать значение 0px 50px 0px 0px
  • +
  • border - задает размер, цвет и стиль рамки. Например “20px solid red”. Подробнее http://htmlbook.ru/css/border
  • +
  • height - задает высоту компонента
  • +
  • width - задает ширину компонента
  • +
  • minHeight - задает минимальную высоту компонента
  • +
  • minWidth - задает минимальную ширину компонента
  • +
  • maxHeight - задает максимальную высоту компонента
  • +
  • maxWidth - задает максимальную ширину компонента.
+
    + +
  1. +

    Необходимо настроить TreeGrid:

  2. +
+

Настройка происходит согласно инструкции к TreeGrid.

+

2. Необходимо настроить TreeList:

+ + + + + + + + + + + + + + + + + + +
Наименование Назначение Значение по умолчанию
graph Граф, по которому будет загружено отображаемое значение. Нет. Обязательно для заполнения.
displayColumn Колонка для отображения. Нет. Обязательно для заполнения.
+

3. Необходимо настроить:

+

у TreeField необходимо заполнить Autocomplete.
TreeMultiField необходимо заполнить MultiValueField:

+ + + + + + + + + + + + + + + + + + +
Наименование Назначение Значение по умолчанию
graph Граф, по которому будет загружено отображаемое значение. Нет. Обязательно для заполнения.
displayColumn Колонка для отображения. Нет. Обязательно для заполнения.
+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/filters/index.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/filters/index.html new file mode 100644 index 0000000..97da65f --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/filters/index.html @@ -0,0 +1,63 @@ + + + + + + + + Web-BPM Docs – Фильтры + + + + + + + +
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/filters/Как_добавить_Фильтр_по_числовому_полю_на_страницу_.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/filters/Как_добавить_Фильтр_по_числовому_полю_на_страницу_.html new file mode 100644 index 0000000..aabb755 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/filters/Как_добавить_Фильтр_по_числовому_полю_на_страницу_.html @@ -0,0 +1,193 @@ + + + + + + + + Web-BPM Docs – Как добавить Фильтр по числовому полю на страницу? + + + + + + +
+
+ + + +
+
+

Как добавить Фильтр по числовому полю на страницу?

+

Постановка задачи: необходимо реализовать на пользовательской странице Реестра сотрудников элемент Таблица, где будет содержаться информация о сотрудниках отдела, и два фильтра: Фильтр по числовому полю и Фильтр по текстовому полю, с помощью которых будет осуществляться поиск записей в Таблице по фамилии сотрудника и по стажу работы сотрудника. Элементы на странице должны иметь следующие настройки:

+
    + +
  • Блок фильтрации на странице должен иметь подзаголовок-Фильтр по сотрудникам, реализованный с помощью компоненты Текст
  • +
  • Фильтр по числовому полю (по стажу работы сотрудника):
    +надпись поля -Стаж работы
    +фильтровать по… -таблице Список сотрудников иколонке Стаж
    +операция фильтрации -Равно
    +максимально возможное значение для ввода - 10
  • +
  • Фильтр по текстовому полю (по фамилии сотрудника):
    +надпись поля -Фамилия
    +фильтровать по… -таблице Список сотрудников иколонке Фамилия(name_last)
    +операция фильтрации -Содержит всю подстроку
  • +
  • Таблица с информацией о сотрудниках:
    Граф сущностей в качестве Главной сущности должна быть определена таблица Список сотрудников, где есть вся необходимая информация для вывода на страницу
    +в структуру Таблицы должны быть включены две колонки: Фамилия сотрудникаи Стаж работы сотрудника
  • +
+

Решение задачи:

+

Предполагается, что страница Реестр сотрудников, где необходимо разместить Таблицу и Фильтры,уже создана бизнес-аналитиком и включена в логику бизнес-процесса. Для добавления на страницу и настройки компонент по условиям задачинеобходимо сделать следующее:

+

1. Добавление элементов:

+ +

+

рис.1 Добавление элементаНабор фильтров

+

+

рис.2Добавление элементаТекст

+
    + +
  • Добавить внутрь контейнера Набор фильтров компоненту Текстовое поле (фильтр) (рис.3)
  • +
  • Добавить внутрь контейнера Набор фильтров компоненту Фильтр по числовому полю (рис.4)
  • +
  • Добавить Таблицу,в которой будет отображаться информация о сотрудниках и по значениям которой будет осуществляться поиск записей с помощью фильтров (рис.5)
  • +
+

+

рис.3 Добавление компоненты Фильтр по текстовому полю

+

+

рис.4 ДобавлениекомпонентыФильтр по числовому полю


+

рис.5 Добавление элементаТаблица

+
    + +
  • Для того чтобы условия фильтрации применялись к таблице, необходимо добавить кнопки:Кнопка для фильтрации,Кнопка очистки фильтра. Для этого необходимо добавить Горизонтальный контейнер, который будет содержать данные кнопки. (рис.6 и рис.7)
  • +
+

+

рис.6 Добавление элемента Горизонтальный контейнер

+

+

рис.7 Добавление кнопок: Для фильтрации и Очистки фильтрации

+

2. Настройка элементов:

+
    + +
  • Настройка Набора фильтров: переносим объект Таблица, удерживая левую кнопку мыши, в свойство “Применить к…” Набора фильтров как показано на рисунке(рис.8)
  • +
  • Заполняем свойство Надпись у компоненты Текст значением Фильтр по сотрудникам (рис.9)
  • +
+

+

рис.8 Настройка Набор фильтров

+

+

рис.9 Настройка элемента Текст

+
    + +
  • Заполняем у элемента Таблица следующие свойства: Таблица. Подгрузка данных - Источник данных - Граф сущностей (как описано в разделе - Настройка Графа сущностей) и настраиваем колонки Таблицы (как описано в разделе -Настройка колонок Таблицы) в блоке Таблица. Настроить колонки таблицы согласно условиям задачи(рис.10)
  • +
  • Заполняем свойства компоненты Фильтр по текстовому полю согласно условиям задачи (рис.11)
  • +
  • Заполняем свойства компоненты Фильтр по числовому полю согласно условиям задачи (рис.12)
  • +
+

+

рис.10 Настройка элементаТаблица

+

+

рис.11 Настройка компонентыФильтр по текстовому полю

+

+

рис.12 Настройка компоненты Фильтр по числовому полю

+

Результат выполнения задачи:

+

После применения изменений на странице, в экранной форме пользовательского приложения, мы видим, что условия задачи соблюдены и на странице отображается блок фильтрации, включающий в себя фильтры по имени и фамилии сотрудника (рис.13 и рис.14)

+

+

рис.13 Визуальное отображение выполнения условий задачи

+

+

рис.14 Пример выполнения поиска с примененным условием фильтрации

+

рис.13 Визуальное отображение выполнения условий задачи

+ +
+
+

Attachments:

+
+ +
+ +

image2019-2-27_10-12-42.png (image/png)
+ image2019-2-27_10-31-44.png (image/png)
+ image2019-2-27_11-14-10.png (image/png)
+ image2019-2-27_11-19-57.png (image/png)
+ image2019-2-27_11-22-12.png (image/png)
+ image2019-2-27_11-27-36.png (image/png)
+ image2019-2-28_10-20-51.png (image/png)
+ image2019-2-28_10-25-32.png (image/png)
+ image2019-2-28_10-25-46.png (image/png)
+ image2019-2-28_10-37-29.png (image/png)
+ image2019-2-28_17-8-54.png (image/png)
+ image2019-2-28_17-9-29.png (image/png)
+ image2019-2-28_17-9-59.png (image/png)
+ image2019-3-1_10-28-32.png (image/png)
+ image2019-3-1_10-30-56.png (image/png)
+ image2019-3-1_10-31-39.png (image/png)
+ image2019-3-1_10-32-15.png (image/png)
+ image2019-3-1_10-32-46.png (image/png)
+ image2019-3-1_17-6-26.png (image/png)
+ image2019-3-1_17-7-18.png (image/png)
+ image2019-3-1_17-8-8.png (image/png)
+ image2019-3-1_17-41-39.png (image/png)
+ image2019-3-1_17-42-35.png (image/png)
+ image2019-3-1_17-44-14.png (image/png)
+ image2019-3-11_14-19-40.png (image/png)
+ image2019-3-11_14-20-16.png (image/png)
+ image2019-3-11_16-10-7.png (image/png)
+ image2019-3-11_16-15-42.png (image/png)
+ image2019-3-11_16-16-12.png (image/png)
+ image2019-3-11_16-17-9.png (image/png)
+ image2019-3-11_16-17-41.png (image/png)
+ image2019-3-11_16-19-47.png (image/png)
+ image2019-3-11_16-20-24.png (image/png)
+ image2019-3-11_16-21-11.png (image/png)
+ image2019-3-11_16-21-23.png (image/png)
+ image2019-3-11_16-25-22.png (image/png)
+ image2019-3-15_16-54-5.png (image/png)
+ image2019-3-15_16-59-41.png (image/png)
+ image2019-3-22_10-36-15.png (image/png)
+ image2019-3-22_10-37-45.png (image/png)
+ image2019-3-22_10-41-8.png (image/png)
+ image2019-3-22_10-42-11.png (image/png)
+ image2019-3-22_10-48-28.png (image/png)
+ image2019-3-22_10-49-25.png (image/png)
+ image2019-3-22_10-49-53.png (image/png)
+ image2019-3-22_10-51-12.png (image/png)
+ image2019-3-22_10-53-4.png (image/png)
+ image2019-3-22_10-54-15.png (image/png)
+ image2019-3-22_10-55-26.png (image/png)
+ image2019-3-22_10-56-6.png (image/png)
+ image2019-3-22_10-58-0.png (image/png)
+ image2019-3-22_10-58-26.png (image/png)
+ image2019-3-22_11-1-15.png (image/png)
+ image2019-3-22_11-2-36.png (image/png)
+ image2019-3-22_11-3-1.png (image/png)
+ image2019-3-22_11-15-36.png (image/png)
+ image2019-3-22_11-17-41.png (image/png)

+
+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/filters/Как_добавить_элемент_Фильтр_по_выпадающему_списку_на_страницу_.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/filters/Как_добавить_элемент_Фильтр_по_выпадающему_списку_на_страницу_.html new file mode 100644 index 0000000..15e3a3d --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/filters/Как_добавить_элемент_Фильтр_по_выпадающему_списку_на_страницу_.html @@ -0,0 +1,159 @@ + + + + + + + + Web-BPM Docs – Как добавить элемент Фильтр по выпадающему списку на страницу? + + + + + + +
+
+ + + +
+
+

Как добавить элемент Фильтр по выпадающему списку на страницу?

+

Постановказадачи: необходимо реализовать на пользовательской странице Реестра сотрудников компонент Таблица, где будет содержаться информация о сотрудниках отдела. Поиск по Таблице должен осуществляться по фамилии сотрудника в виде фильтра по текстовому полю и организации к которой относится сотрудник, в виде фильтра по выпадающему списку. Элементы на странице должны иметь следующие настройки:

+
    + +
  • Блок фильтрации на странице должен иметь подзаголовок -Фильтр по сотрудникам, реализованный с помощью компоненты Текст
  • +
  • Фильтр по текстовому полю (по фамилии сотрудника): +

    надпись поля -Фамилия
    +фильтровать по… -таблице Список сотрудников иколонке(name_last)
    +операция фильтрации -Содержит всю подстроку

  • +
  • + +

    Фильтр по статичному выпадающему списку:
    +надпись поля -Организация: фильтровать по… -таблице Организация иколонке Наименование (name)
    +операцию фильтрации -Содержится всю подстроку сортировать по - таблице Организация иколонке Наименование (name)
    +Показывать пользователю -таблица Организация иколонке Наименование (name) Граф сущностей - в качестве Главной сущности должна быть определена таблица Организаций (legal_entities)

    +
  • +
  • Таблица с информацией о сотрудниках:
    Граф сущностей в качестве Главной сущности должна быть определена таблица Список сотрудников, где есть вся необходимая информация для вывода на страницу.
  • +
+

Решение задачи:

+

Предполагается, что страницаРеестр сотрудников,где необходимо разместить Таблицу и Фильтры по текстовому полю,уже создана бизнес-аналитиком и включена в логику бизнес-процесса. Для добавления на страницу и настройки компонент по условиям задачинеобходимо сделать следующее:

+

1. Добавление элементов:

+ +

рис.1 Добавление элементаНабор фильтров

+

рис.2 Добавление элементаТекст

+
    + +
  • Добавить внутрь контейнера Набор фильтров компоненту Фильтр по текстовому полю (рис.3)
  • +
  • Добавить внутрь контейнера Набор фильтров компоненту Фильтр по выпадающему списку (рис.4)
  • +
  • Добавить Таблицу, в которой будет отображаться информация о сотрудниках и по значениям которой будет осуществляться поиск записей с помощью фильтров (рис.5)
  • +
+

+

рис.3 Добавление компонентФильтр по текстовому полю

+

+

рис.4 Добавление компонентФильтр по выпадающему списку

+

+

рис.5 Добавление элемента Таблица

+
    + +
  • Для того чтобы условия фильтрации применялись к таблице, необходимо добавить кнопки:Кнопка для фильтрации,Кнопка очистки фильтра. Для этого необходимо добавить Горизонтальный контейнер, который будет содержать данные кнопки. (рис.6 и рис.7)
  • +
+

+

рис.6 Добавление элементаГоризонтальный контейнер

+

+

рис.7 Добавление кнопок: Для фильтрации и Очистки фильтрации

+

2. Настройка элементов:

+
    + +
  • Настройка Набора фильтров: переносим объект Таблица, удерживая левую кнопку мыши, в свойство “Применить к…” Набора фильтров как показано на рисунке (рис.8)
  • +
  • Заполняем свойство Надпись у компоненты Текст значением Фильтр по сотрудникам (рис.9)
  • +
+

+

рис.8 Настройка Набор фильтров

+

+

рис.9 Настройка элементаТекст

+
    + +
  • Заполняем у элемента Таблица следующие свойства: Таблица. Подгрузка данных - Источник данных - Граф сущностей (как описано в разделе -Настройка Графа сущностей) и настраиваем колонки Таблицы (как описано в разделе -Настройка колонок Таблицы) в блоке Таблица. Настроить колонки таблицы согласно условиям задачи (рис.10)
  • +
+

**
+**

+

+

рис.10 Настройка элемента Таблица

+

+

рис.11Настройка Фильтра по фамилии сотрудника

+
    + +
  • Заполняем свойства компонент Фильтрация по статичному выпадающему списку согласно условиям задачи (рис.12)
  • +
+

+

рис.12 Настройка Фильтра по организации сотрудника

+

Результат выполнения задачи:

+

После применения изменений на странице, в экранной форме пользовательского приложения, мы видим, что условия задачи соблюдены и на странице отображается блок фильтрации, включающий в себя фильтры по фамилии сотрудника и организации (рис.13, рис.14 и рис.15)

+


+

+

рис.13 Визуальное отображение выполнения условий задачи

+

рис. 14 Визуальное отображение выбора значения фильтра из выпадающего списка

+

+

рис.15 Пример выполнения поиска с примененным условием фильтрации

+

**
+**

+ +
+
+

Attachments:

+
+ + +
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/filters/Как_добавить_элемент_Фильтр_по_дате_на_страницу_.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/filters/Как_добавить_элемент_Фильтр_по_дате_на_страницу_.html new file mode 100644 index 0000000..b997c83 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/filters/Как_добавить_элемент_Фильтр_по_дате_на_страницу_.html @@ -0,0 +1,136 @@ + + + + + + + + Web-BPM Docs – Как добавить элемент Фильтр по дате на страницу? + + + + + + +
+
+ + + +
+
+

Как добавить элемент Фильтр по дате на страницу?

+

Постановка задачи: необходимо добавить на пользовательскую страницу Реестр сотрудников элемент Фильтр по дате, с помощью которого будет осуществляться фильтрация (поиск) записей в Таблице сотрудников по Дате рождения сотрудника. Пользовательская страница с Фильтром по дате должна иметь следующие условия:

+
    + +
  • Блок фильтрации на странице должен иметь подзаголовок:“Фильтр по сотрудникам”.
  • +
  • Фильтр по дате должен иметь надпись: “Дата рождения”.
  • +
  • Минимальное возможное значение должно быть - 01.01.1900.
  • +
  • Формат поля должен быть в виде даты, не должно отображаться время
  • +
  • Операция фильтрации -Содержит всю подстроку
  • +
+

Решение задачи:

+

Предполагается, что страница Реестр сотрудниковуже создана бизнес-аналитиком и включаетв себя необходимую Таблицу с информацией о сотрудниках, по записям которой будет осуществляться дальнейший поиск с помощью фильтра по Дате рождения сотрудника. Для добавления на страницу и настройки компонент по условиям задачинеобходимо сделать следующее:

+

1. Добавление элементов:
+
+

+
    + +
  • Добавить элемент Текст в Набор фильтров и заполнить в его свойствах “надпись”, которая будет являться заголовком к нашему фильтру. (рис.1)
  • +
  • Добавить внутрь контейнера Набор фильтров компоненту Фильтр по дате. (рис.2)
  • +
+

+

Рис.1 Добавление элементаТекст

+

Рис.2 ДобавлениекомпонентыФильтр по дате.

+
    + +
  1. Настройка элементов:
  2. +
+
    + +
  • Заполняем свойства компоненты текст как показано на рис.3
  • +
+

+

Рис. 3 Настройка компоненты Текст.

+
    + +
  • Заполняем свойства компоненты фильтр по дате как показано на рис.4
  • +
+

+

Рис. 4 Настройка компоненты Фильтр по дате.

+
    + +
  • Результат выполнения задачи:
  • +
+

После применения изменений на странице, в экранной форме пользовательского приложения, мы видим, что условия задачи соблюдены (рис.5).

+

+

рис.5 Визуальное отображение выполнения условий задачи

+ +
+
+

Attachments:

+
+ + +
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/filters/Как_добавить_элемент_Фильтр_по_полю_многострочного_ввода_на_страницу_.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/filters/Как_добавить_элемент_Фильтр_по_полю_многострочного_ввода_на_страницу_.html new file mode 100644 index 0000000..53563e1 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/filters/Как_добавить_элемент_Фильтр_по_полю_многострочного_ввода_на_страницу_.html @@ -0,0 +1,172 @@ + + + + + + + + Web-BPM Docs – Как добавить элемент Фильтр по полю многострочного ввода на страницу? + + + + + + +
+
+ + + +
+
+

Как добавить элемент Фильтр по полю многострочного ввода на страницу?

+

Постановка задачи: необходимо реализовать на пользовательской странице Карточка реестра сотрудников элементТаблица, где будет содержаться информация о сотрудниках отдела. На странице должны присутствовать фильтр по текстовому полю и фильтр по полю многострочного ввода, с помощью которых будет осуществляться поиск записей в Таблице. Элементы на странице должны иметь следующие настройки:

+
    + +
  • Блок фильтрации на странице должен иметь подзаголовок -Фильтр по сотрудникам, реализованный с помощью компоненты Текст
  • +
  • Фильтр по текстовому полю (по фамилии сотрудника): +

    надпись поля -Фамилия:
    +фильтровать по… -таблице Список сотрудников иколонке Фамилия (name_last)
    +операция фильтрации -Содержит всю подстроку

  • +
  • + +

    Фильтр по полю многострочного ввода:

    +

    надпись поля -Электронный адрес:
    +фильтровать по… -таблице Список сотрудников иколонке Электронный адрес (user_email)
    +операция фильтрации -Содержит всю подстроку

    +
  • +
  • + +

    Таблица с информацией о сотрудниках: в Граф сущностей в качестве Главной сущности должна быть определена таблица Список сотрудников, где есть вся необходимая информация для вывода на страницу в структуру Таблицы должны быть включены две колонки:Фамилия сотрудникаиЭлектронный адрессотрудника

    +
  • +
+

Решение задачи:

+

Предполагается, что страница Карточки реестра сотрудников уже создана бизнес-аналитиком. Для добавления на страницу и настройки компонентов по условиям задачинеобходимо сделать следующее:

+

1. Добавление элементов:

+ +

+

Рис.1 Добавление элемента Набор фильтров

+

+

Рис.2 Добавление элемента Текст

+

+

Рис.3 Добавление компонентФильтр по текстовому полю

+

+

Рис.4 Добавление элемента Таблица

+

+

Рис.5 Добавление элемента Фильтр по полю многострочного ввода

+
    + +
  • Для того чтобы условия фильтрации применялись к таблице, необходимо добавить кнопки:Кнопка для фильтрации,Кнопка очистки фильтра. Для этого необходимо добавить Горизонтальный контейнер, который будет содержать данные кнопки. (рис.6 и рис.7)
  • +
+

рис.6 Добавление элемента Горизонтальный контейнер****

+

рис.7 Добавление кнопок: Для фильтрации и Очистки фильтрации

+

2. Настройка элементов:

+ +

Переносим объект Таблица в свойства “Применить к…” Набора фильтров как показано на рисунке (рис.8)

+

+

Рис.8 Настройка Набор фильтров

+
    + +
  • Заполняем свойство “Надпись” у компоненты Текст (рис.9)
  • +
+

+

Рис.9 Настройка элементаТекст

+
    + +
  • Заполняем у элемента Таблица следующие свойства: Таблица. Подгрузка данных - Источник данных - Граф сущностей (как описано в разделе -Настройка Графа сущностей) и настраиваем колонки Таблицы (как описано в разделе -Настройка колонок Таблицы) в блоке Таблица. Настроить колонки таблицы согласно условиям задачи (рис.10)
  • +
+

+

Рис.10 Настройка элемента Таблица

+
    + +
  • Заполняем свойства компоненты фильтрации по текстовому полю как показано на рис.11
  • +
+

+

Рис.11 Настройка элемента Фильтрация по текстовому полю

+
    + +
  • Заполняем свойства компоненты Фильтрации по полю многострочного ввода как показано на рис.12
  • +
+

+

Рис.12 Настройка элементаФильтрация по полю многострочного ввода

+

Результат выполнения задачи:

+

После применения изменений на странице, в экранной форме пользовательского приложения, мы видим, что условия задачи соблюдены и на странице отображается блок фильтрации, включающий в себя фильтры по имени и фамилии сотрудника (рис.13 и рис.14)

+

+

рис.13 Визуальное отображение выполнения условий задачи

+

рис.14 Пример выполнения поиска с примененным условием фильтрации

+ +
+
+

Attachments:

+
+ + +
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/filters/Как_добавить_элемент_Фильтр_по_статичному_выпадающему_списку_на_страницу_.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/filters/Как_добавить_элемент_Фильтр_по_статичному_выпадающему_списку_на_страницу_.html new file mode 100644 index 0000000..c95f8be --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/filters/Как_добавить_элемент_Фильтр_по_статичному_выпадающему_списку_на_страницу_.html @@ -0,0 +1,140 @@ + + + + + + + + Web-BPM Docs – Как добавить элемент Фильтр по статичному выпадающему списку на страницу? + + + + + + +
+
+ + + +
+
+

Как добавить элемент Фильтр по статичному выпадающему списку на страницу?

+

Постановка задачи: необходимо реализовать на пользовательской странице Реестра сотрудников компонент Таблица, где будет содержаться информация о сотрудниках отдела. Поиск по Таблице должен осуществляться по фамилии сотрудника в виде фильтра по текстовому полю и организации к которой относится сотрудник, в виде фильтра по статичному выпадающему списку. Элементы на странице должны иметь следующие настройки:

+
    + +
  • Блок фильтрации на странице должен иметь +
      + +
    • подзаголовок -Фильтр по сотрудникам, реализованный с помощью компоненты Текст
    • +
    +
  • +
  • Фильтр по текстовому полю (по фамилии сотрудника): +
      + +
    • надпись поля -Фамилия
    • +
    • фильтровать по… -таблице Список сотрудников и колонке (name_last)
    • +
    • операция фильтрации -Содержит всю подстроку
    • +
    +
  • +
  • + +

    Фильтр по статичному выпадающему списку:

    +
      + +
    • надпись поля - Организация:
    • +
    • фильтровать по… -таблице Организация иколонке Наименование (name)
    • +
    • операцию фильтрации -Содержится в “Список значений” - Три элемента. 1) Элемент: Надпись -УФНС РФ Значение - УФНС РФ 2) Элемент: Надпись -ООО Березка Значение -ООО Березка 3) Элемент: Надпись -ИП Чемоданова Значение -ИП Чемоданова
    • +
    +
  • +
  • Таблица с информацией о сотрудниках: в Граф сущностей в качестве Главной сущности должна быть определена таблица Список сотрудников, где есть вся необходимая информация для вывода на страницу.
  • +
+

Решение задачи:

+

Предполагается, что страница Реестр сотрудников, где необходимо разместить Таблицу и Фильтры по текстовому полю, уже создана бизнес-аналитиком и включена в логику бизнес-процесса. Для добавления на страницу и настройки компонент по условиям задачинеобходимо сделать следующее:

+

1. Добавление элементов:

+ +

+

рис.1 Добавление элемента Набор фильтров

+
    + +
  • Добавить внутрь контейнера Набор фильтров компоненту Фильтр по текстовому полю (рис.3)
  • +
  • Добавить внутрь контейнера Набор фильтров компоненту Фильтр по статичному выпадающему списку (рис.4)
  • +
  • Добавить Таблицу, в которой будет отображаться информация о сотрудниках и по значениям которой будет осуществляться поиск записей с помощью фильтров (рис.5)
  • +
+

+

рис.3 Добавление компонент Фильтр по текстовому полю

+

+

рис.5 Добавление элемента Таблица

+
    + +
  • Для того чтобы условия фильтрации применялись к таблице, необходимо добавить кнопки: Кнопка для фильтрации, Кнопка очистки фильтра. Для этого необходимо добавить Горизонтальный контейнер, который будет содержать данные кнопки. (рис.6 и рис.7)
  • +
+

+

рис.6 Добавление элемента Горизонтальный контейнер

+

+

рис.7 Добавление кнопок: Для фильтрации и Очистки фильтрации

+

2. Настройка элементов:

+
    + +
  • Настройка Набора фильтров: переносим объект Таблица, удерживая левую кнопку мыши, в свойство “Применить к…” Набора фильтров как показано на рисунке (рис.8)
  • +
  • Заполняем свойство Надпись у компоненты Текст значением Фильтр по сотрудникам (рис.9)
  • +
+

+

рис.8 Настройка Набор фильтров

+

+

рис.9 Настройка элемента Текст

+
    + +
  • Заполняем у элемента Таблица следующие свойства: Таблица. Подгрузка данных - Источник данных - Граф сущностей (как описано в разделе -Настройка Графа сущностей) и настраиваем колонки Таблицы (как описано в разделе -Настройка колонок Таблицы) в блоке Таблица. Настроить колонки таблицы согласно условиям задачи (рис.10)
  • +
+

+

рис.10 Настройка элементаТаблица

+
    + +
  • Заполняем свойства компонент фильтрации по текстовому полю согласно условиям задачи (рис.11)
  • +
+

+

рис.11 Настройка Фильтра по фамилии сотрудника

+
    + +
  • Заполняем свойства компонент Фильтрация по статичному выпадающему списку согласно условиям задачи (рис.12)
  • +
+

+

рис.12 Настройка Фильтра по организации сотрудника

+

Результат выполнения задачи:

+

После применения изменений на странице, в экранной форме пользовательского приложения, мы видим, что условия задачи соблюдены и на странице отображается блок фильтрации, включающий в себя фильтры по фамилии сотрудника и организации (рис.13 и рис.14)

+

+

рис.13 Визуальное отображение выполнения условий задачи

+

рис.14 Пример выполнения поиска с примененным условием фильтрации

+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/filters/Как_добавить_элемент_Фильтр_по_текстовому_полю_на_страницу_.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/filters/Как_добавить_элемент_Фильтр_по_текстовому_полю_на_страницу_.html new file mode 100644 index 0000000..e7de967 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/filters/Как_добавить_элемент_Фильтр_по_текстовому_полю_на_страницу_.html @@ -0,0 +1,178 @@ + + + + + + + + Web-BPM Docs – Как добавить элемент Фильтр по текстовому полю на страницу? + + + + + + +
+
+ + + +
+
+

Как добавить элемент Фильтр по текстовому полю на страницу?

+

**Постановка задачи: **необходимо реализовать на пользовательской странице Реестра сотрудников компонент Таблица, где будет содержаться информация о сотрудниках отдела, и два Фильтра по текстовому полю, с помощью которых будет осуществляться поиск записей в Таблицепо фамилии сотрудника и по имени сотрудника. Элементы на странице должны иметь следующие настройки:

+
    + +
  • Блок фильтрации на странице должен иметь +
      + +
    • подзаголовок - Фильтр по сотрудникам, реализованный с помощью компоненты Текст
    • +
    +
  • +
  • Фильтр по текстовому полю (по фамилии сотрудника): +
      + +
    • надпись поля -Фамилия
    • +
    • фильтровать по… -таблице Список сотрудников иколонке Фамилия(name_last)
    • +
    • операция фильтрации -Содержит всю подстроку
    • +
    +
  • +
  • Фильтр по текстовому полю (по имени сотрудника): +
      + +
    • надпись поля -Имя
    • +
    • фильтровать по… -таблице Список сотрудников иколонке Имя (name_first)
    • +
    • операция фильтрации -Содержит всю подстроку
    • +
    +
  • +
  • Таблица с информацией о сотрудниках:
    Граф сущностей в качестве Главной сущности должна быть определена таблица Список сотрудников, где есть вся необходимая информация для вывода на страницу
    +в структуру компоненты Таблица должны быть включены две колонки: Фамилия сотрудника и Имя сотрудника
  • +
+

Решение задачи:

+

Предполагается, что страница Реестр сотрудников, где необходимо разместить Таблицу и Фильтры по текстовому полю, уже создана бизнес-аналитиком и включена в логику бизнес-процесса. Для добавления на страницу и настройки компонент по условиям задачинеобходимо сделать следующее:

+

1. Добавление элементов:
+

+ +

+

рис.1 Добавление элемента Набор фильтров

+

+

рис.2Добавление элемента Текст

+
    + +
  • Добавить внутрь контейнера Набор фильтров две компоненты Фильтр по текстовому полю (рис.3)
  • +
  • Добавить Таблицу, в которой будет отображаться информация о сотрудниках и по значениям которой будет осуществляться поиск записей с помощью фильтров (рис.4)
  • +
+

+

рис.3 Добавление компонентФильтр по текстовому полю

+

+

рис.4 Добавление элемента Таблица

+
    + +
  • Для того чтобы условия фильтрации применялись к таблице, необходимо добавить кнопки: Кнопка для фильтрации, Кнопка очистки фильтра. Для этого необходимо добавить Горизонтальный контейнер, который будет содержать данные кнопки. (рис.5 и рис.6)
  • +
+

+

рис.5 Добавление элемента Горизонтальный контейнер

+

рис.6 Добавление кнопок: Для фильтрации и Очистки фильтрации

+

2. Настройка элементов:

+
    + +
  • Настройка Набора фильтров: переносим объект Таблица, удерживая левую кнопку мыши, в свойство “Применить к…” Набора фильтров как показано на рисунке (рис.6)
  • +
  • Заполняем свойство Надпись у компоненты Текст значением Фильтр по сотрудникам (рис.7)
  • +
+

+

рис.6 Настройка Набор фильтров

+

+

рис.7 Настройка элементаТекст

+
    + +
  • Заполняем у элемента Таблица следующие свойства: Таблица. Подгрузка данных - Источник данных - Граф сущностей (как описано в разделе -Настройка Графа сущностей) и настраиваем колонки Таблицы (как описано в разделе -Настройка колонок Таблицы) в блоке Таблица. Настроить колонки таблицы согласно условиям задачи (рис.8)
  • +
  • Заполняем свойства компонент фильтрации по текстовому полю согласно условиям задачи (рис.9, рис.10)
  • +
+

+

рис.8 Настройка элемента Таблица

+

+

рис.9 Настройка Фильтра по фамилии сотрудника

+

+

рис.10 Настройка Фильтра по имени сотрудника

+

Результат выполнения задачи:

+

После применения изменений на странице, в экранной форме пользовательского приложения, мы видим, что условия задачи соблюдены и на странице отображается блок фильтрации, включающий в себя фильтры по имени и фамилии сотрудника (рис.11 и рис.12)

+

+

рис.11 Визуальное отображение выполнения условий задачи

+

+

рис.12 Пример выполнения поиска с примененным условием фильтрации

+ +
+
+

Attachments:

+
+ + +
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/filters/Как_задействовать_компоненту_Фильтр_по_Флагу_.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/filters/Как_задействовать_компоненту_Фильтр_по_Флагу_.html new file mode 100644 index 0000000..0ba3adb --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/filters/Как_задействовать_компоненту_Фильтр_по_Флагу_.html @@ -0,0 +1,181 @@ + + + + + + + + Web-BPM Docs – Как задействовать компоненту Фильтр по Флагу? + + + + + + +
+
+ + + +
+
+

Как задействовать компоненту Фильтр по Флагу?

+

Постановказадачи: на пользовательской странице Реестр задач необходимо обеспечить возможность поиска задач в компоненте Таблица, которые удовлетворяют условию, что их готовность подтверждена руководителем. Это условие задается пользователем с использованием компоненты Флаг, проставлением или снятием отметки в поле компоненты.

+

Страница “Реестр задач” должна иметь следующие настройки:

+
    + +
  • на web-странице должна быть размещена компонента Таблица, в графе сущности которой основной таблицей должна быть назначена “Список задач” (tasks). В нейимеется колонка, в которой хранится отметка о факте подтверждения руководителем готовности той или иной задачи.
  • +
  • на web-странице должна быть размещена компонента Набор фильтров, и настроена на компоненту Таблица
  • +
  • внутри компоненты Набор фильтров следует расположить компоненту Фильтр по Флагу для поиска по параметру “Готовность задачи подтверждена руководителем”
  • +
  • колонка базы данных для поиска по значениям из компоненты Фильтр по флагу -tasks.approved_chief_temp
  • +
+

Решение задачи:

+

Предполагается, что страница Реестр задач уже создана аналитиком и включена в логику бизнес-процесса. Для задействования компоненты Фильтр по флагу необходимо сделать следующее:

+
    + +
  • Добавить на страницу компоненту Таблица, настроить ее граф сущностей и колонки (рис.1)
  • +
+

+

рис.1 Расположение компоненты Таблица и настройка ее основных параметров

+
    + +
  • На одном уровне с компонентом Таблица добавить в состав страницы компоненту Набор фильтров. Связать Компоненту Набор фильтров с компонентой Таблица для указания источника данных фильтрации (рис.2)
  • +
+

+

рис.2 Расположение компоненты Набор фильтров и взаимосвязь с компонентой Таблица

+
    + +
  • Добавить компоненты “Кнопка для фильтрации” и “Кнопка очистки фильтра” внутрь компоненты “Набор фильтров” для возможности запуска процесса фильтрации по значению из компоненты “Постановщик задачи” (кнопки нужны потому, что в свойстве компоненты “Набор фильтров” отключен режим “Фильтровать сразу”)
  • +
+

+

рис.3 Настройка кнопок фильтрации

+
    + +
  • Внутри компоненты Набор фильтров расположить компоненту Фильтр по Флагу (рис.4)
  • +
+

+

рис.4 Настройка основных параметров компоненты Фильтр по Флагу

+
    + +
  • Настроить операцию фильтрации (рис.5)
  • +
+

+

рис.5 Настройка операции фильтрации

+
    + +
  • Настроить колонку фильтрации (рис.6)
  • +
+

+

рис. 6 Настройка колонки фильтрации

+

Значение параметра “Правило обработки MultiValue значений” для данной компоненты не принципиально (“И”/“ИЛИ”), поскольку компонента не предоставляет возможность выбирать несколько значений. В параметре “Конвертер” соответствующий модуль подбирается и выставляется системой автоматически, без участия пользователя

+

На этом настройка страницы закончена, можно собрать приложение и проверить работу компоненты.

+

Результат выполнения задачи:

+

После применения изменений на странице, в экранной форме пользовательского приложения, мы видим, что на странице отображаются таблица и блок фильтрации с компонентой “Фильтр по Флагу” (рис.7 - рис.9)

+ +
+ + + + + + + + + + + + + + + + + + + + + + +
+
+ +

+
+
+ +

+
+
+ +

+
+

рис.7 Открытие страницы.

+ +

В таблице указаны все задачи .

+ +


+

+

рис. 8 Активизация компоненты - проставляем отметку в поле компоненты.

+ +

Пока ничего не меняется, поскольку фильтрация произойдет после нажатия на кнопку (так настроена компонента Набор фильтров).

+ +

В случае настройки компоненты Набор фильтров на режим "Фильтровать сразу", выборка строк произошла бы в тот же момент, как была поставлена отметка в компоненте Флаг.

рис.9 Нажимаем кнопку "Применить", чтобы система отфильтровала список задач и показала только те, в которых есть отметка руководителя о готовности задачи.
+
+ +
+
+

Attachments:

+
+ + +
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/filters/Как_задействовать_компоненту_Фильтр_по_полю_адреса_ФИАС_на_странице_.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/filters/Как_задействовать_компоненту_Фильтр_по_полю_адреса_ФИАС_на_странице_.html new file mode 100644 index 0000000..8b65f8d --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/filters/Как_задействовать_компоненту_Фильтр_по_полю_адреса_ФИАС_на_странице_.html @@ -0,0 +1,144 @@ + + + + + + + + Web-BPM Docs – Как задействовать компоненту Фильтр по полю адреса ФИАС на странице? + + + + + + +
+
+ + + +
+
+

Как задействовать компоненту “Фильтр по полю адреса ФИАС” на странице?

+

Постановказадачи: на пользовательской странице Реестр задач необходимо обеспечить возможность поиска задач в компоненте Таблица по указанному в поле Адрес исполнения задачи с использованием компоненты “Фильтр по полю адреса ФИАС”. Источником данных для компоненты “Фильтр по полю адреса ФИАС” должна служить федеральная информационная адресная система, а выбор адреса из справочника будет осуществляться путем постепенного набора первых букв строки адреса с последующим подбором и отображением сужающегося списка адресов, в которых содержится вводимый пользователем набор букв.

+

Страница “Реестр задач” должна иметь следующие настройки:

+
    + +
  • на web-странице должна быть размещена компонента Таблица, в графе сущности которой основной таблицей должна быть назначена “Список задач” (tasks). В ней имеется колонка с идентификатором адреса GUID, (fiasid).
  • +
  • на web-странице должна быть размещена компонента Набор фильтров, и настроена на компоненту Таблица
  • +
  • внутри компоненты Набор фильтров следует расположить компоненту Фильтр по полю адреса ФИАС для поиска по параметруАдрес
  • +
  • колонка базы данных для поиска по значениям из компоненты Фильтр по полю адреса ФИАС - tasks.fiasid
  • +
+

Решение задачи:

+

Предполагается, что страница Реестр задач уже создана аналитиком и включена в логику бизнес-процесса. Для задействования компоненты Фильтр по полю ввода с подбором значениянеобходимо сделать следующее:

+
    + +
  • Добавить на страницу компоненту Таблица, настроить ее граф сущностей и колонки (рис.1)
  • +
+

+

рис.1 Расположение компоненты Таблица и настройка ее основных параметров

+
    + +
  • На одном уровне с компонентом Таблица добавить в состав страницы компоненту Набор фильтров. Связать Компоненту Набор фильтров с компонентой Таблица для указания источника данных фильтрации (рис.2)
  • +
+

+

рис.2 Расположение компоненты Набор фильтров и взаимосвязь с компонентой Таблица

+
    + +
  • Добавить компоненты “Кнопка для фильтрации” и “Кнопка очистки фильтра” внутрь компоненты “Набор фильтров” для возможности запуска процесса фильтрации по значению из компоненты “Постановщик задачи” (кнопки нужны потому,что в свойстве компоненты “Набор фильтров” отключен режим “Фильтровать сразу”)
    +
  • +
+

рис.3 Настройка кнопок фильтрации

+
    + +
  • Внутри компоненты Набор фильтров расположить компоненту Фильтр по полю адреса ФИАС (рис.4)
  • +
+

+

рис.4 Настройка графа сущности и основных параметров компоненты Фильтр по полю адреса ФИАС

+

“Настроить колонки фильтрации” означает, что после выбора пользователем значения в компоненте “Фильтр по полю адреса ФИАС” система должна найти это значениесреди строк в таблице tasks.fiasid (параметр “Фильтровать по …”)

+

На этом настройка страницы закончена, можно собрать приложение и проверить работу компоненты.

+

Результат выполнения задачи:

+

После применения изменений на странице, в экранной форме пользовательского приложения, мы видим, что на странице отображаются таблица и блок фильтрации с компонентой “Фильтр по полю ввода с подбором значения” (рис.5)

+ +
+ +

+
+ +

+

+

Форма открывается с пустыми полями

+

При вводе первых двух букв система не реагирует, ждет третью

+

После появления очередной буквы, позволяющей индивидуализировать подбираемое значение, показывается список адресов, удовлетворяющих заданному в настройках фильтру (Ленина) и набранной пользователем подстроке (Казань).

+

Из всего списка остались доступными 2 варианта адресов.

+

+

+

Нажимаем кнопку применить и список отфильтровывается только по тем задачам, которые назначены на выбранную улицу.

+

Пример работы компоненты для случая, когда в настройках компоненты “фильтр по умолчанию” не заполнен.

+

рис.5 Работа компоненты в запущенном приложении

+ +
+
+

Attachments:

+
+ + +
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/filters/Как_задействовать_компоненту_Фильтр_по_полю_ввода_с_подбором_значения_на_странице_.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/filters/Как_задействовать_компоненту_Фильтр_по_полю_ввода_с_подбором_значения_на_странице_.html new file mode 100644 index 0000000..5dfe43c --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/filters/Как_задействовать_компоненту_Фильтр_по_полю_ввода_с_подбором_значения_на_странице_.html @@ -0,0 +1,240 @@ + + + + + + + + Web-BPM Docs – Как задействовать компоненту Фильтр по полю ввода с подбором значения на странице? + + + + + + +
+
+ + + +
+
+

Как задействовать компоненту “Фильтр по полю ввода с подбором значения” на странице?

+

Постановказадачи: на пользовательской странице Реестр задач необходимо обеспечить возможность поиска задач в компоненте Таблица по указанным в поле Постановщик задачи несколькимзначениям c использованием компоненты “Фильтр по полю ввода с подбором значения”. Источником данных для компоненты “Фильтр по полю ввода с подбором значения” должен служить справочник сотрудников, а выбор сотрудников (одного или нескольких) из справочника будет осуществляться путем постепенного набора первых букв фамилии с последующим подбором и отображением сужающегося списка сотрудников, в чьих фамилиях содержится вводимый пользователем набор букв.

+

Страница “Реестр задач” должна иметь следующие настройки:

+
    + +
  • на web-странице должна быть размещенакомпонента Таблица, в графе сущности которой основной таблицейдолжна быть назначена “Список задач”(tasks).В нейимеется колонка с идентификатором сотрудника, являющегося постановщиком задачи (reporter_employee_id).
  • +
  • на web-странице должна быть размещенакомпонента Набор фильтров, и настроена на компоненту Таблица
  • +
  • внутри компонентыНабор фильтровследует расположить компоненту Фильтр по полю ввода с подбором значения для поиска по параметруПостановщик задачи
  • +
  • колонка базы данных для поиска по значениям из компоненты* Фильтр по полю ввода с подбором значения- tasks.reporter_employee_id*
  • +
+

Решение задачи:

+

Предполагается, что страница Реестр задач уже создана аналитиком и включена в логику бизнес-процесса. Для задействования компоненты Фильтр по полю ввода с подбором значения необходимо сделать следующее:

+
    + +
  • Добавить на страницу компоненту Таблица, настроить ее граф сущностей и колонки (рис.1)
  • +
+

+

рис.1 Расположение компоненты Таблица и настройка ее основных параметров

+
    + +
  • На одном уровне с компонентом Таблица добавить в состав страницы компоненту Набор фильтров. Связать Компоненту Набор фильтров с компонентой Таблица для указания источника данных фильтрации (рис.2)
  • +
+

+

рис.2 Расположение компоненты Набор фильтров и взаимосвязь с компонентой Таблица

+
    + +
  • Добавить компоненты “Кнопка для фильтрации” и “Кнопка очистки фильтра” внутрь компоненты “Набор фильтров” для возможности запуска процесса фильтрации по значению из компоненты “Постановщик задачи” (кнопки нужны потому,что в свойстве компоненты “Набор фильтров” отключен режим “Фильтровать сразу”)
    +
  • +
+

рис.3 Настройка кнопок фильтрации

+
    + +
  • Внутри компоненты Набор фильтров расположитькомпонентуФильтр по полю ввода с подбором значения (рис.4)
  • +
+

+

рис.4 Настройка графа сущности и основных параметров компонентыФильтр по полю ввода с подбором значения

+
    + +
  • Настроить колонки компоненты Фильтр по полю ввода с подбором значения (рис.5)
  • +
+

рис.5 Настройка колонок компоненты Фильтр по полю ввода с подбором значения

+
    + +
  • Настроить операцию фильтрации (рис.6)
  • +
+

+

рис.6 Настройка операции фильтрации

+
    + +
  • Настроить колонку фильтрации (рис.7)
  • +
+

+

рис.7 Настройка колонки фильтрации

+

Данная настройка означает, что после выбора пользователем одного или несколькихзначений в компоненте “Фильтр по полю ввода с подбором значения” система должна найти хотя бы одно (параметр "Правило обработки MultiValue значений выставлен в значение ‘ИЛИ’) из этих значений по идентификатору employee.employee_id среди строк в таблице tasks.reporter_employee_id (параметр “Фильтровать по …”)

+

На этом настройка страницы закончена, можно собрать приложение и проверить работу компоненты.

+

Результат выполнения задачи:

+

После применения изменений на странице, в экранной форме пользовательского приложения, мы видим, что на странице отображаются таблица и блок фильтрации с компонентой “Фильтр по полю ввода с подбором значения” (рис.8 - рис.13)

+ +
+ + + + + + + + + + + + + + + + + + + + + + +
+
+ +

+
+
+ +

+
+
+ +

+
+

рис.8 Открытие страницы.

+ +

В таблице указаны все задачи всех постановщиков.

+ +

После ввода первой буквы будущей строки с фамилией пока ничего не происходит.

+

рис. 9 Активизация компоненты после ввода второй буквы будущей строки с фамилией.

+ +

Компонента согласно своим настройкам начинает предлагать варианты, в которых содержится сочетание букв "ро" (как в начале, так и любом месте строки).

рис.10 После ввода дополнительных букв будущей строки фамилии компонента сужает список предлагаемых вариантов.
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + +
+
+ +

+
+
+ +

+
+
+ +

+
+

рис.11 Выбор одного из вариантов и поиск следующего.

+ +

Клавишей ввод на клавиатуре подтверждаем первую фамилию из списка, предложенного компонентой.

+ +

Продолжаем набирать буквы для поиска фамилии следующего постановщика задачи.

+

рис.12 Выбор одновременно двух сотрудников осуществлен.

+ +

Нажимаем кнопку "Применить", чтобы система отфильтровала список задач, в которых постановщиками являются эти сотрудники

рис.13 Система отфильтровала список задач только по тем сотрудникам, которые были указаны в компоненте как постановщики задач
+
+ +
+
+

Attachments:

+
+ + +
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/filters/Фильтр_по_выпадающему_списку.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/filters/Фильтр_по_выпадающему_списку.html new file mode 100644 index 0000000..6ee6027 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/filters/Фильтр_по_выпадающему_списку.html @@ -0,0 +1,116 @@ + + + + + + + + Web-BPM Docs – Фильтр по выпадающему списку + + + + + + +
+
+ + + +
+
+

Фильтр по выпадающему списку

+

Назначение

+

Фильтр по выпадающему списку - это видоизмененная компонента выпадающий список, дополненная функцией поиска в связанной с ней компоненте Таблица по введенному пользователем значению. Иерархически обязательно должна быть расположена внутри компоненты Набор фильтров, в качестве параметра содержит указание на колонку таблицы, по которой осуществляется поиск. В зависимости от настроек родительской компоненты Набор фильтров в запущенном приложении выполняет поиск либо только после нажатия соответствующей кнопки (компонента Кнопка для фильтрации), либо по мере ввода пользователем искомого значения (так называемый, “живой поиск”).

+

Компонента Фильтр по выпадающему списку находится в разделе Фильтры - Фильтр по выпадающему списку.

+

Свойства

+

Компонента имеет набор общих свойств, заполнить значением по умолчанию. Выпадающий список, Подгрузка данных, Фильтр по дате, Заполнить значением из переменной процесса. Ниже отображены свойства, специфичные только для данной компоненты.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Подсказка позволяет создать подсказку, расположенную внутри элемента пример возможного значения: Введите год
Надпись позволяет задать наименование поля, которое будет отображаться на странице пример возможного значения:Отчетный год
Зависит от позволяет указать объект (родителя), напримерВыпадающий список, по идентификатору которого будут отображаться сведения в текущем зависимом элементе
Initial value позволяет задать значение поля по умолчанию, которое будет отображаться на странице пример возможного значения: 2019
+

Функции

+

В ходе настройки свойств компоненты (заданных по умолчанию) может оказаться недостаточно для выполнения поставленной задачи и получения необходимого результата.

+

Для каждой компоненты предусмотрен перечень функций, расширяющих её базовую функциональность, которые можно добавить нажатием кнопки Добавить скрипт.

+

Вследствие технических особенностей реализации функций (функции, которые выполняются удаленно на сервере приложений, функции, которые выполняются в браузере пользователя), они имеют разные иконки, но это никак не влияет на их функциональность или предпочтительность использования.

+

Cохранить значение в переменную процесса любого типа

+

сохранить значение в переменную процесса любого типа

+

Заполнить значением из переменной любого типа

+

Заполнить значением из переменной любого типа

+

Определить права текущего пользователя

+

Определить права текущего пользователя

+

Определить роли текущего пользователя

+

Определить роли текущего пользователя

+

Методические рекомендации по применению

+
+

Часто задаваемые вопросы

+ + + + + + + + + + + + + + + +
Вопрос Ответ
Можно ли в Фильтре по выпадающему списку ввести значение в ручную? Нет.Фильтр по выпадающему списку не подразумевает под собой ввод значений вручную.
Все ли свойства компоненты обязательны для заполнения? Нет.Свойства компоненты определяются в зависимости от решаемой задачи.
+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/filters/Фильтр_по_дате.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/filters/Фильтр_по_дате.html new file mode 100644 index 0000000..b30df8e --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/filters/Фильтр_по_дате.html @@ -0,0 +1,140 @@ + + + + + + + + Web-BPM Docs – Фильтр по дате + + + + + + +
+
+ + + +
+
+

Фильтр по дате

+

Назначение

+

Фильтр по дате - это видоизмененная компонента Дата, дополненная функцией поиска в связанной с ней компоненте Таблица по введенному пользователем значению. Иерархически обязательно должна быть расположена внутри компоненты Набор фильтров, в качестве параметра содержит указание на колонку таблицы, по которой осуществляется поиск. В зависимости от настроек родительской компоненты Набор фильтровв запущенном приложении выполняет поиск либо только после нажатия соответствующей кнопки (компонента Кнопка для фильтрации), либо по мере ввода пользователем искомого значения (так называемый, “живой поиск”).

+

Компонента Фильтр по дате находится в разделе Фильтры - Фильтр по дате.

+

Свойства

+

Компонента имеет набор общих свойств. Ниже отображены свойства, специфичные только для данной компоненты.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Подсказка позволяет создать подсказку, расположенную внутри элемента пример возможного значения:Введите год
Надпись позволяет задать наименование поля, которое будет отображаться на странице пример возможного значения: Год
Initial value позволяет задать значение поля по умолчанию, которое будет отображаться на странице пример возможного значения: 01.01.2017
Минимальная дата позволяет задать минимально возможное значение числа, меньше которого пользователь ввести не сможет пример возможного значения:01.01.2017
Максимальная дата позволяет задать максимально возможное значение числа, больше которого пользователь ввести не сможет пример возможного значения: 31.12.2017
формат позволяет задать формат для вывода даты со временем или только дату
В виде календаря позволяет задать возможность отображения в виде развернутого календаря
+

Свойство Фильтра по дате: Задать операцию фильтрации

+

Операция - позволяет задать условие, по которому будет осуществляться фильтрация данных по введенному пользователем значению

+

пример возможного значения: Равно

+

+

Свойство Фильтра по дате: Настроить колонки фильтрации

+

+

Фильтровать по - позволяет указать таблицу и колонку базы данных, к которой будет применяться фильтрация.

+

Выбор таблицы и колонки базы данных в данном свойстве будет доступен только после заполнения свойства “Применить к…” у Набора фильтрации

+

пример возможного значения:

+

Свойство Фильтра по дате: Заполнить значением из переменной

+

позволяет указать переменную процесса, значение которой будет передаваться в поле и отображаться по умолчанию

+

Функции

+

В ходе настройки свойств компоненты (заданных по умолчанию) может оказаться недостаточно для выполнения поставленной задачи и получения необходимого результата.

+

Для каждой компоненты предусмотрен перечень функций, расширяющих её базовую функциональность, которые можно добавить нажатием кнопки Добавить скрипт

+

Вследствие технических особенностей реализации функции (функции выполняются удаленно на сервере приложений, функции выполняются в браузере пользователя), они имеют разные иконки, но это никак не влияет на их функциональность или предпочтительность использования.

+

Cохранить значение в переменную процесса

+

сохранить значение в переменную процесса любого типа

+

Заполнить значением из переменной

+

Заполнить значением из переменной любого типа

+

Определить права текущего пользователя

+

Определить права текущего пользователя

+

Определить роли текущего пользователя

+

Определить роли текущего пользователя

+

Методические рекомендации по применению

+

Пошаговые инструкции по применению компонента в типовых задачах Вы можете найти в разделах:

+ +

Часто задаваемые вопросы

+ + + + + + + + + + + + + + + +
Вопрос Ответ
Можно ли вносить данные в поле вручную? Да, можно. При условии, что введенные значения соответствуют маске ввода.
Что будет если ввести буквенные значения в фильтр по дате? В поле Фильтр по дате можно ввести буквенные значения, но при переходе в другое поле, введенный текст очистится.
+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/filters/Фильтр_по_компоненте_Флаг.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/filters/Фильтр_по_компоненте_Флаг.html new file mode 100644 index 0000000..26b5678 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/filters/Фильтр_по_компоненте_Флаг.html @@ -0,0 +1,115 @@ + + + + + + + + Web-BPM Docs – Фильтр по компоненте Флаг + + + + + + +
+
+ + + +
+
+

Фильтр по компоненте Флаг

+

Назначение

+

Фильтр по компоненте Флаг - это видоизмененная компонента Флаг, дополненная функцией поиска в связанной с ней компоненте Таблица по введенному пользователем значению. Иерархически обязательно должна быть расположена внутри компоненты Набор фильтров, в качестве параметра содержит указание на колонку таблицы, по которой осуществляется поиск. В зависимости от настроек родительской компоненты Набор фильтров в запущенном приложении выполняет поиск либо только после нажатия соответствующей кнопки (компонента Кнопка для фильтрации), либо по мере ввода пользователем искомого значения (так называемый, “живой поиск”).

+

Компонента Фильтр по компоненте Флаг находится в разделе Фильтры - Фильтр по компоненте Флаг

+

Свойства

+

Компонента имеет набор общих свойств. Ниже отображены свойства, специфичные только для данной компоненты.

+ + + + + + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Подсказка позволяет создать подсказку, расположенную внутри элемента пример возможного значения:Введите год
Надпись позволяет задать наименование поля, которое будет отображаться на странице пример возможного значения: Год
Initial value позволяет задать значение, которое примет компонента при открытии web-страницы, значение типа Boolean (TRUE, FALSE, UNDEFINED) TRUE, FALSE, UNDEFINED(по умолчанию)
+

Свойство Фильтра: Задать операцию фильтрации

+

позволяет задать условие, по которому будет осуществляться фильтрация данных по введенному пользователем значению

+

Свойство Фильтра: Настроить колонки фильтрации

+

позволяет указать таблицу и колонку базы данных, к которой будет применяться фильтрация

+

Выбор таблицы и колонки базы данных в данном свойстве будет доступен только после заполнения свойства “Применить к…” у Набора фильтрации

+

позволяет указать правило работы фильтрации в режиме MultiValue, когда пользователем выбраны несколько значений в компоненту.

+

Данная настройка определяет оператор соединения для выбранных пользователем значений

+

Свойство компоненты: Поле ввода с подбором значения.

+

Заполнить значением из переменной любого типа

+

позволяет указать переменную процесса, значение которой будет передаваться в поле и отображаться по умолчанию

+

Свойство компоненты: Поле ввода с подбором значения. Заполнить значением по умолчанию

+

сохранить значение в переменную процесса любого типа

+

заполнить значением из переменной любого типа

+

склеить несколько значений

+

Методические рекомендации по применению

+

Пошаговые инструкции по применению компонента в типовых задачах Вы можете найти в разделах:

+
+

Часто задаваемые вопросы

+ + + + + + + + + + + + + + + +
Вопрос Ответ
C какими типами данных применяется компонента Фильтр по комопненте Флаг? Поскольку возможными значениями компоненты Фильтр по компоненте Флаг (как и самой компоненты Флаг) являются логические значения, то обе компоненты работают с типом данных Boolean.
Все ли свойства компоненты обязательны для заполнения? Нет.Свойства компоненты определяются в зависимости от решаемой задачи.
+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/filters/Фильтр_по_полю_адреса_ФИАС.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/filters/Фильтр_по_полю_адреса_ФИАС.html new file mode 100644 index 0000000..69e2c47 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/filters/Фильтр_по_полю_адреса_ФИАС.html @@ -0,0 +1,173 @@ + + + + + + + + Web-BPM Docs – Фильтр по полю адреса ФИАС + + + + + + +
+
+ + + +
+
+

Фильтр по полю адреса ФИАС

+

Назначение

+

Фильтр по полю адреса ФИАС - это видоизмененная компонента поле адреса ФИАС, дополненная функцией поиска в связанной с ней компоненте Таблица по введенному пользователем значению. Иерархически обязательно должна быть расположена внутри компоненты Набор фильтров, в качестве параметра содержит указание на колонку таблицы, по которой осуществляется поиск. В зависимости от настроек родительской компоненты Набор фильтров в запущенном приложении выполняет поиск либо только после нажатия соответствующей кнопки (компонента Кнопка для фильтрации), либо по мере ввода пользователем искомого значения (так называемый, “живой поиск”).

+

Компонента Фильтр по полю адреса ФИАС находится в разделе Фильтры - Фильтр по полю адреса ФИАС.

+

Свойства

+

Компонента имеет набор общих свойств. Ниже отображены свойства, специфичные только для данной компоненты.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Подсказка позволяет создать подсказку, расположенную внутри элемента пример возможного значения: Выберите район
Надпись позволяет задать наименование поля, которое будет отображаться на странице пример возможного значения: Район
Минимальное количество символов позволяет задать количество символов, после ввода которых пользователем, компонента начинает подбор и вывод вариантов, соответствующих уже введенной пользователем подстроке
Исторический адрес Если отметка поставлена, то компоненте предписывается осуществлять поиск не только по актуальным вариантам адресов, но и по историческим версиям этих адресов. Если отметка снята, то компоненте предписывается осуществлять поиск только по актуальным вариантам адресов, игнорируя исторические версии этих адресов. Информация о том, какой версией является то или иное наименование адреса (актуальной или исторической) компонента берет из федеральной информационной адресной системы в режиме чтения как исходное данное, и не осуществляет присвоение или снятие этого признака своей активностью. +
    +
  • подбор только среди актуальных версий адресов - значение по умолчанию
  • +
  • подбор среди актуальных и исторических версий адресов
Фильтр по умолчанию Предписывает компоненте при отображении вариантов отфильтровать адреса по указанной в этом параметре подстроке. Используется как дополнительный предустановленный фильтр к подстроке, вводимой пользователем.
Количество строк Указывает компоненте максимально допустимое количество вариантов для отображения в выпадающем списке при подборе пользователем интересующего значения.
Минимальный уровень адреса Ограничивает область поиска адреса по вводимой пользователем подстроке “сверху” - то есть указанным элементом адреса и его нижележащими в иерархии дочерними элементами. При указании “Минимального уровня поиска адреса” в значение “Субъект РФ” поиск по введенной пользователем в компоненту подстроке будет осуществляться по всем Субъектам РФ и по всем Районам субъекта, и по всем Городам, и по всем Районам города, и по всем Населенным пунктам, и по всем Улицам. Данную настройку могут ограничивать параметры: +
    +
  • “Фильтр по умолчанию” - тогда поиск уже не по всем регионам (и прочим элементам), а только по тем, которые содержат подстроку из фильтра
  • +
  • “Максимальный уровень адреса” - тогда поиск будет опускаться по иерархии только до того уровня детализации, который указан в параметре “Максимальный уровень адреса”
Максимального уровня поиска адреса Ограничивает область поиска адреса по вводимой пользователем подстроке “снизу” - то есть указанным элементом адреса и его вышележащими в иерархии родительскими элементами. При указании “Максимального уровня поиска адреса” в значение “Улица” поиск по введенной пользователем в компоненту подстроке будет осуществляться по всем Улицам во всех Населенных пунктах, всех Районов города, всехГородов, всех Районов субъекта и всех Субъектов РФ. Данную настройку могут ограничивать параметры: +
    +
  • “Фильтр по умолчанию”* - тогда поиск уже не по всем улицам (и прочим родительским элементам), а только по тем, которые содержат подстроку из фильтра
  • +
  • “Минимальный уровень адреса” - тогда поиск будет подниматься по иерархии только до того уровня детализации, который указан в параметре*“Минимальный уровень адреса”
Показывать краткий вид типа указывает компоненте на стиль отображения строки адреса - наименование адресных элементов (таких как город, улица, район и т.п.) отображать в принятых сокращениях (г., ул.,р-н) или полностью. +
    +
  • отображать полные наименования адресных элементов - значение по умолчанию
  • +
  • отображать сокращения адресных элементов
Операция позволяет задать условие, по которому будет осуществляться фильтрация данных по введенному пользователем значению
Фильтровать по … позволяет указать таблицу и колонку базы данных, к которой будет применяться фильтрация Выбор таблицы и колонки базы данных в данном свойстве будет доступен только после заполнения свойства “Применить к…” у Набора фильтров
Правило обработки MultiValue позволяет указать правило работы фильтрации в режиме MultiValue, когда пользователем выбраны несколько значений в компоненту. Данная настройка определяет оператор соединения для выбранных пользователем значений Значение по умолчанию - “или”. Данная настройка имеет значение только для компонентов, поддерживающих множественный ввод (возможность указания нескольких значений в строке поиска). Компонента Фильтр по полю адреса не поддерживает множественный ввод, поэтому выбор текущего параметра не повлияет на результаты.
+

Свойство компоненты: Поле адреса ФИАС. Настройка

+

Подгрузка данных

+

Источник подгрузки значений адресов конфигурируется в файле standalone.xml проекта в секции datasource jndi-name=“java:jboss/datasources/fias-ds” pool-name=“FIASDS” enabled=“true” use-java-context=“true”.

+

Настройка секции на источник данных происходит при инициации проекта техническим специалистом и используется аналитиком “как есть”. В составе компоненты настройка параметров подключения и подгрузки данных не осуществляется.

+

Функции

+

В ходе настройки свойств компоненты (заданных по умолчанию) может оказаться недостаточно для выполнения поставленной задачи и получения необходимого результата.

+

Для каждой компоненты предусмотрен перечень функций, расширяющих её базовую функциональность, которые можно добавить нажатием кнопки Добавить скрипт.

+

Вследствие технических особенностей реализации функций (функции, которые выполняются удаленно на сервере приложений,- функции, которые выполняются в браузере пользователя), они имеют разные иконки, но это никак не влияет на их функциональность или предпочтительность использования.

+

Сохранить значение в переменную процесса любого типа

+

сохранить значение в переменную процесса любого типа

+

Заполнить значением из переменной любого типа

+

заполнить значением из переменной любого типа

+

Определить права текущего пользователя

+

Определить права текущего пользователя

+

Определить роли текущего пользователя

+

Определить роли текущего пользователя

+

Сконвертировать значение в целочисленный тип

+

Сконвертировать значение в целочисленный тип

+

Заполнить значением по умолчанию

+

Заполнить значением по умолчанию

+

Методические рекомендации по применению

+

Пошаговые инструкции по применению компонента в типовых задачах Вы можете найти в разделах:

+ +

Часто задаваемые вопросы

+ + + + + + + + + + + + +
Вопрос Ответ
Значение какого типа возвращает компонента? В общем случае компонента возвращает значение тестового типа в виде длинного идентификатора (для поиска записи в базе данных). Для использования значения выбранного адреса на экранной форме посредством компоненты Обработка событий, аналитику доступны несколько методов, которые возвращают разные значения.
+

В условиях сравнения компоненты Обработка событий могут использоваться методы:

+

Метод “Получить значение” возвращает идентификатор (так называемый GUID) выбранного адреса в строковом виде, например: {“version”:“1.0”,“aoid”:“b026a0f9-9478-4c61-a55f-95b38cb099c1”,“aoid_p1”:“c6d874d0-a7e8-46a1-b345-e2e1e9758c59”,“aoid_p2”:“625866a1-1278-4883-8dc5-ba34e0c463c4”,“aoid_p3”:“fc50add0-c3c7-4f07-99cd-8831166e6619”,“aoid_p4”:null,“aoid_p5”:null,“guid”:“b026a0f9-9478-4c61-a55f-95b38cb099c1”}

+

Метод “Получить значение как текст” возвращает строку адреса в человекочитаемом виде в строковом виде, например “Респ Дагестан, р-н Буйнакский, с Верхнее Казанище, ул Ленина”

+

В секции Тогдакомпоненты Обработка событий могут использоваться методы:

+

Метод"ФИАС.Задать значение" выставляет в компоненте адрес по идентификатору GUID ({“version”:“1.0”,“aoid”:“b026a0f9-9478-4c61-a55f-95b38cb099c1”,“aoid_p1”:“c6d874d0-a7e8-46a1-b345-e2e1e9758c59”,“aoid_p2”:“625866a1-1278-4883-8dc5-ba34e0c463c4”,“aoid_p3”:“fc50add0-c3c7-4f07-99cd-8831166e6619”,“aoid_p4”:null,“aoid_p5”:null,“guid”:“b026a0f9-9478-4c61-a55f-95b38cb099c1”}). Используется для полей - приемника информации об адресе (как показано на скриншоте).

+

Метод “ФИАС.Получить значение” возвращает значение - идентификатор GUID, как из источника данных об адресе для последующей вставки в другое поле ФИАС.

+

Метод "ФИАС.Получить значение"возвращает строку адреса в человекочитаемом виде в строковом виде,как из источника данных об адресе для последующей вставки в другое читаемое тестовое поле (например, Компонент Текстовое поле).

+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/filters/Фильтр_по_полю_ввода_с_подбором_значения.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/filters/Фильтр_по_полю_ввода_с_подбором_значения.html new file mode 100644 index 0000000..0f76d07 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/filters/Фильтр_по_полю_ввода_с_подбором_значения.html @@ -0,0 +1,241 @@ + + + + + + + + Web-BPM Docs – Фильтр по полю ввода с подбором значения + + + + + + +
+
+ + + +
+
+

Фильтр по полю ввода с подбором значения

+

Назначение

+

Фильтр по полю ввода с подбором значения - это видоизмененная компонента Поле ввода с подбором значения, дополненная функцией поиска в связанной с ней компоненте Таблица по введенному пользователем значению. Иерархически обязательно должна быть расположена внутри компоненты Набор фильтров, в качестве параметра содержит указание на колонку таблицы, по которой осуществляется поиск. В зависимости от настроек родительской компоненты Набор фильтров в запущенном приложении выполняет поиск либо только после нажатия соответствующей кнопки (компонента Кнопка для фильтрации), либо по мере ввода пользователем искомого значения (так называемый, “живой поиск”).

+

Компонента Фильтр по полю ввода с подбором значения находится в разделе Фильтры - Фильтр по полю ввода с подбором значения.

+

Свойства

+

Компонента имеет набор общих свойств. Ниже отображены свойства, специфичные только для данной компоненты.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Подсказка позволяет создать подсказку, расположенную внутри элемента пример возможного значения: Выберите район
Надпись позволяет задать наименование поля, которое будет отображаться на странице пример возможного значения: Район
Зависит от позволяет указать объект (родителя), например Выпадающий список, по идентификатору которого будут отображаться сведения в текущем зависимом элементе
Начать подбор вариантов позволяет задать количество символов, после ввода которых пользователем, компонента начинает подбор и вывод вариантов, соответствующих уже введенной пользователем подстроке пример возможного значения: 3
Допустимое количество для MultiValue позволяет указать количество значений, которое может выбрать пользователь при работе с компонентой (включение режима MultiValue) пример возможного значения: 4
+

Свойство компоненты: Поле ввода с подбором значения. Подгрузка данных

+

Подгрузка данных - позволяет задать источник подгрузки/сохранения данных в компоненту из/в объекта базы данных (таблицы или представления) с указанием следующих дополнительных настроек:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Возвращать значение доп.колонки по умолчанию компонента возвращает идентификатор записи выбранной из справочника значений (primary_key) Настройка данного параметра позволяет указать компоненте, значение из какой дополнительной колонки необходимо дополнительно считать и вернуть при использовании метода “Получить значение BusinessId”
Связаны по… позволяет указать колонку текущей компоненты, по которой осуществляется связь с компонентой, указанной в свойстве “Зависит от”, обеспечивающую связь между родительской и текущей компонентами
Тип поиска позволяет задать один из вариантов поиска по вводимой пользователем подстроке С начала строки (значение отображается в списке, если с введенной пользователем подстроки начинается значение колонки из базы данных). Во всей строке (значение отображается в списке, если введенная пользователем подстрока содержится в значении колонки из базы данных с любого места вхождения)
Сортировать по позволяет задать элемент базы данных, по значению которого будет производиться сортировка
Тип колонки позволяет указать , каким образом будет отображаться выбранное пользователем значение в компоненте +
    +
  • Из одной колонки
  • +
  • Из нескольких колонок
  • +
  • Колонка с оформлением
Показывать пользователю позволяет задать колонку базы данных, значение которой будет отображено пользователю в режиме ""
Активировать фильтрацию по колонке позволяет указать колонку текущей компоненты, по которой можно с использованием метода “Задать фильтр” компоненты “Обработка события” дополнительно ограничить список доступных для выбора пользователем значений Выставленное в методе значение фильтра будет применено к указанной колонке
Граф сущностей Настройка Графа сущностей Является обязательным к заполнению и настройке
Показывать варианты по позволяет ограничить список отображаемых вариантов в процессе подбора по подстроке
+

Тип колонки - позволяет указать , каким образом будет отображаться выбранное пользователем значение в компоненте

+
    + +
  • Из одной колонки
  • +
  • Из нескольких колонок
  • +
  • Колонка с оформлением
  • +
+

Из нескольких колонок - позволяет указать, что видимое пользователю значение должно быть сформировано путем объединения значений из нескольких колонок источника данных компоненты. Для тонкой настройки параметров объединения значений разных колонок, аналитик может задать свойства:

+
    + +
  • префикс - символ или текст, который будет отображаться перед подгружаемым значением из колонки базы данных,например символ открывающейся скобки (;
  • +
  • постфикс- символ или текст, который будет отображаться после подгружаемого значения из колонки базы данных,например символ закрывающейся скобки );
  • +
  • разделитель- символ или пробел, который будет разделять между собой значения из разных колонок таблиц (ы), объединяемых в одно значение
  • +
+

Тип колонки - позволяет указать , каким образом будет отображаться выбранное пользователем значение в компоненте

+
    + +
  • Из одной колонки
  • +
  • Из нескольких колонок
  • +
  • Колонка с оформлением
  • +
+

Колонка с оформлением - позволяет задать шаблон отображения одной или нескольких колонок в html формате. Колонки в шаблоне задаются в виде @{сущность из графа.колонка} или @{сущность из графа.колонка | форматер}. Форматер принимает одно из двух значений “date” и “datetime”.

+

Свойство Фильтра : Задать операцию фильтрации

+ + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Операция позволяет задать условие, по которому будет осуществляться фильтрация данных по введенному пользователем значению
+

Свойство Фильтра: Настроить колонки фильтрации

+ + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Фильтровать по позволяет указать таблицу и колонку базы данных, к которой будет применяться фильтрация Выбор таблицы и колонки базы данных в данном свойстве будет доступен только после заполнения свойства “Применить к…” у Набора фильтрации
Правило обработки MultiValue значений позволяет указать правило работы фильтрации в режиме MultiValue, когда пользователем выбраны несколько значений в компоненту. Данная настройка определяет оператор соединения для выбранных пользователем значений
+

Свойство компоненты: Поле ввода с подбором значения.

+

Заполнить значением из переменной любого типа

+

Функции

+

В ходе настройки свойств компоненты (заданных по умолчанию) может оказаться недостаточно для выполнения поставленной задачи и получения необходимого результата.

+

Для каждой компоненты предусмотрен перечень функций, расширяющих её базовую функциональность, которые можно добавить нажатием кнопки Добавить скрипт

+

Вследствие технических особенностей реализации функций (функции, которые выполняются удаленно на сервере приложений. Функции, которые выполняются в браузере пользователя), они имеют разные иконки, но это никак не влияет на их функциональность или предпочтительность использования.

+

Сохранить значение в переменную процесса

+

Сохранить значение в переменную процесса

+

Заполнить значением из переменной

+

Заполнить значением из переменной

+

Определить права текущего пользователя

+

Определить права текущего пользователя

+

Определить роли текущего пользователя

+

Определить роли текущего пользователя

+

Сконвертировать значение в целочисленный тип

+

Сконвертировать значение в целочисленный тип

+

Заполнить значением по умолчанию

+

Заполнить значением по умолчанию

+

Методические рекомендации по применению

+

Пошаговые инструкции по применению компонента в типовых задачах Вы можете найти в разделах:

+ +

Часто задаваемые вопросы

+ + + + + + + + + + + + + + + +
Вопрос Ответ
Чем отличается компонента Фильтр по полю ввода с подбором значения от компоненты Фильтр по выпадающему списку? Фильтр по полю ввода с подбором значения отличается от компоненты Фильтр по выпадающему списку тем, что не показывает и не подгружает сразу все строки из справочника, но по мере ввода пользователем подстроки предлагает всё более усеченный список вариантов, выводя только релевантные уже введенной подстроке значения.
Значение какого типа возвращает компонента? В общем случае может быть любым (чаще всего целочисленным или строковым).Тип возвращаемого компонентойзначения определяется выбором аналитиком метода, который возвращает значение, а также типом колонки в базе данных.
+

Метод “Получить значение” возвращает первичный ключ и тип такого значения зависит от типа колонки первичного ключа в базе данных (обычно целочисленный bigint).

+

Метод “Получить значение по BussinessId” возвращает значение колонки, заданной в параметре компоненты "Дополнительно возвращать значение из " и определяется типом этой колонки в базе данных.

+

Дополнительная функция “Сконвертировать значение в целочисленный тип” как раз используется для явной конвертации возвращаемого компонентой неопределенного типа (ANY) в явно желаемый Integer (например, при присвоении идентификатора строки выбранного в компоненте значения какой-либо переменной целого типа на странице) .

+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/filters/Фильтр_по_полю_многострочного_ввода.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/filters/Фильтр_по_полю_многострочного_ввода.html new file mode 100644 index 0000000..a01c310 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/filters/Фильтр_по_полю_многострочного_ввода.html @@ -0,0 +1,193 @@ + + + + + + + + Web-BPM Docs – Фильтр по полю многострочного ввода + + + + + + +
+
+ + + +
+
+

Фильтр по полю многострочного ввода

+

Назначение

+

Фильтр по полю многострочного ввода - это видоизмененная компонента Многострочное поле, дополненная функцией поиска в связанной с ней компоненте Таблица по введенному пользователем значению. Иерархически обязательно должна быть расположена внутри компоненты Набор фильтров, в качестве параметра содержит указание на колонку таблицы, по которой осуществляется поиск. В зависимости от настроек родительской компоненты Набор фильтров в запущенном приложении выполняет поиск либо только после нажатия соответствующей кнопки (компонента Кнопка для фильтрации), либо по мере ввода пользователем искомого значения (так называемый, “живой поиск”).

+

Компонента Фильтр по полю многострочного ввода находится в разделе Фильтры - Фильтр по полю многострочного ввода.

+

Свойства

+

Компонента имеет набор общих свойств. Ниже отображены свойства, специфичные только для данной компоненты.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Подсказка позволяет создать подсказку, расположенную внутри элемента пример возможного значения: Введите название организации
Надпись позволяет задать наименование поля, которое будет отображаться на странице пример возможного значения: Наименование организации
Значение позволяет задать значение поля по умолчанию пример возможного значения: ООО “Форт”
Максимальная длина задаёт максимальное количество вводимых символов в поле пример возможного значения: 10
Маска ограничивающая ввод позволяет задать маску, в соответствии с которой пользователь будет осуществлять ввод текста выставление маски не может обеспечить выполнение требования обязательности ввода, маска только внешне отфильтровывает и форматирует последовательность вводимых пользователем символов заранее заданным образом (например, ввод тел. номера “+ 7 (917) - 101 - 02 - 03” вместо “8917010203” или не допустит такого ввода “89170102АЯ”). См. ниже
Оперировать немаскированными данными указывает системе порядок обработки символов маски при сохранении значения поля в базу данных +
    +
  • значение не определено - по умолчанию
  • +
  • сохранять без форматирования маской
  • +
  • сохранять с форматированием маской
Значение, отформатированное маской в поле ввода как “+7~(917)-922-33-44”, может быть сохранено в поле таблицы базы данных как “+7~(917)-922-33-44” (если флажок снят) или как “9179223344” (если флажок выставлен)
Регистр позволяет задать вид регистра вводимого текста +
    +
  • в верхнем регистре - заглавные (прописные) буквы
  • +
  • в нижнем регистре - строчные (маленькие) буквы
  • +
  • первая буква - заглавная
Тип позволяет задать тип вводимого текста +
    +
  • обычный текст
  • +
  • пароль (заполнитель - звездочки)
  • +
  • электронная почта
регулярное выражение позволяет задать проверку вводимого текста с помощью регулярных выражений См. ниже
Операция позволяет задать условие, по которому будет осуществляться фильтрация данных по введенному пользователем значению
Фильтровать по … В данном свойстве выбирается таблица и колонка к которой будет применяться фильтрация. Выбор таблице в данном свойстве будет доступен после заполнения свойства “Применить к…” у Набор фильтрации
+

Примеры масок:

+
    + +
  • A (буква, латинская, регистр не имеет значения) в маске - позволит ввести в поле одну любую букву любого алфавита
  • +
  • Б (буква, русская, в верхнем регистре) в маске - позволит ввести в поле одну любую букву русского алфавита
  • +
  • 9 (цифра) в маске - позволит ввести в поле одну любую цифру
  • +
  • * (символ) в маске - позволит ввести в поле одну любую цифру или букву
  • +
  • R (буква, латинская, в верхнем регистре) в маске - позволит ввести в поле одну римскую цифру
  • +
  • ? (символ) в маске - позволит ввести или опустить при вводе в поле один необязательный символ (букву, цифру) ,например 999?9; под эту маску подходит как 123, так и 1234
  • +
+

Например, необходимо задать форматирование ввода маской для значения Й456QЬ. В данном случае маска будет выглядеть следующим образом: А999АА, где А - латинская буква.

+

Некоторые типовые регулярные выражения:

+
    + +
  • \d [0-9]- одна цифра от 0 до 9
  • +
  • \D [^0-9]- любой символ кроме цифры
  • +
  • \s- пробел
  • +
  • [A-Z]- только заглавная латинская буква
  • +
  • [A-Za-z]- только латинская буква в любом регистре
  • +
  • [А-Яа-яЁё]- только русская буква в любом регистре
  • +
  • [A-Za-zА-Яа-яЁё]- любая буква русского и латинского алфавита
  • +
  • [0-9]{3}- три цифры
  • +
  • [A-Za-z]{6,}- не менее шести латинских букв
  • +
  • [0-9]{,3}- не более трёх цифр
  • +
  • [0-9]{5,10}- от пяти до десяти цифр
  • +
  • ^[a-zA-Z]+$- любое слово на латинице
  • +
  • ^[А-Яа-яЁё\s]+$- любое слово на русском включая пробелы
  • +
  • ^[ 0-9]+$- любое число
  • +
+

Например, чтобы ограничить возможность ввода и сохранения текста латиницей, можно использовать регулярное выражение^[А-Яа-яЁё\s]+$

+

Функции

+

В ходе настройки свойств компоненты (заданных по умолчанию) может оказаться недостаточно для выполнения поставленной задачи и получения необходимого результата.

+

Для каждой компоненты предусмотрен перечень функций, расширяющих её базовую функциональность, которые можно добавить нажатием кнопки Добавить скрипт.

+

Вследствие технических особенностей реализации функций (функции, которые выполняются удаленно на сервере приложений, функции, которые выполняются в браузере пользователя), они имеют разные иконки, но это никак не влияет на их функциональность или предпочтительность использования.

+

Сохранить значение в переменную процесса

+

Сохранить значение в переменную процесса

+

Заполнить значением из переменной процесса

+

Заполнить значением из переменной

+

Заполнить значением по умолчанию

+

Заполнить значением по умолчанию

+

Склеить несколько значений

+

Склеить несколько значений

+

Определить права текущего пользователя

+

Определить права текущего пользователя

+

Определить роли текущего пользователя

+

Определить роли текущего пользователя

+

Методические рекомендации по применению

+ +

Часто задаваемые вопросы

+ + + + + + + + + + + + + + + + + + +
Вопрос Ответ
Можно ли ввести число в Фильтр по полю многострочного ввода Да, можно.
Как можно ограничить количество ввода символов в поле? Для этого необходимо заполнить свойство "Максимальная длина
Как можно расширить поиск вфильтрациипо полю многострочного ввода из приложения Поиск можно расширить с помощью проставлениязнака "%"рядом с вводимым значением в поле фильтрации. Пример приведен в статье по фильтрации по текстовому полю
+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/filters/Фильтр_по_статичному_выпадающему_списку.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/filters/Фильтр_по_статичному_выпадающему_списку.html new file mode 100644 index 0000000..2167911 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/filters/Фильтр_по_статичному_выпадающему_списку.html @@ -0,0 +1,118 @@ + + + + + + + + Web-BPM Docs – Фильтр по статичному выпадающему списку + + + + + + +
+
+ + + +
+
+

Фильтр по статичному выпадающему списку

+

Назначение

+

Фильтр по статичному выпадающему списку - это видоизмененная компонента Статичный выпадающий список, дополненная функцией поиска в связанной с ней компоненте Таблица по введенному пользователем значению. Иерархически обязательно должна быть расположена внутри компоненты Набор фильтров, в качестве параметра содержит указание на колонку таблицы, по которой осуществляется поиск. В зависимости от настроек родительской компоненты Набор фильтров в запущенном приложении выполняет поиск либо только после нажатия соответствующей кнопки (компонента Кнопка для фильтрации), либо по мере ввода пользователем искомого значения (так называемый, “живой поиск”).

+

Компонента Фильтр по статичному выпадающему списку находится в разделе Фильтры - Фильтр по статичному выпадающему списку.

+

Свойства

+

Компонента имеет набор общих свойств. Ниже отображены свойства, специфичные только для данной компоненты.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Подсказка позволяет создать подсказку, расположенную внутри элемента пример возможного значения: Введите год
Надпись позволяет задать наименование поля, которое будет отображаться на странице пример возможного значения: Отчетный год
Значение по умолчанию (initial value) позволяет задать значение поля по умолчанию, которое будет отображаться на странице пример возможного значения: 2019
Список значений позволяет задать список значений, которые будут отображаться в выпадающем списке +
    +
  • надпись - позволяет задать наименование элемента в списке значений
  • +
  • значение - позволяет задать значение элемента, которое можно записать в базу данных
  • +
  • скрыть - позволяет регулировать видимость элемента в списке значений
надпись - “Отчетный год” значение-“2018”
+

Функции

+

В ходе настройки свойств компоненты (заданных по умолчанию) может оказаться недостаточно для выполнения поставленной задачи и получения необходимого результата.

+

Для каждой компоненты предусмотрен перечень функций, расширяющих её базовую функциональность, которые можно добавить нажатием кнопки Добавить скрипт.

+

Вследствие технических особенностей реализации функций (функции, которые выполняются удаленно на сервере приложений, функции, которые выполняются в браузере пользователя), они имеют разные иконки, но это никак не влияет на их функциональность или предпочтительность использования.

+

Склеить несколько значений

+

Склеить несколько значений

+

Сохранить значение в переменную процесса

+

Сохранить значение в переменную процесса

+

Заполнить значением из переменной процесса

+

Заполнить значением из переменной

+

Методические рекомендации по применению

+ +

Часто задаваемые вопросы

+ + + + + + + + + + + + + + + +
Вопрос Ответ
Можно ли в Фильтре по статичному выпадающему списку ввести значение в ручную? Нет. Фильтр по статичному выпадающему списку не подразумевает под собой ввод значений вручную.
Сколько значений для Фильтра по статичному выпадающему списку является оптимальным? К заданию значений в фильтре по статичному выпадающему списку, необходимо подходить внимательно, так как задание 2 вариантов, так и 20 вариантов для выбора будет не совсем корректным. Если значений менее 5, то советую использовать Фильтр по флагу, если же необходимо выбрать более 15 значений, то предлагаюлибо сократить их количество, либо предоставить пользователю текстовое поле для ввода своих данных.
+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/filters/Фильтр_по_текстовому_полю.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/filters/Фильтр_по_текстовому_полю.html new file mode 100644 index 0000000..9fd9d9a --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/filters/Фильтр_по_текстовому_полю.html @@ -0,0 +1,181 @@ + + + + + + + + Web-BPM Docs – Текстовое поле (фильтр) + + + + + + +
+
+ + + +
+
+

Текстовое поле (фильтр)

+

Назначение

+

Текстовое поле (фильтр) - это видоизмененная компонента Текст, дополненная функцией поиска в связанной с ней компоненте Таблица по введенному пользователем значению. Иерархически обязательно должна быть расположена внутри компоненты Набор фильтров, в качестве параметра содержит указание на колонку таблицы, по которой осуществляется поиск. В зависимости от настроек родительской компонентыНабор фильтровв запущенном приложении выполняет поиск либо только после нажатия соответствующей кнопки (компонентаКнопка для фильтрации), либо по мере ввода пользователем искомого значения (так называемый, “живой поиск”).

+

Компонента Текстовое поле (фильтр) находится в разделе Фильтры - Текстовое поле (фильтр).

+

Свойства

+

Компонента имеет набор общих свойств. Ниже отображены свойства, специфичные только для данной компоненты.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Подсказка позволяет создать подсказку, расположенную внутри элемента пример возможного значения: Введите название организации
Надпись позволяет задать наименование поля, которое будет отображаться на странице пример возможного значения: Наименование организации
Значение позволяет задать значение поля по умолчанию пример возможного значения: ООО “Форт”
Максимальная длина задаёт максимальное количество вводимых символов в поле пример возможного значения: 10
Оперировать немаскированными указывает системе порядок обработки символов маски при сохранении значения поля в базу данных +
    +
  • значение не определено- по умолчанию
  • +
  • сохранять без форматирования маской
  • +
  • сохранять с форматированием маской
Значение, отформатированное маской в поле ввода как “+7~(917)-922-33-44”, может быть сохранено в поле таблицы базы данных как “+7~(917)-922-33-44” (если флажок снят) или как “9179223344” (если флажок выставлен)
Маска, ограничивающая ввод позволяет задать маску, в соответствии с которой пользователь будет осуществлять ввод текста выставление маски не может обеспечить выполнение требования обязательности ввода, маска только внешне отфильтровывает и форматирует последовательность вводимых пользователем символов заранее заданным образом (например, ввод тел. номера “+ 7 (917) - 101 - 02 - 03” вместо “8917010203” или не допустит такого ввода “89170102АЯ”). Примеры масок: +
    +
  • A (буква, латинская, регистр не имеет значения) в маске - позволит ввести в поле одну любую букву любого алфавита
  • +
  • Б (буква, русская, в верхнем регистре) в маске - позволит ввести в поле одну любую букву русского алфавита
  • +
  • 9 (цифра) в маске - позволит ввести в поле одну любую цифру
  • +
  • * (символ) в маске - позволит ввести в поле одну любую цифру или букву
  • +
  • R (буква, латинская, в верхнем регистре) в маске - позволит ввести в поле одну римскую цифру
  • +
  • [ ] (внутри квадратных скобок) в маске - позволит ввести или опустить при вводе в поле один или несколько необязательных символов (букву, цифру), например 999[9]; под эту маску подходит как 123, так и 1234 Например, необходимо задать форматирование ввода маской для значения Й456QЬ. В данном случае маска может выглядеть следующим образом: Б999АА, где А - латинская буква.
Регистр позволяет задать вид регистра вводимого текста: В верхнем регистре - заглавные (прописные) буквы. В нижнем регистре - строчные (маленькие) буквы. Первая буква - заглавная
тип позволяет задать тип вводимого текста обычный текст. Пароль (заполнитель - звездочки). Электронная почта
Регулярное выражение или Pattern позволяет задать проверку вводимого текста с помощью регулярных выражений поля, для которых не выполняются условия заданных регулярных выражений, при сохранении записи подсвечиваются красным оттенком и операция отменяется. Некоторые типовые регулярные выражения: +
    +
  • \d [0-9] - одна цифра от 0 до 9
  • +
  • \D [^0-9] - любой символ кроме цифры
  • +
  • \s - пробел
  • +
  • [A-Z] - только заглавная латинская буква
  • +
  • [A-Za-z] - только латинская буква в любом регистре
  • +
  • [А-Яа-яЁё] - только русская буква в любом регистре
  • +
  • [A-Za-zА-Яа-яЁё] - любая буква русского и латинского алфавита
  • +
  • [0-9]{3} - три цифры
+
    +
  • [A-Za-z]{6,}- не менее шести латинских букв
  • +
  • [0-9]{,3} - не более трёх цифр
  • +
  • [0-9]{5,10} - от пяти до десяти цифр
  • +
  • ^[a-zA-Z]+$ - любое слово на латинице
  • +
  • ^[А-Яа-яЁё\s]+$ - любое слово на русском включая пробелы
  • +
  • ^[ 0-9]+$ - любое число
чтобы ограничить возможность ввода и сохранения текста латиницей, можно использовать регулярное выражение ^[А-Яа-яЁё\s]+$
Операция позволяет задать условие, по которому будет осуществляться фильтрация данных по введенному пользователем значению
Фильтровать по… позволяет указать таблицу и колонку базы данных, к которой будет применяться фильтрация выбор таблицы и колонки базы данных в данном свойстве будет доступен только после заполнения свойства “Применить к…” у Набора фильтрации
+

Функции

+

В ходе настройки свойств компоненты (заданных по умолчанию) может оказаться недостаточно для выполнения поставленной задачи и получения необходимого результата.

+

Для каждой компоненты предусмотрен перечень функций, расширяющих её базовую функциональность, которые можно добавить нажатием кнопки Добавить скрипт.

+

Вследствие технических особенностей реализации функций (функции, которые выполняются удаленно на сервере приложений, функции, которые выполняются в браузере пользователя), они имеют разные иконки, но это никак не влияет на их функциональность или предпочтительность использования.

+

Cохранить значение в переменную процесса

+

сохранить значение в переменную процесса

+

Добавить строку к значению в текущем поле

+

Добавить строку к значению в текущем поле

+

Заполнить значением из переменной любого типа

+

Заполнить значением из переменной любого типа

+

Заполнить значением по умолчанию

+

Заполнить значением по умолчанию

+

Склеить несколько значений

+

Склеить несколько значений

+

Определить права текущего пользователя

+

Определить права текущего пользователя

+

Определить роли текущего пользователя

+

Определить роли текущего пользователя

+

Методические рекомендации по применению

+
+

Часто задаваемые вопросы

+ + + + + + + + + + + + + + + +
Вопрос Ответ
В каких случаях необходимо использовать Фильтр по текстовому полю, а в каких случаях Фильтр по числовому полю? В зависимости от типа значений, по которым происходит фильтрация определяется соответствующий тип Фильтра: если значения в колонке таблицы имеют строковый тип данных, то используется Фильтр по текстовому полю, если числовой - Фильтр по числовому полю.
Можно ли ввести число в Текстовое поле (фильтр)? Да, можно.
+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/filters/Фильтр_по_числовому_полю.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/filters/Фильтр_по_числовому_полю.html new file mode 100644 index 0000000..a39ed67 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/filters/Фильтр_по_числовому_полю.html @@ -0,0 +1,132 @@ + + + + + + + + Web-BPM Docs – Фильтр по числовому полю + + + + + + +
+
+ + + +
+
+

Фильтр по числовому полю

+

Назначение

+

Фильтр по числовому полю - это видоизмененная компонента Числовое поле, дополненная функцией поиска в связанной с ней компоненте Таблица по введенному пользователем значению. Иерархически обязательно должна быть расположена внутри компоненты Набор фильтров,в качестве параметра содержит указание на колонку таблицы, по которой осуществляется поиск. В зависимости от настроек родительской компоненты Набор фильтров в запущенном приложении выполняет поиск либо только после нажатия соответствующей кнопки (компонента Кнопка для фильтрации), либо по мере ввода пользователем искомого значения (так называемый, “живой поиск”).

+

Компонента Фильтр по числовому полю находится в разделе Фильтры - Фильтр по числовому полю.

+

Свойства

+

Компонента имеет набор общих свойств. Ниже отображены свойства, специфичные только для данной компоненты.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Подсказка позволяет создать подсказку, расположенную внутри элемента пример возможного значения: Введите год
Надпись позволяет задать наименование поля, которое будет отображаться на странице пример возможного значения: Год
Значение по умолчанию позволяет задать значение поля по умолчанию, которое будет отображаться на странице пример возможного значения: 100
Минимальное возможное значение позволяет задать минимально возможное значение числа, меньше которого пользователь ввести не сможет пример возможного значения: 0
Максимальное возможное значение позволяет задать максимально возможное значение числа, больше которого пользователь ввести не сможет пример возможного значения: 2999
Шаг увеличения значения позволяет задать шаг увеличения значения числа пример возможного значения: 1
Задать операцию фильтрации позволяет задать условие, по которому будет осуществляться фильтрация данных по введенному пользователем значению
Настроить колонки фильтрации позволяет указать таблицу и колонку базы данных, к которой будет применяться фильтрация Выбор таблицы и колонки базы данных в данном свойстве будет доступен только после заполнения свойства “Применить к…” у Набора фильтрации
+

Сохранить значение в переменную процесса

+

Сохранить значение в переменную процесса

+

Заполнить значением из переменной процесса

+

Заполнить значением из переменной

+

Заполнить значением по умолчанию

+

Заполнить значением по умолчанию

+

Включить вычисление математических операций

+

Включить вычисление математических операций

+

Определить права текущего пользователя

+

Определить права текущего пользователя

+

Определить роли текущего пользователя

+

Определить роли текущего пользователя

+

Методические рекомендации по применению

+ +

Часто задаваемые вопросы

+ + + + + + + + + + + + + + + +
Вопрос Ответ
Можно ли ввести текст в поле “Фильтр по числовому полю” Нет, нельзя.
В каких случаях необходимо использовать “Фильтр по числовому полю”? Фильтр по числовому полю используется в тех случаях, когда фильтруемые данные имеют числовой тип. При использовании данного фильтра у пользователя появится удобный ввод значения в поле Фильтр по числовому полю с помощью кнопок ,а не клавиатуры.
+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/filters/Фильтры.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/filters/Фильтры.html new file mode 100644 index 0000000..8c57944 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/filters/Фильтры.html @@ -0,0 +1,63 @@ + + + + + + + + Web-BPM Docs – Фильтры + + + + + + + +
+
+
+
+

© 2022 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/index.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/index.html new file mode 100644 index 0000000..7e177a5 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/index.html @@ -0,0 +1,79 @@ + + + + + + + + Web-BPM Docs – Поля ввода/вывода + + + + + + + +
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Адрес.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Адрес.html new file mode 100644 index 0000000..8473db3 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Адрес.html @@ -0,0 +1,290 @@ + + + + + + + + Web-BPM Docs – Адрес + + + + + + +
+
+ + + +
+
+

Адрес

+

Назначение

+

Адрес - это компонента, которая визуально выглядит как Поле ввода с подбором значения (Поиск), но по мере набора пользователем символов с клавиатуры подбирает, отображая возможные варианты значений адресов из федеральной адресной информационной системы, при этом функционируя уже как компонента Выпадающий список.

+

Варианты адресов и выбранный адрес отображаются как строка переменной длины, включающаяв себя наименование адресного параметра и его значение. Подбор вариантов адресов осуществляется по принципу вхождения набранного пользователем значения в результирующую строку полного адреса. Удобнее всего осуществлять подбор наименования с самого детального из доступных элементов адреса - улицы. Широта охвата компонентой адресных параметров представлена набором элементов, начиная от адресного элемента Субъект Российской Федерации и заканчивая адресным элементом Улица(для ФИАС)/Квартира(для ГАР). Для ФИАС адресные элементы, детализирующие местоположение точнее улицы (например, дом, корпус, помещение и т.п.) должны вводиться отдельными компонентами (например, Текстовое поле) со ссылками на предназначенные только для них колонки пользовательской базы данных.

+

В зависимости от настройки свойств, включенных по умолчанию в состав компоненты, компонента Адрес может использоваться для:

+
    + +
  1. Для отображения/сохранения выбранного в компоненте значения из/в базу данных(в данном случае, функция компоненты Адрес. Сохранение значения должна быть включена)
  2. +
  3. Для использования без функциональности отображения/сохранения выбранного в компоненте значения из/в базу данных(в данном случае, функция компоненты Выпадающий список. Сохранение значения должна быть выключена или удалена через настройки функции по кнопке)
  4. +
+

Компонента Адрес находится в разделе Компоненты - Поля - Адрес.

+

Свойства

+

Компонента имеет набор общих свойств. Ниже отображены свойства, специфичные только для данной компоненты.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Подсказка позволяет создать подсказку, расположенную внутри элемента пример возможного значения: Вводите адрес в следующем порядке: населенный пункт -> город
Надпись позволяет задать наименование поля, которое будет отображаться на странице пример возможного значения: Адрес
Минимальное кол-во символов позволяет задать количество символов, после ввода которых пользователем, компонента начинает подбор и вывод вариантов, соответствующих уже введенной пользователем подстроке пример возможного значения: 3
Если отметка поставлена, то компоненте предписывается осуществлять поиск не только по актуальным вариантам адресов, но и по историческим версиям этих адресов. Если отметка снята, то компоненте предписывается осуществлять поиск только по актуальным вариантам адресов, игнорируя исторические версии этих адресов. Информация о том, какой версией является то или иное наименование адреса (актуальной или исторической) компонента берет из федеральной информационной адресной системы в режиме чтения как исходное данное, и не осуществляет присвоение или снятие этого признака своей активностью. +
    +
  • НЕ активно - подбор только среди актуальных версий адресов- значение по умолчанию
  • +
  • подбор среди актуальных и исторических версий адресов
Текст сообщения для строки результата поиска позволяет задать текст для сообщения (предупреждения), которое будет отображаться в случае, если по результатам поиска было найдено число совпадений, превышающее значение лимита по количеству возвращаемых строк в компоненте (настраивается в функции “ФИАС. Настройка - Количество строк”) пример возможного значения:Найдено более {limit} значений, уточните поиск - значение по умолчанию, где {limit} это указание значения параметра “Количество строк”
Прикрепить значение (Scroll Gravity) позволяет задать расположение уже выбранного значения при отображении в выпадающем списке доступных значений +
    +
  • По умолчанию (DEFAULT) - выбранное значение отображается в порядке своего следования в списке доступных значений для выбора
  • +
  • По центру (CENTER) - выбранное значение отображается по центру в выпадающем списке доступных значений для выбора
  • +
  • В верхней части (TOP)- выбранное значение отображается в верхней части выпадающего списка доступных значений для выбора
  • +
  • В нижней части (BOTTOM) - выбранное значение отображается в нижней части выпадающего списка доступных значений для выбора
Не действительно при не активном адресе (Invalid if address is not active) позволяет визуально помечать поле как невалидное на странице, в случае если в него было подгружено неактуальное значение адреса
Css class if not satisfy данное свойство доступно для управления при активном значении свойства Invalid If Address Is Not Actual и позволяет задать CSS-класс, который будет применяться к полю ФИАС, в случае если в него было подгружено неактуальное значение адреса
Тип иерархии адреса (Hierarchy Type) позволяет задавать иерархию адреса. Для данного свойства есть два метода getHierarchyType возвращает текущую иерархию и метод setHierarchyType позволяет менять текущую иерархию. ADMINISTRATIVE - административная, MUNICIPAL - муниципальная
+

Свойство ФИАС. Настройка

+

Подгрузка данных

+

Источник подгрузки значений адресов конфигурируется в файле standalone.xml проекта в секции datasource jndi-name=“java:jboss/datasources/fias-ds” pool-name=“FIASDS” enabled=“true” use-java-context=“true”.

+

Настройка секции на источник данных происходит при инициации проекта техническим специалистом и используется аналитиком “как есть”. В составе компоненты настройка параметров подключения и подгрузки данных не осуществляется.

+

+

+

Предписывает компоненте при отображении вариантов отфильтровать адреса по указанной в этом параметре подстроке.

+

Используется как дополнительный предустановленный фильтр к подстроке, вводимой пользователем.

+

Пример возможной настройки:

+

В свойстве “Фильтр по умолчанию” зададим значение, например, Ленина (рис.1)

+

+

рис.1 Настройка свойства Фильтр по умолчанию

+

При отображении результатов поиска по значению, например, Казань, среди вариантов удовлетворяющих этому значению, для выбора будут доступны только те значения, которые содержат в себе слово “Ленина” (рис.2)

+

+

рис.2 Результаты поиска с установленным фильтром

+

Без установленного фильтра результаты аналогичного поиска выглядели бы следующим образом (рис.3):

+

+

рис.3 Результаты поиска без установленного фильтра

+

+

позволяет указать компоненте максимально допустимое количество вариантов для отображения в выпадающем списке при подборе пользователем интересующего значения

+

В случае, если по результатам поиска было найдено число совпадений, превышающее значение данного ограничения, пользователю будет отображаться сообщение (предупреждение) заданной в свойствеMessage Text For Result Set

+

+

+

позволяет задать минимальный уровень адреса, который ограничит область поиска адреса по вводимой пользователем подстроке “сверху” - то есть указанным элементом адреса и его нижележащими в иерархии дочерними элементами.

+

Доступные следующие варианты уровней:

+
    + +
  • Субъект РФ
  • +
  • Район субъекта
  • +
  • Город
  • +
  • Район
  • +
  • Населенный пункт
  • +
  • Улица
  • +
  • Дом
  • +
+

При указании “Минимального уровня поиска адреса” в значение “Субъект РФ” поиск по введенной пользователем в компоненту подстроке будет осуществляться по всем Субъектам РФ и по всем Районам субъекта, и по всем Городам, и по всем Районам города, и по всем Населенным пунктам, и по всем Улицам.

+

Данную настройку могут ограничивать параметры:

+

“Фильтр по умолчанию” - тогда поиск уже не по всем регионам (и прочим элементам), а только по тем, которые содержат подстроку из фильтра

+

“Максимальный уровень адреса” - тогда поиск будет опускаться по иерархии только до того уровня детализации, который указан в параметре*“Максимальный уровень адреса”

+

+

+

позволяет задать максимальный уровень адреса, который ограничивает область поиска адреса по вводимой пользователем подстроке “снизу” - то есть указанным элементом адреса и его вышележащими в иерархии родительскими элементами.

+

Максимальный уровень должен быть больше минимального.

+

Доступные следующие варианты уровней:

+
    + +
  • Субъект РФ
  • +
  • Район субъекта
  • +
  • Город
  • +
  • Район
  • +
  • Населенный пункт
  • +
  • Улица
  • +
  • Дом - в данном случае значения результата поиска будут отображаться с домами
  • +
+

При указании “Максимального уровня поиска адреса” в значение “Улица” поиск по введенной пользователем в компоненту подстроке будет осуществляться по всем Улицам во всех Населенных пунктах, всех Районов города, всехГородов, всех Районов субъекта и всех Субъектов РФ.

+

Данную настройку могут ограничивать параметры:

+

“Фильтр по умолчанию” - тогда поиск уже не по всем улицам (и прочим родительским элементам), а только по тем, которые содержат подстроку из фильтра

+

“Минимальный уровень адреса” - тогда поиск будет подниматься по иерархии только до того уровня детализации, который указан в параметре*“Минимальный уровень адреса”

+

+

+

указывает компоненте на стиль отображения строки адреса - наименование адресных элементов (таких как город, улица, район и т.п.) отображать в принятых сокращениях (г., ул.,р-н) или полностью.

+
    + +
  • + +

    отображать полные наименования адресных элементов (рис.2)- значение по умолчанию

    +
  • +
  • + +

    отображать сокращения адресных элементов (рис.1)

    +
  • +
+

+

рис.1 Отображение с сокращениями адресных элементов

+

+

рис.2 Отображение без сокращения адресных элементов

+

Свойство ФИАС. Сохранение значения

+

+

В случае, если значение в поле ФИАС необходимо сохранить или подгрузить из базы данных, указывается поле таблицы базы данных, куда будет сохраняться и откуда будет подгружаться введенное значение. Для выбора доступны только колонки имеющий строковый тип в базе данных. В случае, если значение поля ФИАС не требуется сохранять или подгружать из базы данных, то данное свойство удаляется (или отключается). Данный вариант может быть необходим, когда поле используется дляотображения значения, которое является константой, определённой в логике приложения.

+

+

Свойство ГАР. Настройка

+

Параметры: * gar.enable - параметр отвечающий за необходимость подключения gar-client. По дефолту true, для отключения задать false. * gar.elastic.url.host - хост на котором развернут elasticsearch. * gar.elastic.password - пароль для аутентификации elasticsearch.

+

Дополнительные парметры: * gar.elastic.url.port - порт на котором развернут elasticsearch. По дефолту 9200 * gar.elastic.username - логин для аутентификации elasticsearch. По дефолту elastic

+

позволяет указать компоненте максимально допустимое количество вариантов для отображения в выпадающем списке при подборе пользователем интересующего значения

+

В случае, если по результатам поиска было найдено число совпадений, превышающее значение данного ограничения, пользователю будет отображаться сообщение (предупреждение) заданной в свойствеMessage Text For Result Set img.png

+

img.png

+

позволяет задать минимальный уровень адреса, который ограничит область поиска адреса по вводимой пользователем подстроке “сверху” - то есть указанным элементом адреса и его нижележащими в иерархии дочерними элементами.

+

Доступные следующие варианты уровней:

+
    + +
  • REGION(Субъект РФ)
  • +
  • DISTRICT(Административный/Муниципальный Район)
  • +
  • SETTLEMENT(Сельское/городское поселение)
  • +
  • CITY(Город)
  • +
  • TOWN(Населенный пункт)
  • +
  • PLANNING_STRUCTURE(Элемент планировочной структуры)
  • +
  • STREET(Элемент улично-дорожной сети)
  • +
  • HOUSE(Дом)
  • +
  • APARTMENT(Квартира)
  • +
+

При указании “Минимального уровня поиска адреса” в значение “Субъект РФ” поиск по введенной пользователем в компоненту подстроке будет осуществляться по всем Субъектам РФ и по всем Районам субъекта, и по всем Городам, и по всем Районам города, и по всем Населенным пунктам, и по всем Улицам.

+

Данную настройку могут ограничивать параметры:

+

“Фильтр по умолчанию” - тогда поиск уже не по всем регионам (и прочим элементам), а только по тем, которые содержат подстроку из фильтра

+

“Максимальный уровень адреса” - тогда поиск будет опускаться по иерархии только до того уровня детализации, который указан в параметре*“Максимальный уровень адреса”

+

img_1.png

+

позволяет задать максимальный уровень адреса, который ограничивает область поиска адреса по вводимой пользователем подстроке “снизу” - то есть указанным элементом адреса и его вышележащими в иерархии родительскими элементами.

+

Максимальный уровень должен быть больше минимального.

+

Доступные следующие варианты уровней: - REGION(Субъект РФ) - DISTRICT(Административный/Муниципальный Район) - SETTLEMENT(Сельское/городское поселение) - CITY(Город) - TOWN(Населенный пункт) - PLANNING_STRUCTURE(Элемент планировочной структуры) - STREET(Элемент улично-дорожной сети) - HOUSE(Дом) - APARTMENT(Квартира)

+

При указании “Максимального уровня поиска адреса” в значение “STREET” поиск по введенной пользователем в компоненту подстроке будет осуществляться по всем Улицам во всех Населенных пунктах, всех Районов города, всехГородов, всех Районов субъекта и всех Субъектов РФ. При указании “Максимального уровня поиска адреса” в значение “HOUSE” поиск по введенной пользователем в компоненту подстроке будет осуществляться по всем Домам и Улицам во всех Населенных пунктах, всех Районов города, всехГородов, всех Районов субъекта и всех Субъектов РФ. При указании “Максимального уровня поиска адреса” в значение “APARTMENT” поиск по введенной пользователем в компоненту подстроке будет осуществляться по всем Квартирам, Домам и Улицам во всех Населенных пунктах, всех Районов города, всехГородов, всех Районов субъекта и всех Субъектов РФ.

+

Данную настройку могут ограничивать параметры:

+

“Фильтр по умолчанию” - тогда поиск уже не по всем улицам (и прочим родительским элементам), а только по тем, которые содержат подстроку из фильтра

+

“Минимальный уровень адреса” - тогда поиск будет подниматься по иерархии только до того уровня детализации, который указан в параметре*“Минимальный уровень адреса”

+

img_2.png

+

указывает компоненте на стиль отображения строки адреса - наименование адресных элементов (таких как город, улица, район и т.п.) отображать в принятых сокращениях (г., ул.,р-н) или полностью.

+
    + +
  • + +

    false -> отображать полные наименования адресных элементов - значение по умолчанию

    +
  • +
  • + +

    true -> отображать сокращения адресных элементов

    +
  • +
+

Свойство ГАР. Сохранение значения

+

+

В случае, если значение в поле ГАР необходимо сохранить или подгрузить из базы данных, указывается поле таблицы базы данных, куда будет сохраняться и откуда будет подгружаться введенное значение. Для выбора доступны только колонки имеющий строковый тип в базе данных. В случае, если значение поля ФИАС не требуется сохранять или подгружать из базы данных, то данное свойство удаляется (или отключается). Данный вариант может быть необходим, когда поле используется дляотображения значения, которое является константой, определённой в логике приложения.

+

+

Базовые функции

+

Заполнить значением по умолчанию

+

Заполнить значением по умолчанию

+

Заполнить значением из переменной процесса

+

заполнить значением из переменной любого типа

+

Дополнительные функции

+

В ходе настройки свойств компоненты (заданных по умолчанию) может оказаться недостаточно для выполнения поставленной задачи и получения необходимого результата.

+

Для каждой компоненты предусмотрен перечень функций, расширяющих её базовую функциональность, которые можно добавить нажатием кнопки Добавить скрипт.

+

Вследствие технических особенностей реализации функций (функции, которые выполняются удаленно на сервере приложений, функции, которые выполняются в браузере пользователя), они имеют разные иконки, но это никак не влияет на их функциональность или предпочтительность использования.

+

Сохранить значение в переменную процесса любого типа

+

сохранить значение в переменную процесса любого типа

+

Определить права текущего пользователя

+

Определить права текущего пользователя

+

Определить роли текущего пользователя

+

Определить роли текущего пользователя

+

Методические рекомендации по применению

+

Пошаговые инструкции по применению компонента в типовых задачах Вы можете найти в разделах:

+ +

Часто задаваемые вопросы

+ + + + + + + + + + + + + + + + + + + + + +
Вопрос Ответ
Значение какого типа возвращает компонента? Для ФИАС: В общем случае компонента возвращает значение тестового типа в виде длинного идентификатора (для записи в базу данных). Для использования значения выбранного адреса на экранной форме посредством компоненты Обработка событий, аналитику доступны несколько методов, которые возвращают разные значения. В условиях сравнения компоненты Обработка событий могут использоваться методы: Метод “Получить значение” возвращает идентификатор (так называемый GUID) выбранного адреса в строковом виде, например: {“version”:“1.0”,“aoid”:“b026a0f9-9478-4c61-a55f-95b38cb099c1”,“aoid_p1”:“c6d874d0-a7e8-46a1-b345-e2e1e9758c59”,“aoid_p2”:“625866a1-1278-4883-8dc5-ba34e0c463c4”,“aoid_p3”:“fc50add0-c3c7-4f07-99cd-8831166e6619”,“aoid_p4”:null,“aoid_p5”:null,“guid”:“b026a0f9-9478-4c61-a55f-95b38cb099c1”} Метод “Получить значение как текст” возвращает строку адреса в человекочитаемом виде в строковом виде, например “Респ Дагестан, р-н Буйнакский, с Верхнее Казанище, ул Ленина”. В секции Тогда компоненты Обработка событий могут использоваться методы: Метод"ФИАС.Задать значение" выставляет в компоненте адрес по идентификатору GUID ({“version”:“1.0”,“aoid”:“b026a0f9-9478-4c61-a55f-95b38cb099c1”,“aoid_p1”:“c6d874d0-a7e8-46a1-b345-e2e1e9758c59”,“aoid_p2”:“625866a1-1278-4883-8dc5-ba34e0c463c4”,“aoid_p3”:“fc50add0-c3c7-4f07-99cd-8831166e6619”,“aoid_p4”:null,“aoid_p5”:null,“guid”:“b026a0f9-9478-4c61-a55f-95b38cb099c1”}). Используется для полей - приемника информации об адресе (как показано на скриншоте). Метод “ФИАС. Получить значение” возвращает значение - идентификатор GUID, как из источника данных об адресе для последующей вставки в другое поле ФИАС. Метод “ФИАС. Получить значение"возвращает строку адреса в человекочитаемом виде в строковом виде,как из источника данных об адресе для последующей вставки в другое читаемое тестовое поле (например, Компонент Текстовое поле). Для ГАР: {“hierarchyId”:”{"indexId":"1415865","hierarchy":"MUNICIPAL","indexStructureType":"ADDRESS_OBJECT","withHouse":false}",“address”:“Автодорога Ад Москва-Уфа-Челябинск 1016 км 435 м”,“level”:6,“date”:“20000808”,“actual”:false,“okato”:“36228824000”,“oktmo”:“36628424”,“aoGUID=‘97e5e5dc-f63a-4c5f-bdbf-61d608e27895’”,“addressLevels”:{“regionName”:null,“regionCode”:null,“areaName”:null,“areaCode”:null,“cityName”:null,“cityCode”:null,“placeName”:“Ад Москва-Уфа-Челябинск 1016 км 435 м”,“placeCode”:null,“planName”:null,“planCode”:null,“streetName”:null,“streetCode”:null,“houseNumber”:null,“apartmentNumber”:null}}
Все ли свойства компоненты обязательны для заполнения? Нет.Свойства компоненты определяются в зависимости от решаемой задачи.
Возникнет ли ошибка при запуске приложения, если оставить незаполненным свойство ФИАС. Сохранение значения? Да. В случае, если функция “ФИАС. Сохранения значения” включена у элемента и не заполнены ее параметры, то при валидации проекта возникнет ошибка. Если по условию задачи данное поле не должно подгружаться и сохраняться в базу данных, данную функцию в компоненте необходимо либо отключить либо удалить.
Если удалить базовые функции, которые включены в компоненту по умолчанию, например, “Заполнить значением по умолчанию” можно ли будет вновь их добавить? Да. Если удалить какую-то базовую функцию компоненты, то по кнопке “Добавить функцию” она будет доступна для выбора.
+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Время.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Время.html new file mode 100644 index 0000000..10dfdb5 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Время.html @@ -0,0 +1,142 @@ + + + + + + + + Web-BPM Docs – Время + + + + + + +
+
+ + + +
+
+

Время

+

Назначение

+

Время - это компонента, которая используется для ввода или отображения времени.

+

В зависимости от настройки свойств, включенных по умолчанию в состав компоненты, компонента Время может использоваться для:

+
    + +
  1. Для сохранения введенной информации в базу данных и отображения значения из базы данных (в данном случае, функция компоненты Дата. Сохранение значения должна быть включена)
  2. +
  3. Для отображения значения, которое было введен пользователем приложения или является константой, определённой в логике приложения (в данном случае, функция компоненты Дата. Сохранение значения должна быть выключена или удалена через настройки функции по кнопке)
  4. +
+

Свойства

+

Компонента имеет набор общих свойств. Ниже отображены свойства, специфичные только для данной компоненты.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Подсказка позволяет создать подсказку, расположенную внутри элемента пример возможного значения: Ввести значение
Надпись позволяет задать наименование поля, которое будет отображаться на странице пример возможного значения: Время
Значение позволяет задать значение поля по умолчанию пример возможного значения: 22:00:00
Минимальное время позволяет задать минимально возможное значение времени (часы, минуты и секунды), меньше которого пользователь ввести не сможет пример возможного значения: 08:00:01
Максимальное время позволяет задать максимально возможное значение времени(часы, минуты и секунды), больше которого пользователь ввести не сможет 18:00:01
+

Свойство Время. Сохранение значения

+

+

В случае, если значение в поле Время необходимо сохранить или подгрузить из базы данных, указывается поле таблицы базы данных, куда будет сохраняться и откуда будет подгружаться введенное значение. Для выбора доступны только колонки имеющий тип в базе данных - Даты и времени (DATETIME, DATE и TIMESTAMP). В случае, если значение поля Время не требуется сохранять или подгружать из базы данных, то данное свойство удаляется (или отключается). Данный вариант может быть необходим, когда поле используется дляотображения значения, которое было введено пользователем приложения или является константой, определённой в логике приложения.

+

+

Базовые функции

+

Заполнить значением по умолчанию

+

Заполнить значением по умолчанию

+

Заполнить значением из переменной процесса

+

Заполнить значением из переменной процесса

+

Дополнительные функции

+

В ходе настройки свойств компоненты (заданных по умолчанию) может оказаться недостаточно для выполнения поставленной задачи и получения необходимого результата.

+

Для каждой компоненты предусмотрен перечень функций, расширяющих её базовую функциональность, которые можно добавить нажатием кнопки Добавить скрипт.

+

Вследствие технических особенностей реализации функций (функции, которые выполняются удаленно на сервере приложений, функции, которые выполняются в браузере пользователя), они имеют разные иконки, но это никак не влияет на их функциональность или предпочтительность использования.

+

Определить права текущего пользователя

+

Определить права текущего пользователя

+

Определить роли текущего пользователя

+

Определить роли текущего пользователя

+

Сохранить значение в переменную процесса любого типа

+

Сохранить значение в переменную процесса любого типа

+

Методические рекомендации по применению

+

Пошаговые инструкции по применению компонента в типовых задачах Вы можете найти в разделах:

+ +

Часто задаваемые вопросы

+ + + + + + + + + + + + + + + + + + + + + + + + +
Вопрос Ответ
Можно ли вносить данные в поле Время вручную? Да, ввод значения предусмотрен как с клавиатуры, так и выбор значения по значку в виде времени.
Возникнет ли ошибка при запуске приложения, если оставить незаполненным свойство Время. Сохранение значения? Да. В случае, если функция “Время. Сохранения значения” включена у элемента и не заполнены ее параметры, то при валидации проекта возникнет ошибка. Если по условию задачи данное поле не должно подгружаться и сохраняться в базу данных, данную функцию в компоненте необходимо либо отключить либо удалить.
Если удалить базовые функции, которые включены в компоненту по умолчанию, например, “Заполнить значением по умолчанию” можно ли будет вновь их добавить? Да. Если удалить какую-то базовую функцию компоненты, то по кнопке “Добавить функцию” она будет доступна для выбора.
Обязательно при ручном вводе значения в поле Время указывать значение с разделителем в виде двоеточия, т.е. 11:11:11? Нет, необязательно указывать разделитель между числами. Введя значение 111111 и убрав фокус с поля оно автоматически отформатируется к виду 11:11:11.
Обязательно при ручном вводе значения в поле Время указывать полное значение времени, т.е. часы, минуты и секунды? Нет, необязательно. Но в таком случае те части значения, которые не были указаны, будут автоматически проставлены как 00, т.е. если ввести только 11, то убрав фокус с поля значение преобразуется в 11:00:00.
+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Выпадающий_список.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Выпадающий_список.html new file mode 100644 index 0000000..6900046 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Выпадающий_список.html @@ -0,0 +1,223 @@ + + + + + + + + Web-BPM Docs – Выпадающий список + + + + + + +
+
+ + + +
+
+

Выпадающий список

+

Назначение

+

Выпадающий список - это компонента, которая используется для выбора пользователем одного значения из выпадающего списка значений, источником подгрузки данных для которого служит таблица (или представление) базы данных.

+

В зависимости от настройки свойств, включенных по умолчанию в состав компоненты, компонента Выпадающий список может использоваться для:

+
    + +
  1. Для сохранения выбранного значения из списка доступных в базу данных и отображения значения из базы данных(в данном случае, функция компоненты Выпадающий список. Сохранение значения должна быть включена)
  2. +
  3. Для отображения значения из базы данных являющегося константой, определённой в логике приложения без сохранения выбранного значения пользователем (в данном случае, функция компоненты Выпадающий список. Сохранение значения должна быть выключена или удалена через настройки функции по кнопке).
  4. +
+

Компонента Выпадающий список находится в разделе Компоненты - Поля - Выпадающий список.

+

Свойства

+

Компонента имеет набор общих свойств. Ниже отображены свойства, специфичные только для данной компоненты.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Подсказка позволяет создать подсказку, расположенную внутри элемента. пример возможного значения: Выберите район
Надпись позволяет задать наименование поля, которое будет отображаться на странице пример возможного значения: Район
Зависит от (parentControl) позволяет указать объект (родителя), например Выпадающий список, по идентификатору которого будут отображаться сведения в текущем зависимом элементе
Значение позволяет задать значение поля по умолчанию. При указании значения, компонентом будет осуществляться поиск соответствия между этим значением и содержимым колонки, указанной в параметре “Возвращать дополнительно из”. После успешного сопоставления пользователю будет отображаться значение из колонки, указанной в параметре “Показывать пользователю”. пример возможного значения: В свойстве компоненты “Возвращать дополнительно из” функции “Подгрузка данных” указана колонка базы данных, содержащее в себе значение кода записи. При открытии страницы с Выпадающим списком по умолчанию, при отсутствии иного значения подгруженного из базы данных (через функцию Выпадающийсписок. Сохранение значения), в него автоматически будет выставлено значение из таблицы базы данных с кодом НУ и отображаться значение из колонки “Показывать пользователю”, в данном случае это Наименование статуса (name)
Прикрепить значение (Scroll Gravity) позволяет задать расположение уже выбранного значения при отображении в выпадающем списке доступных значений позволяет задать расположение уже выбранного значения при отображении в выпадающем списке доступных значений +
    +
  • По умолчанию (DEFAULT) - выбранное значение отображается в порядке своего следования в списке доступных значений для выбора
  • +
  • По центру (CENTER) - выбранное значение отображается по центру в выпадающем списке доступных значений для выбора
  • +
  • В верхней части (TOP)- выбранное значение отображается в верхней части выпадающего списка доступных значений для выбора
  • +
  • В нижней части (BOTTOM) - выбранное значение отображается в нижней части выпадающего списка доступных значений для выбора
Исключить условия графа данное свойство позволяет подгружать для отображения значения в поле минуя условия (ограничения), заданные в Графе сущностей компоненты +
    +
  • Не активно - в данном состоянии, при подгрузке значений отсекаются значения не соответствующие условиям, заданным в Графе сущностей компоненты
  • +
  • Активно - в данном состоянии, при подгрузке значений допускается отображение значений, не соответствующих условиям, заданным в Графе сущностей компоненты, но без возможности их повторного выбора в выпадающем списке
Помечать невалидным (Mark invalid if not Satisfy) данное свойство доступно для управления при активации значении свойства Exclude Graph Conditions и позволяет визуально помечать поле как невалидное на странице, в случае если в него было подгружено значение, не соответствующие условиям Графа сущностей элемента +
    +
  • Не активно - в данном значении, поле не помечается на странице как невалидное и отображается стандартным образом
  • +
  • Активно - в данном значении, убрав фокус с поля, оно помечается на странице как невалидное
Css class if not Satisfy данное свойство доступно для управления при активном значении свойства Exclude Graph Conditions и позволяет задать CSS-класс, который будет применяться, в случае если в поле было подгружено значение, не соответствующие условиям Графа сущностей элемента
Tooltip if not Satisfy позволяет отображать всплывающую подсказку,в случае если в поле было подгружено значение, не соответствующие условиям Графа сущностей элемента. Данное свойство доступно для управления при: активном значении свойства Exclude Graph Conditions и заданному значению в поле Css Class If Not Satisfy пример возможного значения: not_valid
+

Свойство компоненты: Выпадающий список. Подгрузка данных

+

+

позволяет задать источник подгрузки/сохранения данных в компоненту из/в объекта базы данных (таблицы или представления) с указанием следующих дополнительных настроек:

+
    + +
  • Граф сущностей элемента настраивается в соответствии с п. Настройка Графа сущностей. Является обязательным к заполнению и настройке.
  • +
  • Возвращать значение дополнительно из - по умолчанию компонента возвращает идентификатор записи выбранной из справочника значений. Настройка данного параметра позволяет указать компоненте, какое значение необходимо дополнительно считать и вернуть, кроме значения идентификатора выбранной пользователем записи.
  • +
  • Тип отображения (Display Type) - это свойство,позволяющее выбрать тип для отображения значения в поле: +
      + +
    • Из одной колонки - значение по умолчанию
    • +
    • Из нескольких колонок - позволяет указать перечень колонок, значения которых будут склеиваться в одну строку при отображении на странице с определяемым разделителем значений (точка, запятая, пробел и другие)
    • +
    +
  • +
  • + +

    Разделитель - символ или пробел, который будет разделять между собой значения из разных колонок таблиц(ы) приводимых в одну строку (доступно для настройки при Тип колонки - Из нескольких колонок)

    +
  • +
  • Порядок сортировки (Sort Order) - позволяет задать порядок сортировки отображаемых значений в списке для выбора, принимает значения: +
      + +
    • + +

      по возрастанию - значения будут сортироваться от меньшего к большему

      +
    • +
    • + +

      по убыванию - значения будут сортироваться от большего к меньшему

      +
    • +
    +
  • +
  • + +

    Показывать пользователю - позволяет задать элемент базы данных, значение которого будет отображено пользователю в Выпадающем списке(доступно для настройки при Тип колонки - Из одной колонки)

    +
  • +
  • + +

    Связаны по - позволяет указать колонку компоненты указанной в свойстве “Зависит от”, обеспечивающую связь между родительской и текущей компонентами

    +
  • +
  • + +

    Активировать фильтрацию по - позволяет задать колонку, по которой можно будет динамически активировать фильтр при использовании метода “Задать фильтр” (Set_Filter) в компоненте Обработка Событий в отношении настраиваемой компоненты

    +
  • +
  • + +

    Datasource Jndi Name - позволяет задать иной источник (базу данных) для выполнения запроса, заданного с помощью элементов базы данных в редакторе Графа сущностей элемента. Значение данного свойства может быть задано следующим образом:java:/webbpm/AppRepDS, а сам адрес базы данных, логин и пароль для подключения должен быть указан в файлеstandalone.xml(аналогично тому, как указывается, например, подключение к базе данных безопасности) (рис.1)

    +
  • +
+

+

рис.1 Настройка файла standalone.xml

+

В случае, если данное свойство не заполнено, запрос выполняется в базе данных, указанной в конфигурации проекта (во вкладке База данных). - Сортировать по - позволяет задать элемент базы данных, по значению которого будет производиться сортировка

+

Пример возможной настройки:

+

+

Свойство Выпадающий список. Сохранение значения

+

+

В случае, если значение в поле Выпадающий список необходимо сохранить или подгрузить из базы данных, указывается поле таблицы базы данных, куда будет сохраняться и откуда будет подгружаться введенное значение.В случае, если значение поля Выпадающий список не требуется сохранять или подгружать из базы данных, то данное свойство удаляется (или отключается). Данный вариант может быть необходим, когда поле используется дляотображения значения, которое является константой, определённой в логике приложения.

+

+

Базовые функции

+

Заполнить значением по умолчанию

+

Заполнить значением по умолчанию

+

Заполнить значением из переменной процесса

+

Заполнить значением из переменной процесса

+

Дополнительные функции

+

В ходе настройки свойств компоненты (заданных по умолчанию) может оказаться недостаточно для выполнения поставленной задачи и получения необходимого результата.

+

Для каждой компоненты предусмотрен перечень функций, расширяющих её базовую функциональность, которые можно добавить нажатием кнопки Добавить скрипт

+

Вследствие технических особенностей реализации функций (функции, которые выполняются удаленно на сервере приложений, функции, которые выполняются в браузере пользователя), они имеют разные иконки, но это никак не влияет на их функциональность или предпочтительность использования.

+

Сохранить значение в переменную процесса любого типа

+

Сохранить значение в переменную процесса любого типа

+

Определить права текущего пользователя

+

Определить права текущего пользователя

+

Определить роли текущего пользователя

+

Определить роли текущего пользователя

+

Методические рекомендации по применению

+

Пошаговые инструкции по применению компонента в типовых задачах Вы можете найти в разделах:

+ +

Часто задаваемые вопросы

+ + + + + + + + + + + + + + + + + + + + + + + + +
Вопрос Ответ
Чем отличается компонента Статичный выпадающий список от компоненты Выпадающий список? Компонента Статичный выпадающий списокиспользуются для выбора значений, которые указываются аналитиком вручную при настройке компоненты,Выпадающий списокиспользуется для выбора значений,которые подгружаются из таблицы базы данных.
Все ли свойства компоненты обязательны для заполнения? Нет.Свойства компоненты определяются в зависимости от решаемой задачи.
Возникнет ли ошибка при запуске приложения, если оставить незаполненным свойство Выпадающий список. Сохранение значения? Да. В случае, если функция “Выпадающий список. Сохранения значения” включена у элемента и не заполнены ее параметры, то при валидации проекта возникнет ошибка. Если по условию задачи данное поле не должно подгружаться и сохраняться в базу данных, данную функцию в компоненте необходимо либо отключить либо удалить.
В выпадающем списке есть возможность ручного ввода символов для поиска значения? Да, при вводе символов в поле, компонента фильтрует содержимое в соответствии с введенным пользователем значением.
Если удалить базовые функции, которые включены в компоненту по умолчанию, например, “Заполнить значением по умолчанию” можно ли будет вновь их добавить? Да. Если удалить какую-то базовую функцию компоненты, то по кнопке “Добавить функцию” она будет доступна для выбора.
+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Дата.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Дата.html new file mode 100644 index 0000000..f264258 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Дата.html @@ -0,0 +1,191 @@ + + + + + + + + Web-BPM Docs – Дата + + + + + + +
+
+ + + +
+
+

Дата

+

Назначение

+

Дата - это компонента, которая используетсядля ввода или отображения даты или даты-времени.

+

В зависимости от настройки свойств, включенных по умолчанию в состав компоненты, компонента Дата может использоваться для:

+
    + +
  1. Для сохранения информации в базу данных и отображения значения из базы данных (в данном случае, функция компоненты Дата. Сохранение значения должна быть включена)
  2. +
  3. Для отображения значения, которое был введено пользователем приложения или является константой, определённой в логике приложения (в данном случае, функция компоненты Дата. Сохранение значения должна быть выключена или удалена через настройки функции по кнопке).
  4. +
+

Компонента Дата находится в разделе Компоненты - Поля - Дата.

+

Свойства

+

Компонента имеет набор общих свойств. Ниже отображены свойства, специфичные только для данной компоненты.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Формат позволяет задать формат для вывода +
    +
  • Только дата (в данном случае, значение в поле будет отображаться без времени)
  • +
  • Дата со временем
Подсказка позволяет создать подсказку, расположенную внутри элемента пример возможного значения: Введите год
Надпись позволяет задать наименование поля, которое будет отображаться на странице пример возможного значения: Год
Значение позволяет задать статичное значение поля по умолчанию для отображения на странице, состоящее из двух частей: значения даты и значения времени (часы, минуты и секунды) (значение времени будет отображаться на пользовательской странице при условии, что в свойстве элемента Формат указано Дата со временем) пример возможного значения: 23.03.2021 11:11:11
Тип минимальной даты позволяет выбрать тип настройки для указания минимально допустимого значения даты в поле +
    +
  • Статичное (STATIC) - при выборе данного типа отображается свойство для заполненияМинимальная дата
  • +
  • Текущая (CURRENT) - при выборе данного типа в качестве минимально допустимого значения для ввода будет текущая дата хоста, на котором работает браузер пользователя
  • +
  • Другой объект (OTHER_OBJECT) - при выборе данного типа отображается свойство Объект для минимальной даты (Min Date Object)
Тип максимальной даты позволяет выбрать тип настройки для указания максимально допустимого значения даты в поле +
    +
  • Статичное (STATIC) - при выборе данного типа отображается свойство для заполненияМаксимальная дата
  • +
  • Текущая (CURRENT) - при выборе данного типа в качестве минимально допустимого значения для ввода будеттекущая дата хоста, на котором работает браузер пользователя
  • +
  • Другой объект (OTHER_OBJECT) - при выборе данного типа отображается свойство Объект для максимальной даты (Max Date Object)
Минимальная дата позволяет задать статичное минимально возможное значение даты, меньше которого пользователь ввести не сможет. Указание данного значения доступно, если в свойстве Тип для минимального значения (Min Date Type) выбрано - Статичное (STATIC). Минимальное значение состоит из двух частей: значения даты и значения времени (часы, минуты и секунды)(значение времени будет учитываться при условии, в свойстве элементаФормат указано Дата со временем) пример возможного значения: 23.03.2021 11:11:11
Обьект минимальной даты позволяет указать объект (компоненту) с типом Дата на настраиваемой странице, значение которой будет выступать в качестве минимально допустимого значения даты для ввода пользователем. Указание данного значения доступно, если в свойстве Тип для минимального значения (Min Date Type) выбрано -Другой объект (OTHER_OBJECT)
Максимальная дата позволяет задать статичное максимально возможное значение даты, больше которого пользователь ввести не сможет. Указание данного значения доступно, если в свойстве Тип для максимального значения (Max Date Type) выбрано - Статичное (STATIC). Максимальное значение состоит из двух частей: значения даты и значения времени (часы, минуты и секунды)(значение времени будет учитываться при условии, в свойстве элементаФормат указано Дата со временем) пример возможного значения: 31.12.2017 11:11:11
Обьект максимальной даты позволяет указать объект (компоненту) с типом Дата на настраиваемой странице, значение которой будет выступать в качестве максимально допустимого значения даты для ввода пользователем. Указание данного значения доступно, если в свойстве Тип для максимального значения (Max Date Type)выбрано -Другой объект (OTHER_OBJECT)
В виде календаря позволяет задать возможность отображения элемента на странице в виде развернутого календаря Принимает два значения: +
    +
  • Активно - элемент на странице будет отображаться в виде календаря с возможностью выбора даты
  • +
  • Не активно - элемент на странице будет отображаться в виде поля для ручного ввода значения или выбора значения из календаря
+

Свойство Дата. Сохранение значения

+

+

В случае, если значение в поле Дата необходимо сохранить или подгрузить из базы данных, указывается поле таблицы базы данных, куда будет сохраняться и откуда будет подгружаться введенное значение. Для выбора доступны только колонки имеющие тип в базе данных - Даты и времени (DATETIME, DATE и TIMESTAMP).В случае, если значение поля Дата не требуется сохранять или подгружать из базы данных, то данное свойство удаляется (или отключается). Данный вариант может быть необходим, когда поле используется дляотображения значения, которое было введено пользователем приложения или является константой, определённой в логике приложения.

+

+

Базовые функции

+

Заполнить значением по умолчанию

+

Заполнить значением по умолчанию

+

Заполнить значением из переменной процесса

+

Заполнить значением из переменной процесса

+

Дополнительные функции

+

В ходе настройки свойств компоненты (заданных по умолчанию) может оказаться недостаточно для выполнения поставленной задачи и получения необходимого результата.

+

Для каждой компоненты предусмотрен перечень функций, расширяющих её базовую функциональность, которые можно добавить нажатием кнопки Добавить скрипт.

+

Вследствие технических особенностей реализации функций (функции, которые выполняются удаленно на сервере приложений, функции, которые выполняются в браузере пользователя), они имеют разные иконки, но это никак не влияет на их функциональность или предпочтительность использования.

+

Определить права текущего пользователя

+

Определить права текущего пользователя

+

Определить роли текущего пользователя

+

Определить_роли_текущего_пользователя

+

Сохранить значение в переменную процесса любого типа

+

Сохранить значение в переменную процесса любого типа

+

Сместить дату из поля на период вперед или назад

+

Определить текущую дату и сместить её вперед или назад на заданный период

+

Она относится к той группе функций, чья функциональность применяется и может быть полезной не сразу после добавления в исходную компоненту, а только при последующем использовании в компоненте “Обработка событий”, когда у исходной компоненты появляется несколько новых доступных методов при конструировании алгоритма обработки событий на web-странице. Например, для такого паттерна обработки: ‘ЕСЛИ в исходном компоненте Дата выбрано(изменилось) значение, ТО в другую компоненту Дата вывести значение из исходного, но на заранее заданный период (или годы, или месяцы, или дни) в будущее или прошлое’. Функция имеет параметры, позволяющие аналитику задать направление и величину сдвига во времени.

+

Методические рекомендации по применению

+

Пошаговые инструкции по применению компонента в типовых задачах Вы можете найти в разделах:

+ +

Часто задаваемые вопросы

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Вопрос Ответ
Можно ли проставлять текущую серверную дату при открытии страницы с данным полем? Да, можно. Для этого необходимо добавить соответствующую функцию (Определить текущую дату и сместить её вперед или назад на заданный период) в функции поля. Необходимо отметить, что для проставления текущей даты не нужно заполнять свойства скрипта.
Возникнет ли ошибка при запуске приложения, если оставить незаполненным свойство Дата. Сохранение значения? Да. В случае, если функция “Дата. Сохранения значения” включена у элемента и не заполнены ее параметры, то при валидации проекта возникнет ошибка. Если по условию задачи данное поле не должно подгружаться и сохраняться в базу данных, данную функцию в компоненте необходимо либо отключить либо удалить.
Если удалить базовые функции, которые включены в компоненту по умолчанию, например, “Заполнить значением по умолчанию” можно ли будет вновь их добавить? Да. Если удалить какую-то базовую функцию компоненты, то по кнопке “Добавить функцию” она будет доступна для выбора.
Можно ли вносить данные в поле Дата вручную? Да,ввод значения предусмотрен как с клавиатуры, так и выбор значения по значку в виде календаря.
Обязательно при ручном вводе значения в поле Дата указывать значение с разделителем в виде точки, т.е. 01.01.2021? Нет, необязательно указывать разделитель между числами. Введя значение 01012021 и убрав фокус с поля оно автоматически отформатируется к виду 01.01.2021.
Можно ли проставлять дату со смещением при открытии страницы с данным полем? Да,можно. Для этого необходимо добавить соответствующий скрипт (Определить текущую дату и сместить её вперед или назад на заданный период) в функции поля. В данном случае, необходимо заполнить свойства функции и указать необходимый диапазон смещения от текущей даты.
Какое значение будет проставлено в поле Дата если ввести толькоодну часть значения, например, день? Если ввести только значение дня в поле Дата, то убрав фокус с поля оставшаяся часть месяц и год будут проставлены в соответствии с текущим месяцем и годом на сервере приложения.
+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Денежное_поле.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Денежное_поле.html new file mode 100644 index 0000000..65accef --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Денежное_поле.html @@ -0,0 +1,174 @@ + + + + + + + + Web-BPM Docs – Денежное поле + + + + + + +
+
+ + + +
+
+

Денежное поле

+

Назначение

+

Денежное поле - это компонента, которая используется для ввода и отображения денежного значенияна форме страницы.

+

В зависимости от настройки свойств, включенных по умолчанию в состав компоненты, компонента Денежное поле может использоваться для:

+
    + +
  1. Для сохранения введеннойинформации в базу данных и отображения значения из базы данных (в данном случае, функция компоненты Денежное поле. Сохранение значения должна быть включена) (рис.2)
  2. +
  3. Для отображения числа, которые было введено пользователем приложения или является константой, определённой в логике приложения(в данном случае, функция компоненты Денежное поле. Сохранение значения должна быть выключена или удалена через настройки функции по кнопке) (рис.3)
  4. +
+

Компонента Денежное поле находится в разделе Компоненты - Поля - Денежное поле.

+

Свойства

+

Компонента имеет набор общих свойств. Ниже отображены свойства, специфичные только для данной компоненты.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Подсказка позволяет создать подсказку, расположенную внутри элемента пример возможного значения: Введите сумму
Надпись позволяет задать наименование поля, которое будет отображаться на странице пример возможного значения: Введите сумму
Значение по умолчанию позволяет задать значение поля по умолчанию, которое будет отображаться на странице пример возможного значения: 100
Минимальное возможное значение позволяет задать минимально возможное значение числа, меньше которого пользователь ввести не сможет пример возможного значения: 0
Максимальное возможное значение позволяет задать максимально возможное значение числа, больше которого пользователь ввести не сможет пример возможного значения: 999999
Шаг увеличения позволяет задать шаг увеличения значения числа пример возможного значения: 1
Количество знаков после запятой позволяет задать количество знаков после запятой пример возможного значения: 2
Префикс позволяет задать префикс, который будет отображаться перед суммой пример возможного значения: руб
Разделитель позволяет задать разделитель целой и дробной части суммы пример возможного значения:,
Разделитель тысяч позволяет задать разделитель тысяч пример возможного значения: .
+

Свойство Текстового поля (с возможностью сохранения): Сохранение значения

+

Указывается поле таблицы базы данных, куда будет сохраняться и откуда будет подгружаться введенное значение

+

+

Базовые функции

+

Заполнить значением по умолчанию

+

Подгрузка данных по умолчанию

+

Заполнить значением из переменной процесса

+

Заполнить значением из переменной процесса

+

Дополнительные функции

+

В ходе настройки свойств компоненты (заданных по умолчанию) может оказаться недостаточно для выполнения поставленной задачи и получения необходимого результата.

+

Для каждой компоненты предусмотрен перечень функций, расширяющих её базовую функциональность, которые можно добавить нажатием кнопки Добавить скрипт

+

Вследствие технических особенностей реализации скриптов (

+

- скрипты выполняются удаленно на сервере приложений,

+

- скрипты выполняются в браузере пользователя), они имеют разные иконки, но это никак не влияет на их функциональность или предпочтительность использования.

+

Определить права текущего пользователя

+

Определить права текущего пользователя

+

Определить роли текущего пользователя

+

Определить роли текущего пользователя

+

Заполнить значением из переменной процесса

+

Заполнить значением из переменной процесса

+

Включить вычисление математических операций

+

Включить вычисление математических операций

+

Включить конвертирование значений

+

TODO desribe function

+

Функция, которая не имеет настраиваемых аналитиком параметров, но будучи задействованной, позволяет осуществить преобразование значения в исходном компоненте из текущего типа (чаще всего, в компоненте Поле ввода с подбором значенияиз типа данных ANY) в целочисленный тип данных.

+

Она относится к той группе функций, чья функциональность применяетсяи может быть полезной не сразу после добавленияв исходную компоненту, а только при последующем использовании в компоненте “Обработка событий”, когда у исходной компоненты появляется нескольконовых доступных методов при конструировании алгоритма обработки событий на web-странице. Например, для такого паттерна обработки: ‘ЕСЛИ в компоненте Поле ввода с подбором значения выбрано (изменилось) значение, ТО в компоненту числовое поле вывести идентификатор(первичный ключ) этого значения’

+

+

Рис.1 Активация функции на компоненте Поле ввода с подбором значения

+

+

Рис.2 Числовое поле, в которое будем записывать идентификатор значения из компонента Поле ввода с подбором значения

+

+

Рис. 3 Пример алгоритма заполнения числового поля идентификатором значения, выбранного в поле с Постановщиком задачи, при условии расширения функциональности исходной компоненты Поле ввода с подбором значения функцией Сконвертировать значение в целочисленный тип; (появился новый метод Сконвертировать в число; у исходной компоненты)

+

+

Рис.4 Пример невозможности построения алгоритма из-за отсутствия необходимого метода Сконвертировать в число, вследствие удаления функции Сконвертировать значение в целочисленный тип из исходной компоненты Поле ввода с подбором значения Постановщик задачи (пропал метод Сконвертировать в число у исходной компоненты)

+

После запуска web-приложения (in runtime mode) выбираем в компоненте Список с поиском одно из значений (например, постановщика задачи с фамилией Дякин), после этого значение идентификатора (первичный ключ сотрудника по фамилии Дякин в справочнике) переносится в поле"Идентификатор постановщика", а в консоли браузера можно наблюдать сообщение о срабатывании компоненты Обработка событий, которое показывает выполненное функцией действие.

+

+

Рис 5.Выбираем Постановщика задачи

+

+

Рис.6 Функция заполняет числовое поле идентификатором

+

Методические рекомендации по применению

+

Пошаговые инструкции по применению компонента в типовых задачах Вы можете найти в разделах:

+ +

Часто задаваемые вопросы

+ + + + + + + + + + + + + + + +
Вопрос Ответ
Чем отличается компонента Денежное поле от компоненты Числовое поле? Компонента Денежное полеиспользуются для отображения денежных значений на странице, числовое полеиспользуется для отображения и ввода чисел.
Все ли свойства компоненты обязательны для заполнения? Нет. Свойства компоненты определяются в зависимости от решаемой задачи.
+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_добавить_Многострочное_поле_на_страницу_.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_добавить_Многострочное_поле_на_страницу_.html new file mode 100644 index 0000000..4d37f63 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_добавить_Многострочное_поле_на_страницу_.html @@ -0,0 +1,88 @@ + + + + + + + + Web-BPM Docs – Как добавить Многострочное поле на страницу? + + + + + + +
+
+ + + +
+
+

Как добавить “Многострочное поле” на страницу?

+

Постановка задачи: необходимо реализовать на пользовательской странице добавления департамента поле *Многострочного ввода (с возможностью сохранения)*с наименованием “Описание записи справочника” и следующими свойствами:

+
    + +
  • имя поля - Описание записи справочника
  • +
  • к полю должен быть применен CSS-класc: font-mini
  • +
  • поле должно иметь подсказку - Описание записи справочника
  • +
  • поле должно иметь надпись - Марка и номер авто принадлежащая организации
  • +
  • поле должно иметь ограничение в 20 символов
  • +
  • поле должно иметь маску ввода: A999AA AAAAAAAAAAAA
  • +
  • сохранение введенного значения должно осуществляться в базу данныхв таблицу org_charts в колонку avto_number
  • +
+

Решение задачи:

+

Предполагается, что страница с добавлением нового департамента уже создана бизнес-аналитиком. Для добавления на страницу и настройки компоненты Поле многострочного ввода (с возможностью сохранения) необходимо сделать следующее:

+
    + +
  • добавить внутрь Формы компоненту Многострочное поле из блока Компоненты - Поля - Многострочное поле (рис.1)
  • +
  • произвести настройки свойств согласно условиям задачи (рис.2). В этом случае стоит обратить внимание особенное внимание на свойство “Маска ограничивающая ввод”.
  • +
+

+ +
+
рис.1. Добавление компоненты Поле многострочного ввода на страницу   
+
+ +

+ +
+
рис.1. Добавление компоненты Поле многострочного вводана страницу             
+рис.2. Настройка компоненты Поле многострочного вводапо условию задачи
+
+ +

Результат выполнения задачи:

+

После применения изменений на странице, в экранной форме пользовательского приложения, мы видим, что условия задачи соблюдены (рис.3).

+

+ +
+
 рис. 3. Визуальное отображение выполнения условий задачи
+
+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_добавить_Переключатель_на_страницу_.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_добавить_Переключатель_на_страницу_.html new file mode 100644 index 0000000..7e5f967 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_добавить_Переключатель_на_страницу_.html @@ -0,0 +1,88 @@ + + + + + + + + Web-BPM Docs – Как добавить Переключатель на страницу? + + + + + + +
+
+ + + +
+
+

Как добавить Переключатель на страницу?

+

Постановка задачи: необходимо реализовать на пользовательской странице переключатель и будет иметь следующие настройки:

+
    + +
  • надпись поля - Должность
  • +
  • список значений из таблицы - employees
  • +
  • колонка сортировки - колонка position в таблице employees
  • +
  • колонка наименования - колонка position в таблице employees
  • +
  • колонка с кодом - колонка position в таблице employees
  • +
  • порядок сортировки - по возрастанию
  • +
+

Решение задачи:

+

Предполагается, что страница уже создана бизнес-аналитиком, где имеется ***основная компонента Форма***, в структуру сущностей которой включена необходимаятаблица ***employees***. Для добавления на страницу и настройки текстового поля необходимо сделать следующее:

+
    + +
  • добавить внутрь **Формы**компоненту переключатель с возможностью сохранения (рис.1)
  • +
  • произвести настройки согласно условию задачи (рис.1)
  • +
+

+

рис.1. Добавление переключателя на страницу

+

Результат выполнения задачи:

+

После применения изменений на странице, в экранной форме пользовательского приложения, мы видим, что условия задачи соблюдены (рис.2)

+

+

рис.2. Визуальное отображение выполнения условий задачи

+ +
+
+

Attachments:

+
+ + +
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_добавить_Текстовое_поле_на_страницу_.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_добавить_Текстовое_поле_на_страницу_.html new file mode 100644 index 0000000..30c2e97 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_добавить_Текстовое_поле_на_страницу_.html @@ -0,0 +1,109 @@ + + + + + + + + Web-BPM Docs – Как добавить Текстовое поле на страницу? + + + + + + +
+
+ + + +
+
+

Как добавить Текстовое поле на страницу?

+

Постановка задачи: необходимо реализовать на пользовательской странице добавления нового департамента текстовое поле, значение которого будет сохраняться в базу данных и будет иметь следующие настройки:

+
    + +
  • надпись поля - Название департамента
  • +
  • обязательно для заполнения пользователем приложения
  • +
  • ввод текста в поле должен осуществляться с использованием типа регистра -Первая буква-заглавная, то есть каждое новое слово в поле будет начинаться с заглавной буквы
  • +
  • поле должно иметь подсказку -Введите название департамента
  • +
  • к полю должны быть применены CSS-классы: фиксированный заголовок (fixed-label), размерность поля на странице должна быть максимальная (width-full)
  • +
  • сохранение введенного значения должно осуществляться в базу данных в таблицу org_unit колонку Департамент (name)
  • +
+

Решение задачи:

+

Предполагается, что страница с добавлением нового департамента уже создана бизнес-аналитиком, где имеется ***основная компонента Форма***, в структуру сущностей которой включена необходимая, в данном случае, таблица org_unit, в которую будет сохраняться введенное значение (наименование департамента). Для добавления на страницу и настройки текстового поля необходимо сделать следующее:

+
    + +
  • добавить внутрь Формы компоненту Текстовое поле (рис.1)
  • +
  • произвести настройки согласно условию задачи (рис.2)
  • +
+

+ +
+
рис.1. Добавление текстового поля на страницу            
+рис.2. Настройка текстового поля по условию задачи
+
+ +

Результат выполнения задачи:

+

После применения изменений на странице, в экранной форме пользовательского приложения, мы видим, что условия задачи соблюдены, как, например, текстовое поле обязательно для заполнения (рис.3) и каждое новое слово вводимого значения в поле автоматически** начинается с Заглавной буквы** (рис.4).

+


+

+ +
+
рис.3. Визуальное отображение условия обязательности поля       
+рис.4. Визуальное отображение выполнения условия: тип регистра Первая буква - заглавная  
+
+ +
+
+

Attachments:

+
+ + +
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_добавить_денежное_поле_на_страницу_.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_добавить_денежное_поле_на_страницу_.html new file mode 100644 index 0000000..89282a6 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_добавить_денежное_поле_на_страницу_.html @@ -0,0 +1,89 @@ + + + + + + + + Web-BPM Docs – Как добавить денежное поле на страницу? + + + + + + +
+
+ + + +
+
+

Как добавить денежное поле на страницу?

+

Постановка задачи: необходимо реализовать на пользовательской странице элемент Денежное поле (с возможностью сохранения) - стоимость услуги, значение которого будет сохраняться в базу данных и будет иметь следующие настройки:

+
    + +
  • надпись поля - Стоимость услуги
  • +
  • поле должно иметь всплывающую подсказку - Введите стоимость услуги в рублях
  • +
  • минимальное возможное значение должно быть равно 0
  • +
  • максимальное возможное значение должно быть равно 999999
  • +
  • шаг увеличения значения должен быть равно 10
  • +
  • количество знаков после запятой должно быть равно2
  • +
  • префикс значение должно быть - руб
  • +
  • сохранение введенного значения должно осуществляться в базу данныхв таблицу Список услуг (service) колонку Стоимость (price)
  • +
+

Решение задачи:

+

Предполагается, что пользовательская страница Карточка услуги уже создана бизнес-аналитиком, где имеется ***основная компонента Форма***, в структуру сущностей которой включена необходимая, в данном случае, ***таблица Список услуг (service)***, в которую будет сохраняться введенное значение (стоимость услуги). Для добавления на страницу и настройки денежного поля необходимо сделать следующее:

+
    + +
  • добавить внутрь Формы компоненту Денежное поле с возможностью сохранения (рис.1)
  • +
  • произвести настройки согласно условию задачи (рис.1)
  • +
+

+

рис.1. Добавление денежного поля на страницу

+

Результат выполнения задачи:

+

После применения изменений на странице, в экранной форме пользовательского приложения, мы видим, что условия задачи соблюдены (рис.2)

+

+

рис.2. Визуальное отображение выполнения условий задачи

+ +
+
+

Attachments:

+
+ + +
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_добавить_компоненту_Текст_на_страницу_.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_добавить_компоненту_Текст_на_страницу_.html new file mode 100644 index 0000000..7085e40 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_добавить_компоненту_Текст_на_страницу_.html @@ -0,0 +1,99 @@ + + + + + + + + Web-BPM Docs – Как добавить компоненту Текст на страницу? + + + + + + +
+
+ + + +
+
+

Как добавить компоненту Текст на страницу?

+

Постановка задачи: необходимо реализовать на пользовательской странице добавления нового департамента элемент Текст, который будет иметь следующие настройки:

+
    + +
  • надпись поля - Создание департамента
  • +
  • поле должно иметь подсказку - Новая карточка департамента
  • +
  • к полю должны быть применены CSS-классы: заголовок (title)
  • +
+

Решение задачи:

+

Предполагается, что страница с добавлением нового департамента уже создана бизнес-аналитиком. Для добавления на страницу и настройки компоненты Текст необходимо сделать следующее:

+
    + +
  • добавить внутрь Вертикального контейнера компоненту Текст( рис.1)
  • +
  • произвести настройки согласно условию задачи (рис.2)
  • +
+

+ +
+
рис.1. Добавление компоненты Текст на страницу                     
+рис.2. Настройка компоненты Текст по условию задачи
+
+ +

Результат выполнения задачи:

+

После применения изменений на странице, в экранной форме пользовательского приложения, мы видим, что условия задачи соблюдены, как, например, текст виден пользователю и имеет всплывающую подсказку (рис.3).

+

+ +
+
  рис.3. Визуальное отображение выполнения условий задачи
+
+ +
+
+

Attachments:

+
+ + +
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_добавить_несколько_полей_Дата_на_страницу_с_автоматическим_заполнением_последнего_.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_добавить_несколько_полей_Дата_на_страницу_с_автоматическим_заполнением_последнего_.html new file mode 100644 index 0000000..69b1bc5 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_добавить_несколько_полей_Дата_на_страницу_с_автоматическим_заполнением_последнего_.html @@ -0,0 +1,116 @@ + + + + + + + + Web-BPM Docs – Как добавить несколько полей Дата на страницу с автоматическим заполнением последнего? + + + + + + +
+
+ + + +
+
+

Как добавить несколько полей Дата на страницу с автоматическим заполнением последнего?

+

Постановка задачи: необходимо реализовать на пользовательской странице два элемента Дата (с возможность сохранения), значение которых будут сохраняться в базу данных и будут иметь следующие настройки:

+

Поле Дата №1 (задаем условия так, чтобы определялась текущая дата):

+
    + +
  • надпись - “С”
  • +
  • минимальная дата - 01.11.2017
  • +
  • в свойства поля необходимо добавить функцию “Определить текущую дату и сместить её вперед или назад на заданный период”, которая имеет условия: +
      + +
    • чекбокс “В будущее”
    • +
    +
  • +
+

Поле Дата №2 (задаем условия таким образом, чтобы дата смещалась на 2 года от текущей):

+
    + +
  • надпись - “По”
  • +
  • в свойства поля необходимо добавить функцию “Определить текущую дату и сместить её вперед или назад на заданный период”, которая имеет условия: +
      + +
    • чекбокс “В будущее” (истина)
    • +
    • количество лет - 2
    • +
    +
  • +
+

Решение задачи:

+

Предполагается, что пользовательская страница Карточка задачи уже создана бизнес-аналитиком, где имеется ***основная компонента Форма***, в структуру сущностей которой включена необходимая таблица, в которую будет сохраняться введенноезначение. Для добавления на страницу и настройки полей Дата (с возможностью сохранения) необходимо сделать следующее:

+
    + +
  • добавить внутрь Формы две компоненты* Дата,* расположенного в блоке Компоненты - Поля - Дата (рис.1)
  • +
  • произвести настройки согласно условию задачи (рис.2, рис.3)
  • +
+

+ +
+
  рис.1. Добавление компоненты Дата на страницу                            
+  рис. 2 и рис.3 Настройка компоненты
+
+ +

Результат выполнения задачи:

+

После применения изменений на странице, в экранной форме пользовательского приложения, мы видим, что условия задачи соблюдены (рис.4)
+

+

+ +
+
 рис.4. Визуальное отображение выполнения условий задачи
+
+ +


+

+ +
+
+

Attachments:

+
+ + +
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_добавить_поле_Время_на_страницу_.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_добавить_поле_Время_на_страницу_.html new file mode 100644 index 0000000..09cb576 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_добавить_поле_Время_на_страницу_.html @@ -0,0 +1,95 @@ + + + + + + + + Web-BPM Docs – Как добавить поле Время на страницу? + + + + + + +
+
+ + + +
+
+

Как добавить поле Время на страницу?

+

Постановка задачи: необходимо реализовать на пользовательской странице элемент Время (с возможность сохранения), значение которого будет сохраняться в базу данных и будет иметь следующие настройки:

+
    + +
  • всплывающая подсказка - Пожалуйста введите время
  • +
  • подсказка - Время
  • +
  • минимальное время - 08:00
  • +
  • максимальное время - 22:00
  • +
+

Решение задачи:

+

Предполагается, что пользовательская страница Карточка задачи уже создана бизнес-аналитиком, где имеется*основная компонента Форма, в структуру сущностей которой включена необходимая таблица, куда будет сохраняться введенноезначение. Для добавления на страницу и настройки поля Время необходимо сделать следующее:

+
    + +
  • добавить внутрь Формы компоненту Время с возможностью сохранения (рис.1)
  • +
  • произвести настройки согласно условию задачи (рис.2)
  • +
+

+ +
+
   рис.1. Добавление компоненты Время на страницу     
+   рис.2. Настройка компоненты Время
+
+ +

Результат выполнения задачи:

+

После применения изменений на странице, в экранной форме пользовательского приложения, мы видим, что условия задачи соблюдены (рис.3)
+

+

+ +
+
   рис.3. Визуальное отображение выполнения условий задачи 
+
+ +
+
+

Attachments:

+
+ + +
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_добавить_поле_Дата_на_страницу_.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_добавить_поле_Дата_на_страницу_.html new file mode 100644 index 0000000..8f9402c --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_добавить_поле_Дата_на_страницу_.html @@ -0,0 +1,93 @@ + + + + + + + + Web-BPM Docs – Как добавить поле Дата на страницу? + + + + + + +
+
+ + + +
+
+

Как добавить поле Дата на страницу?

+

Постановка задачи: необходимо реализовать на пользовательской странице элемент Дата (с возможность сохранения), значение которого будет сохраняться в базу данных и будет иметь следующие настройки:

+
    + +
  • надпись - Дата создания департамента
  • +
  • всплывающая подсказка - Заполняется датой перехода в систему
  • +
  • минимальная дата - 01.11.2017
  • +
  • формат - Только дата
  • +
+

Решение задачи:

+

Предполагается, что пользовательская страница Карточка задачи уже создана бизнес-аналитиком, где имеется ***основная компонента Форма***, в структуру сущностей которой включена необходимая таблица, в которую будет сохраняться введенноезначение. Для добавления на страницу и настройки поля Дата необходимо сделать следующее:

+
    + +
  • добавить внутрь Формы компоненту Дата с возможностью сохранения (рис.1)
  • +
  • произвести настройки согласно условию задачи (рис.2)
  • +
+

+ +
+
рис.1. Добавление компоненты Дата на страницу            
+рис.2. Настройка компоненты Дата
+
+ +

Результат выполнения задачи:

+

После применения изменений на странице, в экранной форме пользовательского приложения, мы видим, что условия задачи соблюдены (рис.3)

+

рис.3. Визуальное отображение выполнения условий задачи

+ +
+
+

Attachments:

+
+ + +
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_добавить_список_с_поиском_для_выбора_одного_значения_на_страницу_.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_добавить_список_с_поиском_для_выбора_одного_значения_на_страницу_.html new file mode 100644 index 0000000..f540ec8 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_добавить_список_с_поиском_для_выбора_одного_значения_на_страницу_.html @@ -0,0 +1,239 @@ + + + + + + + + Web-BPM Docs – Как добавить список с поиском для выбора одного значения на страницу? + + + + + + +
+
+ + + +
+
+

Как добавить список с поиском для выбора одного значения на страницу?

+

Постановка задачи: необходимо реализовать на пользовательской странице Создания проекта элемент Администратор проекта (Список с поиском для выбора одного значения), выбранное значение которого будет сохраняться в базу данных и вложенные компоненты которого будут иметь следующие настройки:

+

Список с поиском (с возможностью сохранения):

+
    + +
  • надпись поля - Администратор
  • +
  • недоступно для управления пользователем
  • +
  • обязательно для заполнения пользователем приложения
  • +
  • должно иметь подсказку - Выберите сотрудника
  • +
  • подлежит сохранению в базу данных
  • +
  • значение поля должно сохраняться в таблицу Проекты (projects) в колонку Администратор проекта (admin_employee_id)
  • +
  • в Граф сущностей должна быть добавлена таблица Список сотрудников(employees)
  • +
  • колонка должна быть составной и включать в себя поля Фамилия, Имя, Отчество, электронный адрес из таблицы Список сотрудников (employees). Разделителем должен быть пробел. Например, Петров Иван Алексеевич (petrov@cg.ru)
  • +
+

Кнопка выбора (вызова диалога):

+
    + +
  • надпись на кнопке - +
  • +
+

Группа фильтров должна включать в себя фильтры, расположенные в двух вертикальных контейнерах параллельных друг другу:

+
    + +
  • Фильтр по текстовому полю (по фамилии сотрудника) +
      + +
    • надпись поля - Фамилия
    • +
    • подсказка - Укажите фамилию
    • +
    • фильтровать по… - таблице Список сотрудников и колонке Фамилия (name_last)
    • +
    • операция фильтрации - Содержит всю подстроку
    • +
    +
  • +
  • Фильтр по текстовому полю (по имени сотрудника) +
      + +
    • надпись поля - Имя
    • +
    • подсказка - Укажите имя
    • +
    • фильтровать по… - таблице Список сотрудников иколонке Имя(name_first)
    • +
    • операция фильтрации - Содержит всю подстроку
    • +
    +
  • +
  • Фильтр по текстовому полю (по отчеству сотрудника) +
      + +
    • надпись поля -Отчество
    • +
    • подсказка - Укажите отчество
    • +
    • фильтровать по… - таблице Список сотрудников иколонке Отчество (name_middle)
    • +
    • операция фильтрации - Содержит всю подстроку
    • +
    +
  • +
  • Фильтр по текстовому полю (по e-mail сотрудника) +
      + +
    • надпись поля - E-mail
    • +
    • подсказка -Укажите весь email или его часть
    • +
    • фильтровать по… -таблице Список сотрудников и колонке Электронный адрес(user_mail)
    • +
    • операция фильтрации - Содержит всю подстроку
    • +
    +
  • +
  • Фильтр по выпадающему списку (по организации) +
      + +
    • надпись поля -Организация
    • +
    • подсказка -Выберите значение из списка в настройках фильтрации: правило обработки -ИЛИ
    • +
    • фильтровать по… -таблице Список сотрудников иколонке Организация(legal_entity_id)
    • +
    • подгрузка данных:
    • +
    • источником данных служит - таблица Организация (legal_entities), заданная в Графе сущностей сортировка производится по полю - Наименование (name) таблицы Организация (legal_entities) на странице пользователю отображается значение поля -Наименование (name) таблицы Организация (legal_entities) дополнительно возвращаться значение - Идентификатор(legal_entity_id) таблицы Организация (legal_entities) значение фильтра, которое будет передаваться другому элементу - Идентификатор (legal_entity_id) таблицы Организация (legal_entities)
    • +
    • операция фильтрации: Равно
    • +
    +
  • +
+

Таблица:

+
    + +
  • в Граф сущностей должны быть включены таблицы -Список сотрудников (главная сущность) и Организация, связанные по ключу legal_entity_id
  • +
  • должны отображаться три колонки: +
      + +
    1. Составная колонка ФИО из полей Фамилия, Имя, Отчество таблицы Список сотрудников(employees)
    2. +
    3. E-mail из поля Электронный адрес (user_mail) таблицы Список сотрудников(employees)
    4. +
    5. Организация из поля Наименование (name) таблицы Организация (legal_entities)
    6. +
    +
  • +
  • сортировка должна осуществляться по возрастанию по колонке Фамилия (name_last) таблицыСписок сотрудников(employees)
  • +
+

Решение задачи:

+

Предполагается, что страница с Созданием проекта уже реализована бизнес-аналитиком, где имеется основная компонента Форма, в структуру сущностей которой включена необходимая, в данном случае, ***таблица Проекты (projects)***, в которую будет сохраняться выбранное значение (Администратор проекта). Для добавления на страницу и настройки Списка с поиском для выбора одного значениянеобходимо сделать следующее:

+
    + +
  • добавить внутрь Формы компоненту Список с поиском для выбора одного значения и для удобства переименовать ее, например как, Администратор
  • +
  • произвести настройку всех вложенных компонент согласно условию задачи
  • +
+

Настройка вложенных компонент:

+

Список с поиском с возможностью сохранения (рис.1,рис.1.1, рис.1.2)

+ +
+
рис.1 Настройка основных параметров Списка с поиском      
+рис.1.1 Настройка Графа сущностей Списка с поиском     
+рис.1.2 Настройка подгрузки данных Списка с поиском с возможностью сохранения         
+
+ +

Кнопка выбора (рис.2)

+

Фильтр по Фамилии сотрудника (рис.3)

+

Фильтр по Имени сотрудника (рис.4)

+


+

+ +
+
рис.2 Настройка Кнопки выбора  
+рис.3 Настройка Фильтра по фамилии сотрудника           
+рис.4 Настройка Фильтра по имени сотрудника  
+
+ +

Фильтр по Отчеству сотрудника (рис.5)

+

Фильтр по E-mail сотрудника (рис.6)

+

Фильтр по Организации (рис.7)

+


+
+

+ +
+
  рис.5 Настройка Фильтра по отчеству сотрудника   
+  рис.6 Настройка Фильтра по E-mail сотрудника       
+  рис.7 Настройка Фильтра по организации  
+
+ +

Таблица (рис.8, рис.9, рис.10)

+ +
+
   рис.8 Настройка Графа сущностей Таблицы        
+   рис.9 Настройка колонок Таблицы      
+   рис.10 Настройка колонок Таблицы
+
+
+

Результат выполнения задачи:

+

После применения изменений на странице, в экранной форме пользовательского приложения, мы видим, что условия задачи соблюдены и элемент корректно отображается на странице (рис.11, рис.12, рис.13)

+


+
+

+ +
+
рис.11 Визуальное отображение поля без выбранного значения 
+рис.12 Визуальное отображение окна Диалога с Таблицей    
+рис.13 Визуальное отображение поля с выбранным значением
+
+ +
+
+

Attachments:

+
+ +
+ +

image2019-2-6_17-6-45.png (image/png)
+ image2019-2-15_13-42-3.png (image/png)
+ image2019-2-15_13-42-12.png (image/png)
+ image2019-2-15_13-42-16.png (image/png)
+ image2019-2-15_15-46-41.png (image/png)
+ image2019-2-15_15-47-42.png (image/png)
+ image2019-2-15_15-51-8.png (image/png)
+ image2019-2-15_15-52-35.png (image/png)
+ image2019-2-15_15-52-56.png (image/png)
+ image2019-2-15_15-57-18.png (image/png)
+ image2019-2-15_15-59-34.png (image/png)
+ image2019-2-15_16-1-57.png (image/png)
+ image2019-2-15_16-2-22.png (image/png)
+ image2019-2-15_16-6-5.png (image/png)
+ image2019-2-18_15-31-45.png (image/png)
+ image2019-2-18_15-32-27.png (image/png)
+ image2019-2-18_15-32-59.png (image/png)
+ image2019-2-18_15-34-10.png (image/png)
+ image2019-2-18_15-34-40.png (image/png)
+ image2019-2-18_15-35-7.png (image/png)
+ image2019-2-18_15-38-23.png (image/png)
+ image2019-2-18_15-39-4.png (image/png)
+ image2019-2-18_15-54-23.png (image/png)
+ image2019-2-18_15-54-57.png (image/png)
+ image2019-2-18_15-56-22.png (image/png)
+ image2019-2-18_16-5-34.png (image/png)
+ image2019-2-18_16-7-57.png (image/png)
+ image2019-2-18_16-8-44.png (image/png)
+ image2019-2-18_16-9-24.png (image/png)
+ image2019-2-18_16-24-23.png (image/png)
+ image2019-2-18_16-24-52.png (image/png)
+ image2019-2-18_16-27-49.png (image/png)
+ image2019-2-18_16-28-40.png (image/png)
+ image2019-2-18_16-31-32.png (image/png)
+ image2019-2-18_16-32-22.png (image/png)
+ image2019-2-18_16-32-46.png (image/png)
+ image2019-2-19_10-6-59.png (image/png)

+
+ + +
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_добавить_статичный_выпадающий_список_на_страницу_.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_добавить_статичный_выпадающий_список_на_страницу_.html new file mode 100644 index 0000000..3fc6f89 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_добавить_статичный_выпадающий_список_на_страницу_.html @@ -0,0 +1,85 @@ + + + + + + + + Web-BPM Docs – Как добавить статичный выпадающий список на страницу? + + + + + + +
+
+ + + +
+
+

Как добавить статичный выпадающий список на страницу?

+

Постановка задачи: необходимо реализовать на пользовательской странице Статичный выпадающий список с возможностью сохранения, выбранное значение из которого будет сохраняться в базу данных и будет иметь следующие настройки:

+
    + +
  • надпись поля - Выберите год
  • +
  • поле должно иметь всплывающую подсказку - Выберите значение из списка
  • +
  • список значений должен содержать элементы - Текущий год и Отчетный год
  • +
  • сохранение выбранного значения должно осуществляться в базу данныхв таблицу service колонку Год (year), если выбран Текущий год в базу данных записывается 2019, при выборе Отчетный год в базу данных записывается 2018
  • +
+

Решение задачи:

+

Предполагается, что страница уже создана бизнес-аналитиком, где имеется ***основная компонента Форма***, в структуру сущностей которой включена необходимая, в данном случае, таблица service, в которую будет сохраняться выбранное значение (год). Для добавления на страницу и настройки Статичного выпадающего списка необходимо сделать следующее:

+
    + +
  • добавить внутр ь**Формы** компоненту Статичный выпадающий список с возможностью сохранения (рис.1)
  • +
  • произвести настройки согласно условию задачи (рис.1)
  • +
+

+

рис.1. Добавление статичного выпадающего списка на страницу

+

Результат выполнения задачи:

+

После применения изменений на странице, в экранной форме пользовательского приложения, мы видим, что условия задачи соблюдены (рис.2)

+

рис.2. Визуальное отображение выполнения условий задачи

+ +
+
+

Attachments:

+
+ + +
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_добавить_числовое_поле_на_страницу_.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_добавить_числовое_поле_на_страницу_.html new file mode 100644 index 0000000..f588df9 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_добавить_числовое_поле_на_страницу_.html @@ -0,0 +1,91 @@ + + + + + + + + Web-BPM Docs – Как добавить числовое поле на страницу? + + + + + + +
+
+ + + +
+
+

Как добавить числовое поле на страницу?

+

Постановка задачи: необходимо реализовать на пользовательской странице элемент Числовое поле (с возможность сохранения) - оценку результата, значение которого будет сохраняться в базу данных и будет иметь следующие настройки:

+
    + +
  • надпись поля - Оценка
  • +
  • поле должно иметь всплывающую подсказку -Введите оценку результата по задаче
  • +
  • к полю должны быть применены CSS-классы: фиксированный заголовок (fixed-label-small) и размерность поля минимальная (mini)
  • +
  • минимальное возможное значение должно быть равно 0
  • +
  • максимальное возможное значение должно быть равно 5
  • +
  • шаг увеличения значения должен быть равен 1
  • +
  • сохранение введенного значения должно осуществляться в базу данныхв таблицу Список задач (tasks) колонку Оценка результата (result_score)
  • +
+

Решение задачи:

+

Предполагается, что пользовательская страница Карточка задачи уже создана бизнес-аналитиком, где имеется ***основная компонента Форма***, в структуру сущностей которой включена необходимая, в данном случае, ***таблица Список задач (tasks)***, в которую будет сохраняться введенное значение (оценка результата по задаче). Для добавления на страницу и настройки числового поля необходимо сделать следующее:

+
    + +
  • добавить внутрь Формы компоненту Числовое поле с возможностью сохранения (рис.1)
  • +
  • произвести настройки согласно условию задачи (рис.1)
  • +
+

рис.1. Добавление числового поля на страницу

+

Результат выполнения задачи:

+

После применения изменений на странице, в экранной форме пользовательского приложения, мы видим, что условия задачи соблюдены (рис.2)

+

+

рис.2. Визуальное отображение выполнения условий задачи

+ +
+
+

Attachments:

+
+ + +
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_добавить_элемент_Выпадающий_список_на_страницу_.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_добавить_элемент_Выпадающий_список_на_страницу_.html new file mode 100644 index 0000000..e7a8f86 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_добавить_элемент_Выпадающий_список_на_страницу_.html @@ -0,0 +1,82 @@ + + + + + + + + Web-BPM Docs – Как добавить элемент Выпадающий список на страницу? + + + + + + +
+
+ + + +
+
+

Как добавить элемент Выпадающий список на страницу?

+

Постановка задачи: необходимо реализовать на пользовательской странице Карточки сотрудника Выпадающий список с возможностью сохранения, в котором будет отображаться перечень районов проживания доступных для выбора пользователем, и который будет иметь следующие настройки:

+
    + +
  • надпись поля - Выберите район проживания
  • +
  • вГраф сущностейв качестве Главной сущности должна быть определена таблица районов (district)
  • +
  • показывать пользователю колонку - Наименование района (колонка name в таблице district)
  • +
  • колонка БД для сохранения - колонка district_id в таблице price_monitor_report
  • +
+

Решение задачи:

+

Предполагается, что страница Карточка сотрудника уже создана бизнес-аналитиком, где имеется ***основная компонента Форма***, в структуру сущностей которой включена необходимая таблица price_monitor_report для сохранения выбранного значения пользователем в элементе Выпадающий список с возможностью сохранения. Для добавления на страницу и настройки Выпадающего списка необходимо сделать следующее:

+
    + +
  • добавить внутрь Формы компоненту Выпадающий список с возможностью сохранения (рис.1)
  • +
  • произвести настройки согласно условию задачи (рис.1)
  • +
+

+

рис.1 Добавление Выпадающего списка на страницу

+

Результат выполнения задачи:

+

После применения изменений на странице, в экранной форме пользовательского приложения, мы видим, что условия задачи соблюдены (рис.2)

+

+

рис.2. Визуальное отображение выполнения условий задачи

+ +
+
+

Attachments:

+
+ + +
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_добавить_элемент_Статичный_переключатель_на_страницу_.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_добавить_элемент_Статичный_переключатель_на_страницу_.html new file mode 100644 index 0000000..c3f123f --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_добавить_элемент_Статичный_переключатель_на_страницу_.html @@ -0,0 +1,82 @@ + + + + + + + + Web-BPM Docs – Как добавить элемент Статичный переключатель на страницу? + + + + + + +
+
+ + + +
+
+

Как добавить элемент Статичный переключатель на страницу?

+

Постановка задачи: необходимо реализовать на пользовательской странице Карточка сотрудника элементСтатичный переключатель с возможностью сохранения, выбранное значение из которого будет сохраняться в базу данных и будет иметь следующие настройки:

+
    + +
  • надпись поля - Выберите период
  • +
  • список значений должен содержать элементы - Месяц и Год
  • +
  • значение по умолчанию - Год
  • +
  • сохранение выбранного значения должно осуществляться в базу данныхв таблицу service колонку Период (period), если выбран Месяцв базу данных записывается month,при выборе Год в базу данных записывается year
  • +
+

Решение задачи:

+

Предполагается, что страница уже создана бизнес-аналитиком, где имеется ***основная компонентаФорма***, в структуру сущностей которой включена необходимая, в данном случае, таблица service, в которую будет сохраняться выбранное пользователем значение (период). Для добавления на страницу и настройки Статичного переключателя необходимо сделать следующее:

+
    + +
  • добавить внутрь Формы компоненту Статичный переключатель с возможностью сохранения (рис.1)
  • +
  • произвести настройки согласно условию задачи (рис.1)
  • +
+

+

рис.1. Добавление Статичного переключателя на страницу

+

Результат выполнения задачи:

+

После применения изменений на странице, в экранной форме пользовательского приложения, мы видим, что условия задачи соблюдены (рис.2)

+

+

рис.2. Визуальное отображение выполнения условий задачи

+ +
+
+

Attachments:

+
+ + +
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_задействовать_компоненту_Загрузка_файла_на_странице_.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_задействовать_компоненту_Загрузка_файла_на_странице_.html new file mode 100644 index 0000000..17596b9 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_задействовать_компоненту_Загрузка_файла_на_странице_.html @@ -0,0 +1,300 @@ + + + + + + + + Web-BPM Docs – Как задействовать компоненту Загрузка файла на странице? + + + + + + +
+
+ + + +
+
+

Как задействовать компоненту “Загрузка файла” на странице?

+

Постановка задачи: необходимо реализовать на пользовательской странице “Карточка Проекта” загрузку файлов, являющихся сканированными приложениями к проекту (расширения png, jpeg, jpg).

+

Для настройки компоненты Загрузка файла потребуются следующие данные:

+
    + +
  • + +

    надпись поля - Файлы-вложения

    +
  • +
  • + +

    максимальный размер каждого файла - 10 Мб

    +
  • +
  • + +

    допустимо удаление файла - удаление разрешено

    +
  • +
  • + +

    список допустимых типов файлов -png, jpeg, jpg

    +
  • +
  • + +

    допустимое максимальное количество файлов в компоненте - 10 и отдельным случаем рассмотреть - единственный 1 файл

    +
  • +
  • + +

    главная сущность графа основной формы-таблица projects.project_id

    +
  • +
  • + +

    главная сущность графа компоненты - таблица project_attachments

    +
  • +
  • + +

    колонка-внешний ключ из таблицы вложений в таблицу проектов -project_attachments.project_id

    +
  • +
  • + +

    колонка с именем файла вглавной сущности графа компоненты-project_attachments.attachment_file_path

    +
  • +
  • + +

    колонка с содержимым файлав главной сущности графа компоненты -project_attachments.file

    +
  • +
  • + +

    для случая с единственным файлом: колонка с именем файла в главной сущности графа основной формы-projects.attachment_file_path

    +
  • +
  • + +

    для случая с единственным файлом: колонка с содержимым файлав главной сущности основной формы -projects.file

    +
  • +
+

Страница “Карточка Проекта” должна иметь следующие настройки:

+
    + +
  • в качествеглавной сущности компонентыФормадолжна быть назначена таблица “Проекты”(projects).
  • +
  • внутри родительской компоненты-контейнераФормавсей страницы следует расположить компоненту “Загрузка файла”.
  • +
  • внутри родительской компоненты-контейнераФормавсей страницы следует расположить другие компоненты, например, Текстовое поле для сохранения иных параметров сущности “проект” (не входит в текущее задание).
  • +
  • для случая, когда к одному проекту следует сохранить несколько вложений: вГраф сущностей компоненты Загрузка файлав качестве Главной сущности должна быть определена таблица вложений (project_attachments) .
  • +
  • для случая, когда к одному проекту следует сохранить единственное вложение: вГраф сущностей компоненты Загрузка файлав качестве Главной сущности должна быть определена таблица Проектов (projects).
  • +
  • установить должным образом связи между таблицами в параметрах компоненты.
  • +
+

Решение задачи:

+
    + +
  • Добавляем ***основную компонентуФорма***, в структуру сущностей которой включаем таблицу projects. (рис.1)
  • +
+

+

рис.1. Добавление компоненты Форма на страницу

+
    + +
  • Добавляем внутрь компоненты Формы компоненту Загрузка файла (рис.2)
  • +
+

+

рис.2. Добавление компоненты Загрузка файла на страницу

+
    + +
  • Настраиваем основные параметры компоненты Загрузка файла (рис. 3)
  • +
+

+

рис.3. Настройка основных параметров компоненты Загрузка файла

+
    + +
  • Настраиваем граф сущностей компоненты Загрузка файла (рис. 4)
  • +
+

+

рис.4. Настройка графа сущностей компоненты Загрузка файла.

+

Обращаем внимание, что при изменении настройки “Допустимое максимальное количество файлов”, появляется дополнительный параметр для указания внешнего ключа,

+

по которому связаны главная сущность компоненты Форма и главная сущность компоненты Загрузка файла

+
    + +
  • Настраиваем взаимосвязи главной сущности графа компоненты Форма и главной сущности компоненты Загрузка файла (рис.5)
  • +
+

+

рис.4. Настройкавзаимосвязи главной сущности графа компоненты Форма и главной сущности компоненты Загрузка файла

+

Результат выполнения задачи:

+

После применения изменений на странице, в экранной форме пользовательского приложения, мы видим, что условия задачи соблюдены (рис.5,6)

+ +
+ + + + + + + + + + + + + + + + + + + + + + +
+
+ +

+

+
+
+ +

+
+

рис. 5 Открываем карточку проекта.

+ +

Переходим к компоненте Загрузка файла и указываем список файлов для прикрепления.

+ +

Сохраняем карточку проекта.


+
+

рис. 6 Открываем ту же карточку проекта на изменение. Прикрепленные на предыдущем шаге файлы отображаются в зоне предпросмотра.

+ +

Крестик в верхнем углу файла позволяет удалить файл из списка прикрепленных.

+ +

Нажатие мышкой по наименованию файла (представленного гиперссылкой) приводит к выкачивания файла браузером.

+
+ +

Дополнительно отдельно рассмотрим случай сохранения единственного файла вложений в ту же таблицу, что и другие параметры сущности “проект” (а не в зависимую таблицу).

+

Возвращаемся к настройке графа сущностикомпоненты Загрузка файла (рис. 4а) и вместо зависимой таблицы project_attachments в качестве главной сущности компоненты Загрузка файла выбираем такую же таблицу, как у главной сущности компоненты Форма - projects.

+
    + +
  • Изменяем параметр “Допустимое максимальное количество файлов” в значение “1” и настраиваем граф сущностей компоненты Загрузка файла (рис. 4а)
  • +
+

рис.4а Настройка графа сущностей компоненты Загрузка файла.

+

Обращаем внимание, что при изменении настройки “Допустимое максимальное количество файлов”, исчезает ранее настроенный дополнительный параметр для указания внешнего ключа,

+

по которому связаны главная сущность компоненты Форма и главная сущность компоненты Загрузка файла.

+
    + +
  • Настраиваем взаимосвязи главной сущности графа компоненты Форма и главной сущности компоненты Загрузка файла (рис.5)
  • +
+

рис.4. Настройкавзаимосвязи главной сущности графа компоненты Форма и главной сущности компоненты Загрузка файла

+

Результат выполнения задачи для варианта с единственным прикрепляемым файлом:

+

После применения изменений на странице, в экранной форме пользовательского приложения, мы видим, что условия задачи соблюдены (рис.5а,6а)

+ +
+ + + + + + + + + + + + + + + + + + + + + + +
+
+ +

+

+
+
+ +

+
+

рис. 5а Открываем карточку проекта.

+ +

Переходим к компоненте Загрузка файла и указываем список файлов для прикрепления.

+ +


+


+
+

рис. 5б Компонента не позволяет прикрепить список файл и оставляет только один из выбранных.

+ +

Сохраняем карточку с единственным прикрепленным файлом.

+ +


+

+
+ +

+

Рис. 6а Открываем ту же карточку проекта на изменение. Прикрепленный на предыдущем шаге единственный файл отображаются в зоне предпросмотра.

+

Крестик в верхнем углу файла позволяет удалить файл из прикрепленных.

+

Нажатие мышкой по наименованию файла (представленного гиперссылкой) приводит к выкачивания файла браузером.

+ +
+
+

Attachments:

+
+ + +
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_задействовать_компоненту_Поле_ввода_с_подбором_значения_на_странице_.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_задействовать_компоненту_Поле_ввода_с_подбором_значения_на_странице_.html new file mode 100644 index 0000000..d64d18d --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_задействовать_компоненту_Поле_ввода_с_подбором_значения_на_странице_.html @@ -0,0 +1,187 @@ + + + + + + + + Web-BPM Docs – Как задействовать компоненту Поле ввода с подбором значения на странице? + + + + + + +
+
+ + + +
+
+

Как задействовать компоненту “Поле ввода с подбором значения” на странице?

+

Постановка задачи: на пользовательской странице Карточка задачи необходимо обеспечить возможность ввода Постановщика задачис использованием компоненты “Поле ввода с подбором значения”, источником данных для которой будет справочник сотрудников, а выбор одного сотрудника из справочника будет осуществляться путем постепенного набора первых букв фамилии с последующим подбором и отображением сужающегося списка сотрудников, в чьих фамилиях содержится вводимый пользователем набор букв.

+

При открытии карточки задачи на редактирование, в компоненте должен отобразиться ранее сохраненный в качестве Постановщика задачи пользователь.

+

Страница “Карточка задачи” должна иметь следующие настройки:

+
    + +
  • в качествеглавной сущности компонентыФормадолжна быть назначена таблица “Список задач”(tasks),в которойимеется колонка с идентификатором сотрудника, являющегося постановщиком задачи (reporter_employee_id).
  • +
  • внутри родительской компоненты-контейнераФормавсей страницы следует расположить 3 простых компоненты:Текстовое поледля параметраНаименование задачи,Текстовое поледля параметраОписание задачи, Поле с подбором значения для параметра Постановщик задачи
  • +
  • в Граф сущностей компоненты Поле с подбором значения в качестве Главной сущности должна быть определена таблица сотрудников (employee)
  • +
  • показываемая пользователю колонка - составная, получаемая из соединения колонок Фамилия (last_name), Имя(first_name), Отчество(middle_name)
  • +
  • колонка базы данных для сохранения значения из компоненты Поле с подбором значения - tasks.reporter_employee_id
  • +
+

Решение задачи:

+

Предполагается, что страница Карточка задачи уже создана бизнес-аналитиком и в логике бизнес-процесса определена необходимая переменная процесса task_id, значение которой заполняется перед открытием страницы пользователем. Для решения поставленной задачи необходимо произвести следующие действия:

+
    + +
  • добавить внутрь страницы компоненту Форма (рис.1)
  • +
  • в настройках добавленной Формы перейти к разделу Подгрузка данных основная - Источник данных - Граф сущностей и настроить его в соответствии с условием задачи (рис.2).
  • +
+

+ +
+
рис.1 Добавление компоненты Форма на страницу  
+рис.2 Настройка Графа сущностей компоненты Форма
+
+ +
    + +
  • + +

    в параметре “Переменная процесса с идентификатором” ( Подгрузка данных основная- Переменная процесса с идентификатором ) следует указать переменную процесса task_id (рис.3)

    +

    +

    рис.3 Настройка переменной процесса

    +
  • +
  • + +

    расположить компоненты для отображения параметров Наименование задачи, Описание задачии настроить их на отображение информации из источника данных (рис.4, рис.5)

    + +
    + + + + + + + + + + + + + + + + + + +
    +
    + +

    +
    +
    + +

    +
    рис.4 Добавление элемента Наименованиерис.5 Добавление элемента Описание
    +
    +
  • +
  • + +

    расположить компоненту Поле с подбором значения внутри компоненты Форма и настроить колонку для сохранения информации в базу данных (чтения информации из базы данных) рис. 6:

    +
  • +
+

+

рис.6 Назначение колонки сохранения информации

+
    + +
  • настроитькомпоненту Поле с подбором значения на свой источник данных для отображения содержимого справочника сотрудников по мере набора букв фамилии сотрудника (рис. 7)
  • +
+

+

рис.7 Конфигурация основных параметров компоненты

+

Зеленой цветом (стрелкой) показан процесс конфигурации графа сущности компоненты.

+

Коричневыми рамками отмечены параметры “Начать подбор вариантов после ввода”, “Показывать варианты по” , отвечающие за а) назначение количества символов, после ввода которых начнется подбор и предложение подходящих по подстроке вариантов из справочника и б) указание максимального количества вариантов, выводимых в выпадающем списке в процессе подбора.

+

Розовой рамкой отмечен параметр “Тип поиска”, указывающий системе каким образом обрабатывать вхождение вводимой пользователем подстроки - вхождение с любого места или только с начала строки.

+

Синими рамками помечены взаимосвязанные параметры “Зависит от”, “Связаны по” для случая, когда текущая компонента является зависимой от родительской и предлагаемые текущей компонентой значения должны удовлетворять значению, ранее выбранному в родительской компоненте (отобрать только такие записи, в которых значенияв указанной колонке текущей компоненты соответствуютзначению идентификатора главной сущности родительской компоненты).

+

Светло-синей рамкойпомечен параметр с колонкой, значение которой будет дополнительно возвращать компонента при использовании метода “Получить значение по BusinessId” (дополнительно к обычно возвращаемому идентификатору главной сущности графа компоненты).

+

Желтой рамкойпомечен параметр “Активировать фильтрацию по колонке”, указывающий на колонку, по которой будет работать метод “Задать фильтр”.

+
    + +
  • настроить компоненту Поле с подбором значения для формирования составного значения из колонок с фамилией, именем и отчеством сотрудника (рис.8)
  • +
+

+

рис.8 Конфигурация составной колонки, в качестве разделителя указан “пробел”

+

На этом настройка компоненты закончена, запускаем приложение.

+

Результат выполнения задачи:

+

После применения изменений на странице, в экранной форме пользовательского приложения, мы видим, что условия задачи соблюдены (рис. 9)

+ +
+ +

+
+ +

+

+

При вводе первых двух букв система не реагирует, ждет третью

+

После появления третьей буквы начинает предлагать имеющиеся варианты, подходящие по условиям вхождения уже введенной подстроки

+

После появления очередной буквы, позволяющей индивидуализировать подбираемое значение, остается единственный вариант, который можно добрать вручную, выбрать манипулятором мышь или нажать кнопку “Ввод” на клавиатуре

+

рис. 9 Работа компоненты в запущенном приложении

+

рис.2. Визуальное отображение выполнения условий задачи

+ +
+
+

Attachments:

+
+ + +
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_задействовать_компоненту_Пополняемый_список_зависимых_записей_.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_задействовать_компоненту_Пополняемый_список_зависимых_записей_.html new file mode 100644 index 0000000..2e437a1 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_задействовать_компоненту_Пополняемый_список_зависимых_записей_.html @@ -0,0 +1,290 @@ + + + + + + + + Web-BPM Docs – Как задействовать компоненту Пополняемый список зависимых записей? + + + + + + +
+
+ + + +
+
+

Как задействовать компоненту “Пополняемый список зависимых записей”?

+

Постановка задачи: на пользовательской странице Карточка задачи, кроме набора параметров непосредственно самой задачи, необходимо обеспечить возможность прикрепления информации о нескольких приложенных документах (с атрибутами “имя документа”, “описание документа”) для последующего добавления в базу данных одной строки с информацией о задаче и одновременногодобавления нескольких строк в зависимую таблицу с сохранением взаимосвязи между вставленными в обе таблицы записями.

+

При открытии такой карточки на редактирование, согласно сохраненным ссылкам между записями, интерфейс системы должен отобразить и параметры самой задачи, и список сопоставленных с ней документов.

+

Страница “Карточка задачи” должна иметь следующие настройки:

+
    + +
  • в качестве главной сущности компоненты Формадолжна быть назначена таблица “Список задачи”(tasks), в которойимеются колонки с информацией о наименовании и описании задачи и колонка с первичным ключом (task_id).
  • +
  • внутри родительской компоненты-контейнераФормавсей страницы следует расположить 3 простых компоненты:Текстовое поледля параметраНаименование задачи,Текстовое поледля параметраОписание задачи.
  • +
  • в граф сущности элемента “Редактируемая Таблица” компоненты Пополняемый список зависимых записей включитьтаблицу “Вложенные документы задачи” (task_attachments), в которойимеются колонки с информацией “имя документа”, “описание документа” для хранения атрибутов файла и колонка для указания идентификатора задачи (task_id), с которым конкретный документ соотнесен.
  • +
  • внутри элемента Формакомпоненты Пополняемый список зависимых записей расположить2 простых компоненты:Текстовое поледля параметраИмя документа,Текстовое поледля параметраОписание документа
  • +
+

Решение задачи:

+

Предполагается, что страница Карточка задачи уже создана бизнес-аналитиком и в логике бизнес-процесса определена необходимая переменная процесса task_id, значение которой заполняется перед открытием страницы пользователем. Для добавления на страницу и настройки компоненты Форма необходимо сделать следующее:

+
    + +
  • добавить внутрь страницы компоненту Форма (рис.1)
  • +
  • в настройках добавленной Формы перейти к разделу Подгрузка данных основная - Источник данных - Граф сущностейи настроить его в соответствии с условием задачи (рис.2).
  • +
+

+ +
+
рис.1 Добавление компоненты Форма на страницу    
+рис.2 Настройка Графа сущностей компоненты Форма
+
+ + +

+ +
+
рис.3 Настройка переменной процесса
+
+ +
    + +
  • расположить компоненты для отображения параметровНаименование задачи, Описание задачии настроить их на отображение информации из источника данных (рис.4, рис.5)
  • +
+ +
+ + + + + + + + + + + + + + + + + + +
+
+ +

+
+
+ +

+
рис.4 Добавление элемента Наименованиерис.5 Добавление элемента Описание
+
+ +

На этом настройка компоненты Форма для работы с базой данных завершена.

+
    + +
  • добавить внутрь только что сконфигурированной компоненты Форма (рис.1) сложный компонент “Пополняемый список зависимых записей” (рис. 6):
  • +
+


+рис.6 Добавление компоненты Пополняемый список зависимых записей

+
    + +
  • перейти к элементу Редактируемая таблица и настроить все реквизиты параметра “Пополняемый список зависимых записей”. Подгрузка данных (рис.7, рис.8, рис.9)
  • +
+

рис.7 Настройка параметра “Пополняемый список зависимых записей”. Подгрузка данных

+

**
+**

+ +
+ + + + + + + + + + + + + + + + + + +
+
+ +

+
+
+ +

+ +

+ +

Таблицы Список задач и Вложенные документы связаны по колонке task_id, при этом для таблицы "Список задач" (главная сущность компоненты Форма всей страницы) колонка task_id является первичным ключом, а для таблицы "Вложенные документы" (основная сущность элемента Редактируемая таблица сложной компоненты) колонка task_id является ссылочной колонкой на таблицу Список задач (внешним ключом).

+
рис. 8 Формирование Графа сущности элемента Редактируемая таблица +

рис. 9 Настройка взаимосвязей таблиц

+
+ +
    + +
  • оставаясь в элементе Редактируемая таблица так же настроить параметрТаблица. Настроить колонки таблицы (рис. 10)
  • +
+

рис.10 Настройка параметраТаблица. Настроить колонки таблицы

+
    + +
  • перейти к элементу Форма в сложном компоненте и, ничего не меняя в настройках, разместить внутри этого элементакомпоненты для работы с полямиНаименование документа, Описание документа (рис. 11)****
  • +
+

+

рис. 11 Размещение компонент в элементе Форма

+
    + +
  • + +

    настроить только что добавленные текстовые компоненты Наименование документа, Описание документана работу с источником данных, указанным в графе сущности элемента Редактируемая таблица (рис. 12, рис. 13)

    + +
    + + + + + + + + + + + + + + + + + + +
    +
    + +

    +
    +
    + +

    +
    рис.12 Настройка компоненты Наименование документарис.13 Настройка компоненты Описание документа
    +
    +
  • +
  • + +

    Для создания новой записи (INSERT) или изменения имеющихся значений (UPDATE), необходимо добавить на страницу компоненту Кнопка сохранения и указать этой кнопке наФорму, согласно Графу сущностей которой следуют провести операцию добавления новой записи или обновления существующей информации после нажатия на кнопку (рис.14)

    +
  • +
+ +
+ + + + + + + + + + + + + + +
+
+ +


+

+
+

рис.14 Настройка элемента Кнопка сохранения

+ +

Заполнение параметра Компонент "Форма" Кнопки сохранения происходит путем перетаскивания манипулятором мышь объекта "Основная Форма страницы " из дерева структуры страницы в окно параметра Компонент "Форма" Кнопки сохранения (как показано стрелкой на скриншоте).

+ +

Также существует удобная функциональность обратного быстрого перехода по дереву структуры страницы к задействованной компоненте посредством клика на параметре Компонент "Форма" Кнопки сохранения, когда есть необходимость уточнить, на какую именно компоненту в дереве ссылается интересующий параметр.

+
+ +

В результате выполнения указанной последовательности действий и запуска приложения, интерфейс экранной формы примет следующий вид :

+

+ +
+
+ +
+
+

Attachments:

+
+ + +
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_задействовать_компоненту_Список_зависимых_записей_.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_задействовать_компоненту_Список_зависимых_записей_.html new file mode 100644 index 0000000..37806aa --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_задействовать_компоненту_Список_зависимых_записей_.html @@ -0,0 +1,165 @@ + + + + + + + + Web-BPM Docs – Как задействовать компоненту Список зависимых записей? + + + + + + +
+
+ + + +
+
+

Как задействовать компоненту Список зависимых записей?

+

Постановка задачи: на пользовательской странице Направление на испытание АП (алкогольной продукции), где уже располагаются все необходимые атрибуты (дата направления, инспектор, количество образцов на испытание и другие поля) необходимо реализовать возможность добавления пользователем дополнительных видов испытаний (одного или нескольких) продукции из заранее сформированного перечня, предлагаемого в виде списка из которого можно включать или исключать необходимую запись(и). Данная возможность должна быть реализована с помощью элемента Список зависимых записей, иерархически вложенного и зависящего от основной компоненты Форма на текущей странице.

+

При открытии страницы Направление на испытание АПна редактирование, согласно сохраненным ссылкам между записями, интерфейс системы должен отобразить не только параметры самого направления (дату направления, лабораторию, количество образцов на испытание и др.), но и список связанных с ним дополнительных испытаний на проверку АП, ранее выбранных и сохранённых пользователем при формировании данного направления в системе.

+

Список зависимых записей(список дополнительных испытаний АП) должен иметь следующие настройки:

+
    + +
  • элемент Список зависимых записей должен располагаться внутриосновной компоненты Форма на текущей странице, для того чтобы данные отобранные с помощью этой компоненты,сохранялись считывались из/в базу данных;
  • +
  • в Граф сущностейв качестве Главной сущности основной результирующейТаблицы зависимых записей на странице должна быть определена таблица базы данных (справочник испытаний АП) -dic_test, на которую ссылается по ключу таблица связи product_review_request_referral_dic_test (данная таблица необходима, так как является таблицей связи между справочником испытаний dic_test и таблицей базы данных, где хранятся направления на испытания АП -product_review_request_referral, определенной в качестве Главной сущности компонентыФормана странице);
  • +
  • в основной результирующейТаблице зависимых записей на странице должно отображаться наименование выбранного(ых) пользователем дополнительного(ых) испытания(й) АП, то есть должна быть включена колонка Наименование (name) таблицы базы данных Справочник испытаний (dic_test)с отображаемым на странице заголовком Дополнительные испытания;
  • +
  • вГраф сущностейв качестве Главной сущности Таблицы доступных строк для выбора пользователем должна быть определенатаблица базы данных (справочник испытаний АП)-dic_test и в настройках колонок Таблицы должна быть включена колонкаНаименование (name) с отображаемым на странице заголовком Вид испытания;
  • +
  • Связанную таблицу уже выбранных пользователем строк настраивать нет необходимости, поскольку по умолчанию (с помощью уже включенной в базовую конфигурацию функции - Продублировать конфигурацию текущей таблицы (с доступными строками) в таблицу уже выбранных строк) дублирует конфигурацию Таблицы доступных строк для выбора.
  • +
+

Решение задачи:

+

Предполагается, что страница Направление на испытание АП уже реализована бизнес-аналитиком, где имеется основная компонента Форма, в структуру сущностей которой в качестве Главной сущности включена таблица базы данных, где хранятся направления на испытания АП-product_review_request_referral (рис.1), на которую будет ссылаться основная Таблица компоненты Список зависимых записей, что позволит сохранять/подгружать значения из/в базы данных, отобранные с помощью этой компоненты.

+

Для добавления на страницу и настройки Списка зависимых записей необходимо сделать следующее:

+
    + +
  • добавить внутрь Формы компоненту Список зависимых записей и для удобства переименовать ее, например как, Дополнительные испытания (рис.2);
  • +
+


+

+ +
+
рис.1 Редактор структуры сущностей основной компоненты Форма           
+рис.2 Добавление компоненты Список зависимых записей внутрь Формы  
+
+ +
    + +
  • настроить в соответствии с условиемзадачи основную Связанную таблицу зависимых записей (в списке компонент, входящих в структуру Списка зависимых записей, находится первой по очередности над Кнопкой “Изменить”). +
      + +
    • в Граф сущностей настраиваемого элемента необходимо включить две таблицы базы данных: Справочник испытаний АП -dic_test (главная сущность) и таблица связи между справочником испытаний и направлением на испытаниеАП -product_review_request_referral_dic_test (рис.3).
    • +
    • в свойстве компоненты Таблица. Настроить колонки таблицы необходимо указать колонку Наименование (name) таблицы базы данных dic_test (рис.4)
    • +
    • в свойстве компонентыСписок зависимых записей. Взаимосвязи таблиц производим следующие настройки (рис.4):
      +> Колонка, ссылающаяся на таблицу “доступных”-указывается колонка dic_test_id таблицы базы данныхproduct_review_request_referral_dic_test, включенной в Граф сущностей текущей настраиваемой Связанной таблицы, что обеспечит связь с главной сущностью dic_testТаблицы доступных строк для выбора;
      +>Колонка, ссылающаяся на “основную” таблицу -указывается колонкаproduct_review_request_referral_idтаблицы базы данныхproduct_review_request_referral_dic_test, включенной в Граф сущностей текущей настраиваемой Связанной таблицы, что обеспечит связь с главной таблицей product_review_request_referralв Графе сущностей основной компоненты Форма на странице;
      +>Колонка “основной” таблицы - указывается колонка (первичный ключ) product_review_request_referral_id таблицы базы данныхproduct_review_request_referral, которая определена в качестве главной таблицы в Графе сущностейосновной компонентыФормана странице, на которую ссылается текущаянастраиваемаяСвязанная таблица;
    • +
    +
  • +
+


+*

+ +
+
рис.3 Редактор структуры сущностей Связанной таблицы                 
+рис.4 Настройка колонок таблицы и Взаимосвязи таблиц
+
+ +

настроить в соответствии с условиями задачи Таблицу доступных строк для выбора пользователем(в списке компонент, входящих в структуру Списка зависимых записей, находится первой по очередности внутри элемента Диалог).

+
    + +
  • в Граф сущностейнастраиваемого элемента необходимо включить в качестве Главной сущности таблицу базы данныхСправочник испытаний АП-dic_test(рис.5)
  • +
  • в свойстве компоненты Таблица. Настроить колонки таблицы необходимо указать колонкуНаименование (name)таблицы базы данныхdic_test(рис.6)
  • +
+


+

+ +
+
рис.5 Редактор структуры сущностей Таблицы доступных строк                     
+рис.6 Настройка колонок Таблицы доступных строк  
+
+ +
    + +
  • Связанную таблицууже выбранных пользователем строк (в списке компонент, входящих в структуру Списка зависимых записей, находится после Вертикального контейнера с кнопками действий “Добавить”, “Добавить все”, “Удалить”, “Удалить все” - рис.7) настраивать нет необходимости, поскольку по умолчанию дублирует конфигурацию (настройки) Таблицы доступных строк. Для этого используется функцияПродублировать конфигурацию текущей таблицы (с доступными строками) в таблицу уже выбранных строк,включенная в свойства Таблицы доступных строк (рис.8) +

    рис.7 Связанная таблица уже выбранных пользователем строк рис.8 Настройка функции Продублировать конфигурацию текущей таблицы в таблицу выбранных строк

  • +
+ +
    + +
  • настройки Кнопок действий"Добавить", “Добавить все”, “Удалить”, “Удалить все”, используемые для добавления исключения записей в/из Таблицы доступных строк и Связанной таблицы уже выбранных пользователем строк, находящихсявнутрикомпоненты Диалог - оставить неизменными, т.е. по умолчанию заданными.
  • +
  • настройки Кнопок подтверждения и отмены действия “Ок”/“Отмена”, находящихся внутри компоненты Диалог,остаются по умолчанию заданными.
  • +
+

Результат выполнения задачи:

+

После применения изменений на странице, в экранной форме пользовательского приложения, мы видим, что на странице отображается основная Таблицазависимых записей - “Дополнительные испытания” с кнопкой “Изменить”(рис.9). По нажатию на кнопку “Изменить” происходит открытие диалогового окна на странице со списком доступных записей для выбора пользователем. В левой части окна отображается список видов дополнительных испытаний АП, в правой части - список выбранных пользователем записей из предложенного справочника (рис.10). Выбор (исключение) записей осуществляется с помощью кнопок"Добавить", “Добавить все”, “Удалить”, “Удалить все”, расположенных в контейнере между Таблицей доступных строк для выбора и Таблицей уже выбранных строк (рис.11). После того, как список необходимых видов испытаний был сформирован пользователем, по нажатию на кнопку подтверждения действий “Выбрать” происходит перенос записей из Таблицы выбранных строк в основную Таблицу зависимых записей на странице (рис.12). Сохранение значений, отобранных с помощью компоненты Список зависимых записей, в таблицу базы данных будет произведено вместе с сохранением основнойФормы на странице по нажатию на кнопку “Сохранить”.

+ +
+
рис.9 Основная таблица зависимых записей на странице                  
+рис.10 Диалоговое окно со списком видов испытаний для выбора
+
+ +


+

+ +
+
рис.11 Добавление (исключение) записей из Таблицы доступных в Таблицу выбранных строк          
+рис.12 Основная таблица зависимых записей с выбранными значениями
+
+ +
+
+

Attachments:

+
+ + +
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_задействовать_компоненту_Список_зависимых_записей_поле_.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_задействовать_компоненту_Список_зависимых_записей_поле_.html new file mode 100644 index 0000000..43c97db --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_задействовать_компоненту_Список_зависимых_записей_поле_.html @@ -0,0 +1,133 @@ + + + + + + + + Web-BPM Docs – Как задействовать компоненту Список зависимых записей (поле)? + + + + + + +
+
+ + + +
+
+

Как задействовать компоненту Список зависимых записей (поле)?

+

Постановка задачи: на пользовательской страницеформирования отчетных форм Отчётность, в окне ввода параметров для одного из доступных отчетов (Отчет о состоянии утверждения), необходимо реализовать возможность выбора нескольких Утверждающих, идентификаторы которых будут передаваться в виде массива на вход отчетной формы. Параметр Утверждающие должен позволять выбрать нескольких сотрудников из актуального Справочника сотрудников.

+

Список зависимых записей (поле)(Утверждающие) должен иметь следующие настройки:

+
    + +
  • элемент*Список зависимых записей (поле)*должен располагаться внутри окна Параметры отчета (Диалог);
  • +
  • элемент*Список зависимых записей (поле)*должен иметь заголовок Утверждающие и внутри поля должна отображаться подсказка “Выбрать сотрудников”
  • +
  • выбранные значения в Поле с множественным выбором должны отображаться через точку запятой
  • +
  • в диалоговом окне Параметров отчета Поле с множественным выбором не должно быть доступно для управления, выбор сотрудников должен осуществляться только в зависимом диалоговом окне выбора “Выбор утверждающих”
  • +
  • вГрафе сущностейэлемента Поле с множественным выбором в качестве Главной сущностидолжна быть определена таблица базы данных (справочник Сотрудников)-employee.Отображаемым значением пользователю должна быть выбрана колонка employee.name_short_email
  • +
  • вГраф сущностейв качестве Главной сущностиТаблицыдоступных строк для выбора пользователем должна быть определенатаблица базы данных (справочник сотрудников)-employee,на которую ссылается представление базы данных view_admin_employee и связь с которой ограничит список доступных для выбора значений. В настройках колонок Таблицы должна быть включена колонкаФИО (view_admin_employee.name) с отображаемым на странице заголовком ФИО;
  • +
  • Связанную таблицууже выбранных пользователем строк настраивать нет необходимости, поскольку по умолчанию (с помощью уже включенной в базовую конфигурацию функции -Продублировать конфигурацию текущей таблицы (с доступными строками) в таблицу уже выбранных строк) дублирует конфигурациюТаблицыдоступных строк для выбора.
  • +
+

Решение задачи:

+

Предполагается, что страницаОтчетность и окно ввода параметров для отчета - компонентаДиалогуже реализована бизнес-аналитиком, с соответствующей логикой для формирования печатнойформысо страницы приложения.

+

Для добавления на страницу и настройкиСписка зависимых записей (поле)необходимо сделать следующее:

+

добавить внутрь Диалога (окна параметров отчетной формы) компоненту*Список зависимых записей (поле)*и для удобства переименовать ее, например как,Утверждающие (рис.1)

+

+

рис.1 Добавление компоненты Список зависимых записей (поле) в окно Параметры отчета настроить в соответствии с условиемзадачи Поле множественного выборазависимых записей:

+
    + +
  • в Основных параметрах Поля множественного выбора необходимо заполнить значениями следующие свойства (рис.2): +
      + +
    • Надпись - Утверждающие
    • +
    • Видимость -(Истина)
    • +
    • Недоступно для управления -(Истина)
    • +
    • Разделитель - ;
    • +
    +
  • +
  • в функции Поле с множественным выбором. Подгрузка данных вГраф сущностейнастраиваемого элемента необходимо включитьтаблицу базы данных (справочник Сотрудников)-employee.(рис.3)
  • +
  • в функции Поле с множественным выбором. Подгрузка данных в свойстве “Отображаемая колонка” необходимо указать колонку базы данных ФИО сотрудника -employee.name_short_email (рис.3)
  • +
+

рис.2 Настройка основных параметров компоненты Поле с множественным выбором
+рис.3 Настройка Графа сущностей компоненты Поле с множественным выбором

+

настроить в соответствии с условиями задачиТаблицудоступных строк для выбора пользователем(в списке компонент, входящих в структуру Списка зависимых записей (поле), находится первой по очередности внутри элементаДиалог).

+
    + +
  • в Граф сущностейнастраиваемого элемента необходимо включить в качестве Главной сущности таблицу базы данныхСправочник пользователей -employee ина которую ссылается представление базы данных view_admin_employee(рис.4)
  • +
  • в свойстве компоненты Таблица. Настроить колонки таблицы необходимо указать колонкуФИО (name)таблицы базы данных view_admin_employee(рис.5)
  • +
+

рис.4 Редактор структуры сущностей Таблицы доступных строк
+рис.5 Настройка колонок Таблицы доступных строк

+
    + +
  • Связанную таблицууже выбранных пользователем строк (в списке компонент, входящих в структуру Списка зависимых записей (поле), находится после Вертикального контейнера с кнопками действий"Добавить", “Добавить все”, “Удалить”, “Удалить все”- рис.6)настраивать нет необходимости, поскольку по умолчанию дублирует конфигурацию (настройки)Таблицыдоступных строк. Для этого используется функцияПродублировать конфигурацию текущей таблицы (с доступными строками) в таблицу уже выбранных строк,включенная в свойстваТаблицыдоступных строк (рис.7)
  • +
+

рис.6 Связанная таблица уже выбранных пользователем строк
+рис.7 Настройка функции Продублировать конфигурацию текущей таблицы в таблицу выбранных строк

+
    + +
  • настройки Кнопок действий"Добавить", “Добавить все”, “Удалить”, “Удалить все”, используемые для добавления исключения записей в/изТаблицыдоступных строк иСвязанной таблицыуже выбранных пользователем строк, находящихсявнутрикомпонентыДиалог- оставить неизменными, т.е.по умолчанию заданными.
  • +
  • настройки Кнопок подтверждения и отмены действия"Ок"/“Отмена”,находящихся внутри компонентыДиалог,остаютсяпо умолчанию заданными.
  • +
+

Результат выполнения задачи:

+

После применения изменений на странице, в экранной форме пользовательского приложения, мы видим, что к окне Параметры отчета добавлено Поле с множественным выбором - Утверждающие с кнопкой вызова диалогового окна выбора значений (рис.8).По нажатию на кнопку “Изменить” происходит открытие диалогового окна на странице со списком доступных записей для выбора пользователем. В левой части окна отображается список сотрудников (утверждающих), в правой части - список выбранных пользователем записей из предложенного справочника (рис.9). Выбор (исключение) записей осуществляется с помощью кнопок “Добавить”, “Добавить все”, “Удалить”, “Удалить все”, расположенных в контейнере между Таблицей доступных строк для выбора иТаблицейуже выбранных строк (рис.10). После того, как список необходимых видов испытаний был сформирован пользователем, по нажатию на кнопку подтверждения действий “Выбрать” происходит перенос записей из Таблицы выбранных строк в Поле множественного выбора, где значения разделены между собой символом точки запятой(рис.11).

+

рис.9 Окно Параметры отчета
+рис.10 Диалоговое окно со списком сотрудников для выбора

+

рис.11 Добавление записей из Таблицы доступных в Таблицу выбранных строк
+рис.12 Отображение результата выбора значений

+ +
+
+

Attachments:

+
+ + +
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_задействовать_компоненту_Флаг_на_странице_.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_задействовать_компоненту_Флаг_на_странице_.html new file mode 100644 index 0000000..152bf4f --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_задействовать_компоненту_Флаг_на_странице_.html @@ -0,0 +1,135 @@ + + + + + + + + Web-BPM Docs – Как задействовать компоненту Флаг на странице? + + + + + + +
+
+ + + +
+
+

Как задействовать компоненту Флаг на странице?

+

Постановка задачи: на пользовательской странице Карточка задачи, скрыть блоки параметров, касающихся сроков исполнения задачи и задействованных по ней сотрудников. При этом расположить и сделать видимыми компоненты Флаг, с помощьюкоторых можно открыть (cделать видимыми) изначально скрытые блоки.

+

Решение задачи:

+

Предполагается, что страница Карточка задачи уже создана бизнес-аналитиком.

+
    + +
  • Страница содержит блоки “Общие сведения”, “Сроки”, “Действующие лица”, реализованные с использованием компонент Группа полей. Снять с этих компонент параметр “Видимость”, чтобы при первоначальной загрузке страницы блоки “Сроки” и “Действующие лица” были невидимы. (рис.1)
  • +
+

+
    + +
  • в структуру страницы добавить 2 компоненты Флаг (без возможности сохранения), сразу после каждого из блоков “Сроки” и “Действующие лица”. Подобрать наименования для этих компонент, указывающее их назначение. Произвести настройку параметров “Надпись”, “Значение” (выставить FALSE) и “Расширенные настройки”→ “CSS классы” (рис. 2)
  • +
+

+

класс check-invert предписывает расположить сам визуальный значок компоненты перед параметром компоненты “Надпись”

+

класс free-label предписывает не форматировать значение параметра “Надпись”, располагая его свободным текстом после визуального значка компоненты

+
    + +
  • в структуру страницы добавить 2 компоненты Обработка событий для управления событиями и реакцией на них в случае изменения пользователем состояния компонент Флаг, а именно проставления флага или его снятия. Подобрать наименования для этих компонент, указывающее их назначение. Произвести настройку алгоритма реакции на событие. (рис. 3)
  • +
+ +
+ + + + + + + + + + + + + + + + + + +
+
+ +

+
+
+ +

+

+

+
+
+ +

В результате выполнения указанной последовательности действий и запуска приложения, интерфейс экранной формы примет следующий вид:

+ +
+
+

Attachments:

+
+ + +
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_использовать_компоненту_Текст_для_отображения_названия_организации_на_странице_.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_использовать_компоненту_Текст_для_отображения_названия_организации_на_странице_.html new file mode 100644 index 0000000..08a61c7 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_использовать_компоненту_Текст_для_отображения_названия_организации_на_странице_.html @@ -0,0 +1,95 @@ + + + + + + + + Web-BPM Docs – Как использовать компоненту Текст для отображения названия организации на странице? + + + + + + +
+
+ + + +
+
+

Как использовать компоненту Текст для отображения названия организации на странице?

+

Постановка задачи: необходимо реализовать на странице вывода информации об организации элемент Текст (с возможностью сохранения), который будет отображать наименование организации и сохраняться в базу данных, содержащий следующие настройки:

+
    + +
  • надпись поля -Название организации
  • +
  • поле должно иметь подсказку -Наименование организации
  • +
  • значение поля должно подгружаться из переменной процесса organization
  • +
  • сохранение значения должно осуществляться в базу данныхв таблицу organization колонку Организация (legal_entity_id)
  • +
+

Решение задачи:

+

Предполагается, что бизнес процесс и страница вывода информации об организации уже создана бизнес-аналитиком, где имеется ***основная компонента Форма***. Для добавления на страницу и настройки компоненты Текст (с возможностьюсохранения) необходимо сделать следующее:

+
    + +
  • добавить внутрь Формы компоненту Текст и произвести настройки согласно условию задачи (рис.1)
  • +
  • в функции Заполнить значением из переменной любого типа выбрать переменную процесса, относящуюся к организации****(рис.2)
    +(прим. переменная процесса была создана ранее при создании бизнес процесса)
  • +
  • в функции Сохранение значения необходимо указать таблицу и колонку БД, куда будет сохранена информация об организации (рис.2)
  • +
+

+ +
+
рис.1. Добавление компоненты Текст (с возможностью сохранения) на страницу   
+рис.2. Настройка компоненты Текст (с возможностью сохранения)
+
+ +

Результат выполнения задачи:

+

После применения изменений на странице, в экранной форме пользовательского приложения, мы видим, что условия задачи соблюдены, как, например, Текст соответствует наименованию организации (рис.3).

+

+

рис.3.Визуальное отображение выполнения условий задачи

+ +
+
+

Attachments:

+
+ + +
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_использовать_текстовое_поле_в_качестве_параметра_для_печатной_формы_.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_использовать_текстовое_поле_в_качестве_параметра_для_печатной_формы_.html new file mode 100644 index 0000000..14faab5 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_использовать_текстовое_поле_в_качестве_параметра_для_печатной_формы_.html @@ -0,0 +1,104 @@ + + + + + + + + Web-BPM Docs – Как использовать текстовое поле в качестве параметра для печатной формы? + + + + + + +
+
+ + + +
+
+

Как использовать текстовое поле в качестве параметра для печатной формы?

+

Постановка задачи: необходимо реализовать на странице вывода информации о департаменте текстовое поле, значение из которого будет использоваться в качестве входного параметра для формирования печатной (отчетной) формы об этом департаменте и будет иметь следующие настройки:

+
    + +
  • надпись поля -Название департамента
  • +
  • обязательно для заполнения пользователем приложения
  • +
  • ввод текста в поле должен осуществляться с использованиемтипа регистра -Первая буква-заглавная,то есть каждое новое слово в поле будет начинаться с заглавной буквы
  • +
  • поле должно иметь подсказку -Введите название департамента
  • +
  • к полю должны быть применены CSS-классы: фиксированный заголовок (fixed-label)
  • +
+

Решение задачи:

+

Предполагается, что страница вывода информации о департаменте уже создана бизнес-аналитиком, где имеется ***основная компонента Вертикальный контейнер***, куда включена и ссылается компонента Кнопка печати отчета из формы. Для добавления на страницу и настройки текстового поля в качестве параметра для печатной формы необходимо сделать следующее:

+
    + +
  • добавить внутрь Вертикального контейнера компоненту Текстовое поле, отключив у нее функцию Текстовое поле. Сохранения значения, поскольку в данном случае сохранения значения и подгрузки его из базы данных происходить не будет, значение будет вводиться пользователем на странице. Далее произвести настройкисогласно условию задачи (рис.1)
  • +
  • в компоненте Кнопка печати отчета из формы в качестве входного параметра указать созданное Текстовое поле (рис.2)
  • +
+

+ +
+
рис.1. Добавление текстового поля на страницу и настройка               
+рис.2. Настройка кнопки печати отчета с использованием текстового поля
+
+ +

Результат выполнения задачи:

+

После применения изменений на странице, в экранной форме пользовательского приложения, мы видим, что условия задачи соблюдены, как, например, текстовое поле обязательно для заполнения (рис.3) и каждое новое слово вводимого значения в поле автоматически начинается с Заглавной буквы (рис.4).

+

+ +
+
рис.3. Визуальное отображение условия обязательности поля     
+рис.4. Визуальное отображение выполнения условия: тип регистра Первая буква - заглавная
+
+ +
+
+

Attachments:

+
+ + +
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_использовать_текстовое_поле_для_настройки_видимости_других_элементов_на_странице_.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_использовать_текстовое_поле_для_настройки_видимости_других_элементов_на_странице_.html new file mode 100644 index 0000000..9110fbc --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_использовать_текстовое_поле_для_настройки_видимости_других_элементов_на_странице_.html @@ -0,0 +1,137 @@ + + + + + + + + Web-BPM Docs – Как использовать текстовое поле для настройки видимости других элементов на странице? + + + + + + +
+
+ + + +
+
+

Как использовать текстовое поле для настройки видимости других элементов на странице?

+

Постановка задачи: необходимо в зависимости от того, каким из возможных значений переменной процесса create_available, заполнилось по умолчанию скрытое Текстовое поле, отображать на странице Вывода предупреждения пользователю три варианта сообщения с помощью компоненты Текст:

+
    + +
  1. Невозможно создать документ. Выбранные партии соответствуют разным наименованиям ассортимента (когда значение переменной равно assort)
  2. +
  3. Невозможно создать документ. Одна или несколько из выбранных партий уже содержаться в ранее созданных свидетельствах и соответствуют разным наименованиям ассортимента(когда значение переменной равно certificate)
  4. +
  5. Невозможно создать документ. Одна или несколько из выбранных партий уже содержаться в ранее созданных решениях о невыдаче и соответствуют разным наименованиям ассортимента(когда значение переменной равно denial_decision)
  6. +
+

На странице Вывода предупреждения пользователю также должно быть реализовано:

+
    + +
  • видимый по умолчанию элемент Текст с примененным CSS-классом: title (заголовок), который будет служить заголовком страницы и содержать в себе статичный текст -Внимание!
  • +
  • кнопка навигации, по которой будет осуществляться Выход со страницы по значению registr_part
  • +
+

Решение задачи:

+

Предполагается, что страница Вывода предупреждения пользователю уже создана бизнес-аналитиком в проекте, как и переменная процесса create_available, имеющая тип строка и значение которой заполняется с помощьюОбработчика, выполняющего SQL-запрос перед открытием страницы. Для настройки Текстового поля и отображения информации на странице в соответствии с условиями задачи необходимо сделать следующее:

+
    + +
  • добавить видимый элемент Текст, который будет служить заголовком страницы и настроить его согласно условию задачи (рис.1)
  • +
  • добавить скрытое Текстовое поле (можно назвать его как create_available), значение которого будет заполняться из переменной процесса create_available (рис.2)
  • +
  • добавить кнопку навигации, по нажатию на которую будет осуществляться Выход со страницы и следующий переход по бизнес-процессу (рис.3)
  • +
+

+ +
+
        рис.1 Настройка заголовка страницы    
+        рис.2 Настройка скрытого Текстового поля          
+        рис.3 Настройка кнопки навигации
+
+ +
    + +
  • + +

    добавить три скрытых по умолчанию компоненты Текст, которые будут содержать в себе сообщения для пользователя (рис.4, рис.5, рис.6)

    + +
    +
    рис.4 Настройка первого сообщения пользователю   
    +рис.5 Настройка второго сообщения пользователю       
    +рис.6 Настройка третьего сообщения пользователю
    +
    +
  • +
  • + +

    добавить три Обработчика событий, которые в зависимости от значения Текстового поля будут отображать статичные сообщения пользователю (рис.7, рис.8, рис.9)

    +
  • +
+

+ +
+
    рис.7 Настройка обработчика событий для 1-го условия     
+    рис.8 Настройка обработчика событий для 2-го условия      
+    рис.9 Настройка обработчика событий для 3-го условия
+
+ +

Результат выполнения задачи:

+

После применения изменений на странице, в экранной форме пользовательского приложения, мы видим, что условия задачи соблюдены и сообщения пользователю на странице Вывода предупреждения отображаются корректно (рис.10, рис.11).

+

+ +
+
рис.10 Визуальное отображение вывода первого варианта предупреждения пользователю   
+рис.11 Визуальное отображение вывода второго варианта предупреждения пользователю
+
+ +
+
+

Attachments:

+
+ + +
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_отобразить_название_организации_текстом.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_отобразить_название_организации_текстом.html new file mode 100644 index 0000000..7f883a4 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Как_отобразить_название_организации_текстом.html @@ -0,0 +1,95 @@ + + + + + + + + Web-BPM Docs – Как использовать компоненту Текст для отображения названия организации на странице? + + + + + + +
+
+ + + +
+
+

Как использовать компоненту Текст для отображения названия организации на странице?

+

Постановка задачи: необходимо реализовать на странице вывода информации об организации элемент Текст (с возможностью сохранения), который будет отображать наименование организации и сохраняться в базу данных, содержащий следующие настройки:

+
    + +
  • надпись поля -Название организации
  • +
  • поле должно иметь подсказку -Наименование организации
  • +
  • значение поля должно подгружаться из переменной процесса organization
  • +
  • сохранение значения должно осуществляться в базу данныхв таблицу organization колонку Организация (legal_entity_id)
  • +
+

Решение задачи:

+

Предполагается, что бизнес процесс и страница вывода информации об организации уже создана бизнес-аналитиком, где имеется ***основная компонента Форма***. Для добавления на страницу и настройки компоненты Текст (с возможностьюсохранения) необходимо сделать следующее:

+
    + +
  • добавить внутрь Формы компоненту Текст и произвести настройки согласно условию задачи (рис.1)
  • +
  • в функции Заполнить значением из переменной любого типа выбрать переменную процесса, относящуюся к организации****(рис.2)
    +(прим. переменная процесса была создана ранее при создании бизнес процесса)
  • +
  • в функции Сохранение значения необходимо указать таблицу и колонку БД, куда будет сохранена информация об организации (рис.2)
  • +
+

+ +
+
рис.1. Добавление компоненты Текст (с возможностью сохранения) на страницу   
+рис.2. Настройка компоненты Текст (с возможностью сохранения)
+
+ +

Результат выполнения задачи:

+

После применения изменений на странице, в экранной форме пользовательского приложения, мы видим, что условия задачи соблюдены, как, например, Текст соответствует наименованию организации (рис.3).

+

+

рис.3.Визуальное отображение выполнения условий задачи

+ +
+
+

Attachments:

+
+ + +
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Многострочное_поле.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Многострочное_поле.html new file mode 100644 index 0000000..564a280 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Многострочное_поле.html @@ -0,0 +1,213 @@ + + + + + + + + Web-BPM Docs – Многострочное поле + + + + + + +
+
+ + + +
+
+

Многострочное поле

+

Назначение

+

Многострочное поле - это компонента, которая используетсядля ввода и отображения нескольких строк текста. В таком текстовом поле допустимо делать переносы строк.

+

В зависимости от настройки свойств, включенных по умолчанию в состав компоненты, компонента Многострочное полеможет использовать для:

+
    + +
  • Для сохранения введенной информации в базу данных и отображения значения из базы данных (в данном случае, функция компоненты Поле многострочного ввода. Сохранение значения должно быть включена).
  • +
  • Для отображения текста, который был введен пользователем приложения или является константой, определённой в логике приложения (в данном случае, функция компоненты Поле многострочного ввода. Сохранение значения должна быть выключена или удалена через настройки функции по кнопке).
  • +
+

Компонента Многострочное поле находится в разделе Компоненты - Поля - Многострочное поле.

+

Свойства

+

Компонента имеет набор общих свойств. Ниже отображены свойства, специфичные только для данной компоненты.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Подсказка позволяет создать подсказку, расположенную внутри элемента пример возможного значения: Введите название организации
Надпись позволяет задать наименование поля, которое будет отображаться на странице пример возможного значения: Наименование организации
Значение позволяет задать значение поля по умолчанию пример возможного значения: ООО “Форт”
Максимальная длина задаёт максимальное количество вводимых символов в поле пример возможного значения: 10
Минимальная длина (Min length) задаёт минимальное количество вводимых символов в поле
allowMoreSymbols при true позволяет пользователю ввести больше символов, чем значение максимальной длины, но при этом поле станет невалидным и будет отображено сообщение об ошибке maxLengthErrorMsg (см. документацию) логическое значение (true, false)
Оперировать немаскированным значением позволяет регулировать возможность ввода текста в соответствии с маской, даже если маска задана (значение маски указывается в расширенных настройках в поле “маска, ограничивающая ввод”) +
    +
  • значение не определено - по умолчанию
  • +
  • активно - сохранять без форматирования маской
  • +
  • пустое - сохранять с форматированием маской
Маска позволяет задать маску, в соответствии с которой пользователь будет осуществлять ввод текста выставление маски не может обеспечить выполнение требования обязательности ввода, маска только внешне отфильтровывает и форматирует последовательность вводимых пользователем символов заранее заданным образом (например, ввод тел. номера “+ 7 (917) - 101 - 02 - 03” вместо “8917010203” или не допустит такого ввода “89170102АЯ”). Для блокирования сохранения записи с пустым значением поля и обеспечения контроля обязательности ввода используйте свойство “Обязательность”
Регистр позволяет задать вид регистра вводимого текста +
    +
  • в верхнем регистре - заглавные (прописные) буквы
  • +
  • в нижнем регистре - строчные (маленькие) буквы
  • +
  • первая буква каждого слова заглавная
  • +
  • только первая буква текста заглавная, остальные строчные
  • +
  • первая буква текста заглавная
Тип позволяет задать тип вводимого текста +
    +
  • обычный текст
  • +
  • пароль (заполнитель - звездочки)
  • +
  • электронная почта
  • +
  • URL
Регулярное выражение или Pattern позволяет задать проверку вводимого текста с помощью регулярных выражений поля, для которых не выполняются условия заданных регулярных выражений, при сохранении записи подсвечиваются красным оттенком и операция отменяется.
patterErrorMsg, maxLengthErrorMsg, minLengthErrorMsg позволяют задать пользовательское сообщение о соответствующих ошибках валидации строка
+

Примеры масок:

+
    + +
  • A (буква, латинская, регистр не имеет значения) в маске - позволит ввести в поле одну любую букву любого алфавита
  • +
  • Б (буква, русская, в верхнем регистре) в маске - позволит ввести в поле одну любую букву русского алфавита
  • +
  • 9 (цифра) в маске - позволит ввести в поле одну любую цифру
  • +
  • * (символ) в маске - позволит ввести в поле одну любую цифру или букву
  • +
  • R (буква, латинская, в верхнем регистре) в маске - позволит ввести в поле одну римскую цифру
  • +
  • ? (символ) в маске - позволит ввести или опустить при вводе в поле один необязательный символ (букву, цифру) ,например 999?9; под эту маску подходит как 123, так и 1234
  • +
+

Например, необходимо задать форматирование ввода маской для значения Й456QЬ. В данном случае маска будет выглядеть следующим образом: А999АА, где А - латинская буква.

+

Некоторые типовые регулярные выражения:

+
    + +
  • \d [0-9] - одна цифра от 0 до 9
  • +
  • \D [^0-9] - любой символ кроме цифры
  • +
  • \s - пробел
  • +
  • [A-Z] - только заглавная латинская буква
  • +
  • [A-Za-z] - только латинская буква в любом регистре
  • +
  • [А-Яа-яЁё] - только русская буква в любом регистре
  • +
  • [A-Za-zА-Яа-яЁё] - любая буква русского и латинского алфавита
  • +
  • [0-9]{3} - три цифры
  • +
  • [A-Za-z]{6,} - не менее шести латинских букв
  • +
  • [0-9]{,3} - не более трёх цифр
  • +
  • [0-9]{5,10} - от пяти до десяти цифр
  • +
  • ^[a-zA-Z]+$ - любое слово на латинице
  • +
  • ^[А-Яа-яЁё\s]+$ - любое слово на русском включая пробелы
  • +
  • ^[ 0-9]+$ - любое число
  • +
+

Например, чтобы ограничить возможность ввода и сохранения текста латиницей, можно использовать регулярное выражение ^[А-Яа-яЁё\s]+$

+

Свойство Поле многострочного ввода. Сохранение значения

+

+

В случае, если значение в многострочное поле необходимо сохранить или подгрузить из базы данных, указывается поле таблицы базы данных, куда будет сохраняться и откуда будет подгружаться введенное значение.Для выбора доступны только колонки имеющий строковый тип в базе данных. В случае, если значение многострочного поля не требуется сохранять или подгружать из базы данных, то данное свойство удаляется (или отключается). Данный вариант может быть необходим, когда многострочное поле используется дляотображения текста, который был введен пользователем приложения или является константой, определённой в логике приложения.

+

+

Заполнить значением по умолчанию

+

Заполнить значением по умолчанию

+

Заполнить значением из переменной процесса

+

Заполнить значением из переменной процесса

+

Сохранить значение в переменную процесса любого типа

+

Сохранить значение в переменную процесса любого типа

+

Определить права текущего пользователя

+

Определить права текущего пользователя

+

Определить роли текущего пользователя

+

Определить роли текущего пользователя

+

Склеить несколько значений

+

Склеить несколько значений

+

Методические рекомендации по применению

+

Пошаговые инструкции по применению компонента в типовых задачах Вы можете найти в разделах:

+ +

Часто задаваемые вопросы

+ + + + + + + + + + + + + + + + + + + + + + + + +
Вопрос Ответ
Чем отличается компонента Поле многострочного вводаот компоненты Текст? Компонента Поле многострочного ввода используются для отображения многострочного текста на странице, где предусмотрены переносы строк.
Все ли свойства компоненты обязательны для заполнения? Нет.Свойства компоненты определяются в зависимости от решаемой задачи.
Возникнет ли ошибка при запуске приложения, если оставить незаполненным свойство Поле многострочного ввода. Сохранение значения? Да. В случае, если функция “Поле многострочного ввода. Сохранения значения” включена у элемента и не заполнены ее параметры, то при валидации проекта возникнет ошибка. Если по условию задачи данное поле не должно подгружаться и сохраняться в базу данных, данную функцию в компоненте необходимо либо отключить либо удалить.
Если удалить базовые функции, которые включены в компоненту по умолчанию, например, “Заполнить значением по умолчанию” можно ли будет вновь их добавить? Да. Если удалить какую-то базовую функцию компоненты, то по кнопке “Добавить функцию” она будет доступна для выбора.
Можно ли ограничить перенос строки по нажатию на клавишу Enter в Многострочном поле? Чаще всего подобногорода задачи решаются использованием Маски в свойствах элемента. Для того, чтобы ограничить перенос строки по нажатию на клавишу Enter в Многострочном поле необходимо в Расширенных настройках в свойстве Маска указать значение[^\r\n]* и перевести значение флага regexMask =true
+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Настройка_взаимозависимых_полей_с_подбором_значения.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Настройка_взаимозависимых_полей_с_подбором_значения.html new file mode 100644 index 0000000..485e41b --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Настройка_взаимозависимых_полей_с_подбором_значения.html @@ -0,0 +1,88 @@ + + + + + + + + Web-BPM Docs – Настройка взаимозависимых полей с подбором значения + + + + + + +
+
+ + + +
+
+

Настройка взаимозависимых полей с подбором значения

+

Дано: два поля City (Город), District (Район). Сущности: country, city, country_city.

+

Задача: настроить подгрузку районов в зависимости от выбранного города, т.е. если в первом поле выбрали Казань, то во втором должны подгружаться казанские районы, н-р, Вахитовский.

+

Решение:

+
    + +
  1. + +

    Задать сущность для поля City (Autocomplete Service - Load Dao) - выбрать city. Настроить свойства поля:

    +
  2. +
  3. + +

    Задать сущности для поля District (Autocomplete Service - Load Dao) -country, city,country_city. Настроить связи между ними:
    +2.1. Тянем стрелки от country_city к country и city.
    +2.2. Выделяем стрелку, нажимаем кнопку “Элемент”, выбираем исходящую и входящую колонки.

    +
  4. +
  5. + +

    Настроить остальные свойства поля District:
    +3.1. Задать родителя (City) - drag&drop City в свойство Parent Control поля District.
    +3.2. Выставить значения Parent Control Reference - city, city_id.
    +3.3. Настроить оставшиеся свойства, в т.ч. Column For Sort, Display Column.

    +
  6. +
+

Результат: в поле Город выбрали Казань. В поле район можно выбирать только казанские районы, в данном случае Вахитовский.

+ +
+
+

Attachments:

+
+ +
+ +

city-attr.JPG (image/jpeg)
+ relations-1.JPG (image/jpeg)
+ relations-2.JPG (image/jpeg)
+ district-attr.JPG (image/jpeg)
+ dependents_autocomplete.JPG (image/jpeg)

+
+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Переключатель.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Переключатель.html new file mode 100644 index 0000000..d5173b1 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Переключатель.html @@ -0,0 +1,152 @@ + + + + + + + + Web-BPM Docs – Переключатель + + + + + + +
+
+ + + +
+
+

Переключатель

+

Назначение

+

Переключатель - это компонента, которая используется для выбора одного из нескольких предоставленных вариантов.Значения берутся из базы данных,а не вводятся вручную.

+

В зависимости от настройки свойств, включенных по умолчанию в состав компоненты, компонента Переключатель может использоваться для:

+
    + +
  1. Для сохранения введенной информации в базу данных и отображения значения из базы данных (в данном случае, функция компоненты Переключатель. Сохранение значения должна быть включена)
  2. +
  3. Для отображения значений,которые были введены пользователем приложенияили являются константой, определённой в логике приложения (в данном случае, функция компоненты Дата. Сохранение значения должна быть выключена или удалена через настройки функции по кнопке)
  4. +
+

Компонента Переключатель находится в разделе Компоненты - Поля - Переключатель.

+

Свойства

+

Компонента имеет набор общих свойств. Ниже отображены свойства, специфичные только для данной компоненты.

+ + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Подсказка позволяет создать подсказку, расположенную внутри элемента. Данное свойство не применимо с логикой отображения поля на странице приложения
Надпись позволяет задать наименование поля, которое будет отображаться на странице пример возможного значения: Статусы
+

Свойство Переключатель. Подгрузка данных

+

+

Позволяет задать источник подгрузки/сохранения данных в компоненту из/в объекта базы данных (таблицы или представления) с указанием следующих дополнительных настроек:

+
    + +
  • Граф сущностей элемента настраивается в соответствии с п. Настройка Графа сущностей. Является обязательным к заполнению и настройке.
  • +
  • Возвращать значение дополнительно из - по умолчанию компонента возвращает идентификатор записи выбранной из справочника значений. Настройка данного параметра позволяет указать компоненте, какое значение необходимо дополнительно считать и вернуть, кроме значения идентификатора выбранной пользователем записи.
  • +
  • + +

    Колонка наименования - позволяет задать колонку базы данных, значение которой будет отображено пользователю в списке

    +
  • +
  • + +

    Порядок сортировки - позволяет задать порядок сортировки отображаемых значений в списке для выбора, принимает значения:

    +
      + +
    • по возрастанию- значения будут сортироваться от меньшего к большему
    • +
    • по убыванию- значения будут сортироваться от большего к меньшему
    • +
    +
  • +
  • + +

    Колонка сортировки - позволяет задать колонку базы данных, по которой будет производиться сортировка

    +
  • +
+

Пример возможной настройки:

+

+

Свойство Переключатель. Сохранение значения

+

+

В случае, если значение в поле Переключатель необходимо сохранить или подгрузить из базы данных, указывается поле таблицы базы данных, куда будет сохраняться и откуда будет подгружаться введенное значение. Для выбора доступны только колонки имеющие числовой тип в базе данных.

+

В случае, если значение поля Переключатель не требуется сохранять или подгружать из базы данных, то данное свойство удаляется (или отключается). Данный вариант может быть необходим, когда поле используется для отображения значения, которое было введено пользователем приложения или является константой, определённой в логике приложения.

+

+

Базовые функции

+

Заполнить значением по умолчанию

+

Заполнить значением по умолчанию

+

Заполнить значением из переменной процесса

+

Заполнить значением из переменной процесса

+

Дополнительные функции

+

В ходе настройки свойств компоненты (заданных по умолчанию) может оказаться недостаточно для выполнения поставленной задачи и получения необходимого результата.

+

Для каждой компоненты предусмотрен перечень функций, расширяющих её базовую функциональность, которые можно добавить нажатием кнопки Добавить скрипт.

+

Вследствие технических особенностей реализации функций (функции, которые выполняются удаленно на сервере приложений,- функции, которые выполняются в браузере пользователя), они имеют разные иконки, но это никак не влияет на их функциональность или предпочтительность использования.

+

Сохранить значение в переменную процесса любого типа

+

Сохранить значение в переменную процесса любого типа

+

Методические рекомендации по применению

+

Пошаговые инструкции по применению компонента в типовых задачах Вы можете найти в разделах:

+ +

Часто задаваемые вопросы

+ + + + + + + + + + + + + + + + + + + + + +
Вопрос Ответ
Чем отличается компонента Статичный переключатель от компоненты Переключатель? Компонента Статичный переключательиспользуются для выбора значений, которые вводятся аналитиком при настройке компоненты,Переключательиспользуется для выбора значений,которые берутся из базы данных.
Все ли свойства компоненты обязательны для заполнения? Нет.Свойства компоненты определяются в зависимости от решаемой задачи.
Возникнет ли ошибка при запуске приложения, если оставить незаполненным свойство Переключатель. Сохранение значения? Да. В случае, если функция “Переключатель. Сохранения значения” включена у элемента и не заполнены ее параметры, то при валидации проекта возникнет ошибка. Если по условию задачи данное поле не должно подгружаться и сохраняться в базу данных, данную функцию в компоненте необходимо либо отключить либо удалить.
Если удалить базовые функции, которые включены в компоненту по умолчанию, например, “Заполнить значением по умолчанию” можно ли будет вновь их добавить? Да. Если удалить какую-то базовую функцию компоненты, то по кнопке “Добавить функцию” она будет доступна для выбора.
+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Поле_ввода_с_подбором_значения.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Поле_ввода_с_подбором_значения.html new file mode 100644 index 0000000..bfaec12 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Поле_ввода_с_подбором_значения.html @@ -0,0 +1,201 @@ + + + + + + + + Web-BPM Docs – Поле ввода с подбором значения + + + + + + +
+
+ + + +
+
+

Поле ввода с подбором значения

+

Назначение

+

Поле ввода с подбором значения - это компонента, которая визуально выглядит как обычное поле ввода, но по мере набора пользователем символов с клавиатуры подбирает, отображая возможные варианты, значений из подключенного справочника, при этом функционируя уже как компонента Выпадающий список.

+

В зависимости от настройки свойств, включенных по умолчанию в состав компоненты, компонента Поле ввода с подбором значения может использоваться для:

+
    + +
  1. Для сохранения введенной информации в базу данных и отображения значения из базы данных (в данном случае, функция компоненты Поле ввода с подбором значения. Сохранение значения должна быть включена)
  2. +
  3. Для отображения данных, которые были введены пользователем приложения или является константой, определённой в логике приложения(в данном случае, функция компоненты Поле ввода с подбором значения. Сохранение значения должна быть выключена или удалена через настройки функции по кнопке)
  4. +
+

Компонента Поле ввода с подбором значения находится в разделе Компоненты - Поля - Поиск.

+

Свойства

+

Компонента имеет набор общих свойств. Ниже отображены свойства, специфичные только для данной компоненты.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Надпись позволяет задать наименование поля, которое будет отображаться на странице пример возможного значения: Район
Зависит от позволяет указать объект (родителя), например Выпадающий список, по идентификатору которого будут отображаться сведения в текущем зависимом элементе
Начать подбор вариантов после ввода позволяет задать количество символов, после ввода которых пользователем, компонента начинает подбор и вывод вариантов, соответствующих уже введенной пользователем подстроке пример возможного значения: 3
Прикрепить значение (Scroll Gravity) позволяет задать расположение уже выбранного значения при отображении в выпадающем списке доступных значений позволяет задать расположение уже выбранного значения при отображении в выпадающем списке доступных значений +
    +
  • По умолчанию (DEFAULT) - выбранное значение отображается в порядке своего следования в списке доступных значений для выбора
  • +
  • По центру (CENTER) - выбранное значение отображается по центру в выпадающем списке доступных значений для выбора
  • +
  • В верхней части (TOP)- выбранное значение отображается в верхней части выпадающего списка доступных значений для выбора
  • +
  • В нижней части (BOTTOM) - выбранное значение отображается в нижней части выпадающего списка доступных значений для выбора
Исключить условия графа данное свойство позволяет подгружать для отображения значения в поле минуя условия (ограничения), заданные в Графе сущностей компоненты +
    +
  • Не активно - в данном состоянии, при подгрузке значений отсекаются значения не соответствующие условиям, заданным в Графе сущностей компоненты
  • +
  • Активно - в данном состоянии, при подгрузке значений допускается отображение значений, не соответствующих условиям, заданным в Графе сущностей компоненты, но без возможности их повторного выбора в выпадающем списке
Помечать невалидным (Mark invalid if not Satisfy) данное свойство доступно для управления при активации значении свойства Exclude Graph Conditions и позволяет визуально помечать поле как невалидное на странице, в случае если в него было подгружено значение, не соответствующие условиям Графа сущностей элемента +
    +
  • Не активно - в данном значении, поле не помечается на странице как невалидное и отображается стандартным образом
  • +
  • Активно - в данном значении, убрав фокус с поля, оно помечается на странице как невалидное
Css class if not Satisfy данное свойство доступно для управления при активном значении свойства Exclude Graph Conditions и позволяет задать CSS-класс, который будет применяться, в случае если в поле было подгружено значение, не соответствующие условиям Графа сущностей элемента
Tooltip if not Satisfy позволяет отображать всплывающую подсказку,в случае если в поле было подгружено значение, не соответствующие условиям Графа сущностей элемента. Данное свойство доступно для управления при: активном значении свойства Exclude Graph Conditions и заданному значению в поле Css Class If Not Satisfy пример возможного значения: not_valid
+

Свойство компоненты: Поле ввода с подбором значения. Сохранение значения

+

+

указывается поле таблицы базы данных, куда будет сохраняться и откуда будет подгружаться введенное значение

+

+

Функции

+

В ходе настройки свойств компоненты (заданных по умолчанию) может оказаться недостаточно для выполнения поставленной задачи и получения необходимого результата.

+

Для каждой компоненты предусмотрен **перечень функций, расширяющих её базовую функциональность,**которые можно добавить нажатием кнопки Добавить скрипт.

+

Вследствие технических особенностей реализации функций (функции, которые выполняются удаленно на сервере приложений, функции, которые выполняются в браузере пользователя), они имеют разные иконки, но это никак не влияет на их функциональность или предпочтительность использования.

+

Сохранить значение в переменную процесса любого типа

+

Определить права текущего пользователя

+

Определить права текущего пользователя

+

Определить роли текущего пользователя

+

Определить_роли_текущего_пользователя

+

Заполнить значением из переменной процесса

+

Заполнить значением из переменной процесса

+

Сконвертировать значение в целочисленный тип

+

Сконвертировать значение в целочисленный тип

+

Заполнить значением по умолчанию

+

Заполнить значением по умолчанию

+

Методические рекомендации по применению

+

Пошаговые инструкции по применению компонента в типовых задачах Вы можете найти в разделах:

+ +

Часто задаваемые вопросы

+ + + + + + + + + + + + + + + +
Вопрос Ответ
Чем отличается компонента Поле ввода с подбором значения от компоненты Выпадающий список? Поле ввода с подбором значения отличается от компоненты Выпадающий список тем, что не показывает и не подгружает сразу все строки из справочника, но по мере ввода пользователем подстроки предлагает всё более усеченный список вариантов, выводя только релевантные уже введенной подстроке значения.
Значение какого типа возвращает компонента? В общем случае может быть любым (чаще всего целочисленным или строковым).Тип возвращаемого компонентойзначения определяется выбором аналитиком метода, который возвращает значение, а также типом колонки в базе данных.
+

Метод “Получить значение” возвращает первичный ключ и тип такого значения зависит от типа колонки первичного ключа в базе данных (обычно целочисленный bigint).

+

Метод"Задать значение" выставляет в компоненте значение, соответствующее значению в колонке с первичным ключом.

+

Метод “Получить значение BusinessId” возвращает значение колонки, заданной в параметре компоненты “Возвращать значение доп.колонки(BusinessId)” и определяется типом этой колонки в базе данных.

+

Метод “Задать значение поBusinessId” выставляет в компонентезначение, соответствующее значению в колонке, указанной в параметре компоненты"Возвращать значение доп.колонки(BusinessId)".

+

В этом примере функции “Получить значение” и “Задать значение” работаю следующим образом:

+ + + + + + + + + + + + + + + + + + + + + +
Функция в обработчике событий Пример использования
Получить значение BusinessId +
    +
  1. Пользователь выбрал значение на форме из справочника
  2. +
  3. Для выбранной пользователем записи значение из колонки, которая указана в параметре Возвращать значение доп. колонки (BusinessId), возвращается значение
Пример: Для справочника статусов задачи для BusinessId указана дополнительная колонка CODE. Значение этой колонки будет возвращено этой функцией при выборе пользователя.
Получить значение +
    +
  1. Пользователь выбрал значение на форме из справочника
  2. +
  3. Для выбранной пользователем записи значение из колонки, которая указана как первичный ключ, возвращается значение
Пример: Для справочника статусов задачи для первичного ключа указана колонка STATUS_ID. Значение этой колонки будет возвращено этой функцией при выборе пользователя.
Задать значение BusinessId +
    +
  1. Аналитик выбрал значение из справочника для отображения в поле по умолчанию. Выбор выполнен через дополнительное поле BusinessId, а точнее с помощью CODE. Для этого с помощью функции Задать значение указывается квалификатор (статичное), тип значения (строка) и само значение (например, “ЗАДАЧА ЗАВЕРШЕНА”)
  2. +
  3. Обработчик события загрузки формы вызывает функцию задания значения
  4. +
  5. Поле ввода автоматически по заданному CODE = “ЗАДАЧА ЗАВЕРШЕНА”; находит единственную запись в справочнике и отображает пользователю как значение по умолчанию
Задать значение +
    +
  1. Аналитик выбрал значение из справочника для отображения в поле по умолчанию. Выбор выполнен через первичный ключ, а точнее с помощью STATUS_ID. Для этого с помощью функции “Задать значение” указывается квалификатор (статичное), тип значения (целое число) и само значение (например, “123”)
  2. +
  3. Обработчик события загрузки формы вызывает функцию задания значения
  4. +
  5. Поле ввода автоматически по заданному STATUS_ID = 123 находит единственную запись в справочнике и отображает пользователю как значение по умолчанию
+

Дополнительная функция “Сконвертировать значение в целочисленный тип” как раз используется для явной конвертации возвращаемого компонентой неопределенного типа (ANY) в явно желаемый Integer (например, при присвоении идентификатора строки выбранного в компоненте значения какой-либо переменной целого типа на странице).

+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Пополняемый_список_зависимых_записей.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Пополняемый_список_зависимых_записей.html new file mode 100644 index 0000000..844f287 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Пополняемый_список_зависимых_записей.html @@ -0,0 +1,449 @@ + + + + + + + + Web-BPM Docs – Пополняемый список зависимых записей + + + + + + +
+
+ + + +
+
+

Пополняемый список зависимых записей

+

Назначение

+

Пополняемый список зависимых записей - это составной компонент, которыйиспользуется для выполнения на одной web-странице двух последовательных действий - добавления одной или нескольких новых строк в зависимую (от главной сущности компоненты Форма на текущей странице) таблицу и последующую взаимосвязь (линкование) каждой из вновь добавленных в зависимую таблицу строкс главной сущностьюкомпоненты Форма на текущей странице. Примером такого использования может служить необходимость прикрепления сразу нескольких сканированных документов (т.е. добавление набора файлов с атрибутами имя файла, описание, размер и т.д. в виде отдельных строк взависимую таблицу “Вложения”) к какой-то одной заявке (является главной сущностью компоненты Форма основной страницы, на которой находится пользователь).

+

Если web-страница открывается в режиме просмотра/изменения, то компонента отображает и позволяет внести изменения в список ранее уже связанных записей зависимой таблицы с главной сущностью компоненты Форма.

+

Для того, чтобы сформированные в этой компоненте строки сохранялись/считывались из/в базу данных, Пополняемый список зависимых записей следует по иерархии расположить внутри компоненты Форма.

+

Работа с компонентой осуществляется в следующей последовательности:

+
    + +
  • нажатие кнопки создать (изменить) в панели кнопок компоненты (в составе компоненты находится над элементом Редактируемая таблица)
  • +
  • в открывшемся экранном интерфейсе (элемент компоненты Диалог) ввести атрибуты создаваемой (изменяемой) записи
  • +
  • сохранение записи в элемент “Редактируемая таблица” компоненты Пополняемый список зависимых записей по нажатию на кнопку “Ок”
  • +
  • сохранение всей карточки главной сущностикомпоненты Форма, при котором осуществляется взаимопривязка (линкование) каждой записи из элемента “Редактируемая таблица” к главной сущности экранного интерфейса
  • +
+

Компонента Пополняемый список зависимых записей находится в разделе Компоненты - Сложные - Пополняемый список зависимых записей.

+

Структура компоненты Пополняемый список зависимых записей представлена набором простых компонентов, связанных между собой заранее определенными алгоритмами, и в нее входят следующие элементы (рис.2)

+

Структура

+

Основные вложенные элементы компоненты “Пополняемый список зависимых записей”(табл.1)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование элемента Описание
Пополняемый список зависимых записей Корневой контейнер вертикального выравнивания компоненты, в который по иерархии вложены все дочерние компоненты. основные параметры элемента “Список зависимых записей”
Кнопка создать используется для открытия (вызова) диалогового окна с экранным интерфейсом для ввода атрибутов записи, которую необходимо добавить в связанную таблицу
Кнопка редактировать используется для открытия (вызова) диалогового окна с экранным интерфейсом для изменения атрибутов записи, которую необходимо добавить в связанную таблицу
Кнопка Удалить используется для удаления ранее уже связанной записи в зависимой таблице
Редактируемая таблица используется для отображения строк в зависимой таблице, которые уже связаны с главной сущностью компоненты Форма
Диалог используется для отображения всплывающего диалогового окна, позволяющего ввести или изменить атрибуты зависимой записи
Форма компонента - контейнер используется для наполнения её простыми компонентами, которые позволят пользователю ввести значения атрибутов зависимой записи (при добавлении или изменении)
Кнопка Сохранение используется для сохранения введенных пользователем в поля формы значений атрибутов зависимой записи
Кнопка Отмены используется для отмены ввода значений атрибутов зависимой записи и закрывает Диалог
+

Свойства

+

Компонента имеет набор общих свойств.

+

прим.: с полным описанием компоненты и её настройки также можно ознакомиться в разделе - Вертикальный контейнер

+

Базовые функции элемента “Пополняемый список зависимых записей”

+

Заполнить значением по умолчанию

+

Основные параметры элемента Редактируемая таблица

+

прим.: с полным описанием компоненты и её настройки также можно ознакомиться в разделе - Таблица

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Показывать номер строки позволяет задать автоматическую нумерацию строк +
    +
  • значение не определено - по умолчанию
  • +
  • Активно - отображать нумерацию строк
  • +
  • Не активно - не отображать нумерацию строк
Multiselectable позволяет задать возможность единовременного выбора одной или нескольких записей в Таблице; выбранные строки окрашиваются в отличный от других строк цвет +
    +
  • возможность выбора сразу нескольких или одной строки
  • +
  • возможность выбора одной строки - значение по умолчанию
Checkbox Column позволяет поставить отметку в виде флажка на тех записях, которые выбраны пользователем в рамках работы с компонентой +
    +
  • значение не определено - по умолчанию
  • +
  • Активно - отображать колонку флагов +
  • Не активно - не отображать колонку флагов
Pinned Bottom Row Label позволяет задать значение для названия итоговой строки таблицы (строки с агрегирующими значениями по колонкам таблицы) пример возможного значения: Итого
Row click selection type позволяет задать поведение выбора строк при клике на строку Таблицы +
    +
  • SINGLE_SELECT_CLICK – при клике на строку предыдущие выбранные строки сбрасываются, если не была зажата клавиша Ctrl или Shift- данный метод выбран по умолчанию
  • +
  • MULTI_SELECT_CLICK -при каждом клике на строку, предыдущие выбранные строки не сбрасываются, т.е если кликнули на одну строку, а затем на другую, то первая строка останется выбранной. Клик по уже выбранной строке снимает с неё выделение. Использования данного метода допустимо, в случае, если в таблице доступен выбор нескольких строк (при значениисвойстваMultiselectable)
  • +
  • SUPPRESS_SELECT_CLICK – исключает возможность выбора (выделения) строки по клику. В данном случае, выбор строки представляется возможным только при использовании чекбоксов.
Форма ввода и сохранения зависимых записей Позволяет указать (методом DragAndDrop) ссылку на элемент Пополняемый список зависимых записей - Форма. В текущем компоненте, в которой будут вводиться атрибуты записей для последующей вставки в зависимую таблицу (или отображаться уже сохраненные при открытии в режиме просмотра) По умолчанию уже заполнена соответствующей ссылкой на этот элемент
Loading Overlay Type позволяет выбрать вид прелоадера при подгрузке данных в таблицу Доступны следующие виды настройки: +
    +
  • TEXT_OVERLAY - отображает текст в центре таблицы при подгрузке данных, задаваемый в свойствах: No Rows Overlay Message и Loading Overlay Message
  • +
  • PROGRESS_BAR - отображает прогресс-бар при подгрузке данных в таблицу
Allow Context Menu With позволяет управлять отображением контекстного меню (список доступных для исполнения действий) при нажатии правой кнопкой мыши на ячейку внутри таблицы +
    +
  • значение не определено - по умолчанию
  • +
  • Активно - при нажатии правой кнопкой мыши на ячейку внутри таблицы отображается контекстное меню доступных действий, например, копирование значения ячейки
  • +
  • Не активно - исключает отображение контекстного меню при нажатии правой кнопкой мыши на ячейку внутри таблицы
+

Свойство компоненты: “Пополняемый список зависимых записей”. Подгрузка данных

+

+

позволяет задать граф сущностей для подгрузки данных в Таблицу. Является обязательным к заполнению и настройке.

+

Особенностью данной настройки является обязательная необходимость указания колонок, по которым связаны таблица, в которую добавляются зависимые записи (в примере - “Вложенные документы задачи”), и таблица главной сущности компоненты Форма (в примере - “Список задач”)

+

С описанием настройки Графа сущностей для Таблицы можно ознакомиться в разделе: Настройка Графа сущностей

+

Свойство компоненты: Таблица. Настроить колонки таблицы

+

+

позволяет настроить колонки (набор , порядок следования, сортировка) в Таблице

+

Отображает новые записи, добавляемые пользователем с использованием компоненты Пополняемый список зависимых записей

+

с описанием настройки Колонок Таблицы можно ознакомиться в разделе:

+

Настройка колонок Таблицы

+

Свойство компоненты: Активировать кнопку после выбора строки в таблице

+

+

Автоматически переводит кнопки “Редактировать”, “Удалить” в кликабельное состояние после выбора строки в Редактируемой таблице.

+

Если ни одна строка в Редактируемой таблице не выбрана, то кнопки не могут быть нажаты пользователем.

+

Базовые функции элемента “Редактируемая таблица”

+

Заполнить значением по умолчанию

+

Основные параметры элемента Кнопка “Создать”

+

прим.: с полным описанием компоненты и её настройки также можно ознакомиться в разделе - Кнопка

+ + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Надпись на кнопке позволяет создать надпись на кнопке Создать - значение по умолчанию
Текст подтверждения при нажатии позволяет задать текст, который будет отображен пользователю внутри диалогового окна вместе с кнопками для подтверждения действия - Да/Нет
+

Свойство компоненты: Диалог. Вызвать

+

+

указывается ссылка на дочерний элемент Пополняемый список зависимых записей - Диалог, для отображениявсплывающего диалогового окна, позволяющего ввести или изменить атрибуты зависимой записи при нажатии на кнопку

+

Свойство компоненты: “Пополняемый список зависимых записей”. Создать новую зависимую запись в списке

+

+

Предписывает системе, что нужно связать логикой исполнения перечисленные дочерние элементы Пополняемый список зависимых записей - Диалог, в котором находится элемент Пополняемый список зависимых записей - Форма, информация из полей которой потребуется для вставки записей в Редактируемую (зависимую) таблицу.

+

Параметры заполнены по умолчанию ссылками на элементы, иерархически входящими в состав компоненты Пополняемый список зависимых записей

+
    + +
  • Форма ввода и сохранения зависимых записей: заполняется ссылкой на дочерний элемент Пополняемый список зависимых записей - Форма основная результирующая таблица с выбранными (зависимыми) записями на странице
  • +
  • Пополняемый список зависимых записей : указывается ссылка на дочерний элемент Редактируемая таблица, которая отображает строки в зависимой таблице
  • +
  • Вызываемый диалог: указывается ссылка на дочерний элемент Пополняемый список зависимых записей - Диалог, для отображениявсплывающего диалогового окна, позволяющего ввести или изменить атрибуты зависимой записи
  • +
  • Вызываемый диалог: указывается текст заголовка дочернего элемента Диалог, по умолчанию принимает значение “Создание записи” (но может быть изменен)
  • +
+

Основные параметры элемента Кнопка “Редактировать”

+

прим.: с полным описанием компоненты и её настройки также можно ознакомиться в разделе - Кнопка

+ + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Надпись на кнопке позволяет создать надпись на кнопке Редактировать - значение по умолчанию
Текст подтверждения при нажатии позволяет задать текст, который будет отображен пользователю внутри диалогового окна вместе с кнопками для подтверждения действия - Да/Нет Внести изменения в список?
+

Свойство компоненты: Диалог. Вызвать

+

+

Вызвать диалог - указывается ссылка на дочерний элемент Пополняемый список зависимых записей - Диалог, для отображениявсплывающего диалогового окна, позволяющего ввести или изменить атрибуты зависимой записи при нажатии на кнопку

+

Свойство компоненты: “Пополняемый список зависимых записей”. Изменить новую зависимую запись в списке

+

+

Предписывает системе, что нужно связать логикой исполнения перечисленные дочерние элементы Пополняемый список зависимых записей - Диалог, в котором находится Пополняемый список зависимых записей - Форма, информация из полей которой потребуется для вставки записей в Редактируемую (зависимую) таблицу.

+

Параметры заполнены по умолчанию ссылками на элементы, иерархически входящими в состав компоненты Пополняемый список зависимых записей

+
    + +
  • Форма ввода и сохранения зависимых записей: заполняется ссылкой на дочерний элемент Пополняемый список зависимых записей - Форма основная результирующая таблица с выбранными (зависимыми) записями на странице
  • +
  • Пополняемый список зависимых записей : указывается ссылка на дочерний элемент Редактируемая таблица, которая отображает строки в зависимой таблице
  • +
  • Вызываемый диалог: указывается ссылка на дочерний элемент Пополняемый список зависимых записей - Диалог, для отображениявсплывающего диалогового окна, позволяющего ввести или изменить атрибуты зависимой записи
  • +
  • Вызываемый диалог: указывается текст заголовка дочернего элемента Диалог, по умолчанию принимает значение “Редактирование записи” (но может быть изменен)
  • +
+

Основные параметрыэлемента “Кнопка Удалить”

+

прим.: с полным описанием компоненты и её настройки также можно ознакомиться в разделе-Кнопка

+ + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Надпись на кнопке позволяет создать надпись на кнопке Удалить - значение по умолчанию
Текст подтверждения при нажатии позволяет задать текст, который будет отображен пользователю внутри диалогового окна вместе с кнопками для подтверждения действия - Да/Нет
+

Свойство компоненты: “Пополняемый список зависимых записей”. Удалить новую зависимую запись в списке

+

+

Предписывает системе произвести операцию удаления выбранной записи из элемента Редактируемая (зависимая) таблица

+

Основные параметры элемента “Диалог”

+

прим.: с полным описанием компоненты и её настройки также можно ознакомиться в разделе - Диалог

+ + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Заголовок позволяет задать заголовок диалога на странице пример возможного значения: Выбор записей - значение по умолчанию
Допускается скрытие через системную Х позволяет задать возможность закрытия диалога по нажатию на системный возможно закрыть диалог через- значение по умолчанию, невозможно закрыть диалог (системный скрыт)
+

Базовые функции элемента “Диалог”

+

Заполнить значением по умолчанию

+

Основные параметры элемента “Форма”

+

прим.: с полным описанием компоненты и её настройки также можно ознакомиться в разделе - Форма

+ + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Пополняемый список зависимых записей Устанавливает взаимосвязь с элементом Редактируемая (зависимая) таблица, указывая Системе, в какую таблицу должна сохранить (или считать) данные элементу Пополняемый список зависимых записей #Форма
Диалог Указывает системе на взаимосвязь с родительским элементом Пополняемый список зависимых записей #Диалог, в котором элемент Форма находится
+

Свойство компоненты: “Форма”. Подгрузка данных основная

+ + + + + + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Скрипт Используется в предустановленной конфигурации по умолчанию, изменений со стороны пользователя не требует
Show server validation error Позволяет выводить текст с северной ошибкой при загрузке формы. +
    +
  • Активно - выводит текст серверной ошибки
  • Не активно - не выводить текст серверной +
  • +
  • Значение не определено - по умолчанию
Message validation template Позволяет задать текст шаблона валидации
+

Базовые функции элемента “Форма”

+

Заполнить значением по умолчанию

+

Основные параметры элемента “Кнопка Сохранения”

+

прим.: с полным описанием компоненты и её настройки также можно ознакомиться в разделе - Кнопка сохранения

+ + + + + + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Надпись на кнопке позволяет задать надпись на кнопке Значение “Ок” по умолчанию, может быть изменено
Текст подтверждения при нажатии позволяет задать текст, который будет отображен пользователю внутри диалогового окна вместе с кнопками для подтверждения действия - Да/Нет
Компонента Форма Указывает системе, данные из какого элемента Пополняемый список зависимых записей #Форма следует сохранить в таблицу зависимых записей
+

Основные параметры элемента “Кнопка Отмена”

+

прим.: с полным описанием компоненты и её настройки также можно ознакомиться в разделе - Кнопка

+ + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Надпись на кнопке позволяет задать надпись на кнопке Значение “Отмена” по умолчанию, может быть изменено
Текст подтверждения при нажатии позволяет задать текст, который будет отображен пользователю внутри диалогового окна вместе с кнопками для подтверждения действия - Да/Нет
+

Свойство компоненты: Диалог. Скрыть

+

+

Предписывает системе закрыть элемент Пополняемый список зависимых записей #Диалог в случае нажатия на кнопку Отмена

+

Базовые функции

+

Заполнить значением по умолчанию

+

Дополнительные функции

+

В ходе настройки свойств компоненты (заданных по умолчанию) может оказаться недостаточно для выполнения поставленной задачи и получения необходимого результата.

+

Для каждой компоненты предусмотренперечень функций, расширяющих её базовую функциональность,которые можно добавить нажатием кнопки Добавить скрипт

+

Вследствие технических особенностей реализации скриптов (

+

-скрипты выполняются удаленно на сервере приложений,

+

- скрипты выполняются в браузере пользователя), они имеют разные иконки, но это никак не влияет на их функциональность или предпочтительность использования.

+

Методические рекомендации по применению

+

Пошаговые инструкции по применению компонента в типовых задачах Вы можете найти в разделах:

+ +

Часто задаваемые вопросы

+ + + + + + + + + + + + + + + + + + + + + + + + +
Вопрос Ответ
Какие параметры компоненты “Пополняемый список зависимых записей” требуют непосредственной настройки аналитиком? Большинству описанных параметров элементов сложного компонента уже заранее заданы значения по умолчанию, и они не требуют каких-либо изменений от аналитика в типовых случаях. Но часть параметров следует задать в процессе использования компоненты для её внедрения в логику проекта. Вот список этих параметров: “Пополняемый список зависимых записей”. Подгрузка данных; “Таблица”. Настроить колонки таблицы; И дополнительно наполнить полями элемент Пополняемый список зависимых записей #Форма - на этом шаге от аналитика требуется заполнить в дереве страницы контейнер элемента Форма необходимыми простыми компонентами для оперирования атрибутами вставляемой записи.
Можно ли поменять порядок отображаемых колонок в Таблице? Для того, чтобы изменить порядок колонок в Таблице необходимо в свойстве Настроить колонки таблицы - Колонки нажать правой кнопкой мыши на «Элемент» и выбрать предложенные варианты: Переместить наверх - Переместить вниз - Удалить элемент
Как изменить формат отображения данных в колонке Таблицы? В случае, если необходимо изменить формат отображения значений в колонке Таблицы необходимо при настройке колонки применить Форматтер. Например, подгружаемое значение в колонку имеет тип данных Дата и Время (DateTime), но на странице пользовательского приложения необходимо отображать значение в колонке без Времени, только Дату. В таком случае, целесообразно использовать форматтер DateFormatter, который отобразит значение колонки в нужном виде. Но при этом предварительно необходимо применить к Таблице функцию Очистить форматирование колонок таблицы, указав наименование настраиваемой колонки.
Можно ли изменить цветовое оформление Таблицы? Да. Цветовым оформлением Таблицы можно управлять с помощью CSS-стилей, задаваемых в Основных параметрах - Расширенные настройки - CSS классы
Как автоматически вывести сумму значений по колонке в Таблицу? Для того, чтобы на странице отобразилась сумма значений по колонке, необходимо при настройке колонки выбрать Агрегирующую функцию - Сумма, после чего в Таблице автоматически отобразится зафиксированная (положение не будет изменяться при прокрутке записей) результирующая строка в Таблице. При этом строка будет выделена отличным от других записей в таблице цветом и значение в результирующем поле будет динамически изменяться по мере заполнения колонки (выбранной в качестве источника данных) новыми значениями в таблице базы данных.С описанием настройки колонок в Таблице можно ознакомиться в разделе: Настройка колонок Таблицы
+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Список_зависимых_записей.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Список_зависимых_записей.html new file mode 100644 index 0000000..88554ab --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Список_зависимых_записей.html @@ -0,0 +1,777 @@ + + + + + + + + Web-BPM Docs – Список зависимых записей + + + + + + +
+
+ + + +
+
+

Список зависимых записей

+

Назначение

+

Список зависимых записей - это составной компонент, который используется для формирования и отображения списка выбранных пользователем и связанных с главной сущностью (компонентой Формана текущей странице) записей (одной или нескольких) из множества доступных, но без возможности пополнения пользователем списка доступных записей. Примером использования может служить задача назначения нескольких сотрудников из списочного состава организации в команду проекта, когда списочный состав - это заранее сформированный и нередактируемый из компоненты справочник сотрудников, из которого можно только выбирать тех, кто будет включен в команду проекта.

+

Для того чтобы данные, отобранные с помощью этой компоненты, сохранялись/считывались в/из базы данных, её необходимо расположить внутри (вложить) компоненты Форма.

+

Компонента Список зависимых записей находится в разделе Компоненты - Поля - Список зависимых записей.

+

В структуру компоненты Список зависимых записей, представленной набором простых компонентов и связанных между собой заранее определенными алгоритмами, входят следующие элементы

+

Работа с компонентой и выбор требуемых значений из списка доступных записей осуществляется в следующей последовательности:

+
    + +
  • нажатие Кнопки “Изменить”, расположенной рядом с основной Таблицей зависимых записей на странице(в составе компоненты находится под элементом Связанная таблица); по нажатию на кнопку происходит открытие всплывающего диалогового окна
  • +
  • поиск необходимых значений в Таблице доступных записей (на странице в диалоговом окне находится слева)
  • +
  • выбор значения с помощью Кнопок “Добавить” или *“Добавить все” *из списка доступных записей; по нажатию на кнопку происходит перенос (добавление) записи из Таблицы доступных значений (на странице в диалоговом окне находится слева) в Связанную таблицу выбранных значений (на странице в диалоговом окне находится справа)
  • +
  • удаление выбранного значения с помощью Кнопок “Удалить” или “Удалить все” из списка уже выбранных значений; по нажатию на кнопку происходит перенос (удаление) записи из Связанной таблицы выбранных значений(на странице в диалоговом окне находится справа) и возвращение записи в Таблицу доступных значений(на странице в диалоговом окне находится слева)
  • +
  • перенос значений из Связанной таблицы выбранных записей в результирующую Связанную таблицу с главной сущностью (компонентой Формана текущей странице) по нажатию на Кнопку “Ок” и закрытие диалогового окна
  • +
  • сохранение всей карточки главной сущности компоненты Форма, при котором осуществляется взаимопривязка (линкование) каждой записи из элемента “Связанная таблица” к главной сущности экранного интерфейса
  • +
+

Структура

+

Основные вложенные элементы компоненты Список зависимых записей

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование элемента Описание
Список зависимых записей контейнер вертикального выравнивания, в который вложены все дочерние компоненты
Связанная таблица используется для отображения строк в зависимой таблице, которые уже связаны сглавной сущностью компоненты Форма
Кнопка Изменить используется для открытия (вызова) диалогового окна со списком доступных значений для выбора
Диалог используется для отображения всплывающего диалогового окна со списком доступных значений для выбора
Таблица используется для отображения списка доступных значений (записей) для выбора (во всплывающем диалоговом окне находится слева)
Кнопка Добавить используется для переноса (добавления) одной выбранной записи из Таблицы
Кнопка Добавить все используется для переноса (добавления) всех записей из Таблицы всех доступных значений(на странице в диалоговом окне находится слева)вСвязанную таблицувыбранных значений(на странице в диалоговом окне находится справа)
Кнопка Удалить используется для исключения (удаления) строки из Связанной таблицы уже выбранных значений (на странице в диалоговом окне находится справа) и обратного переноса в Таблицу всех доступных значений(на странице в диалоговом окне находится слева)
Кнопка Удалить все используется для исключения (удаления) всех строк из Связанной таблицы уже выбранных значений (на странице в диалоговом окне находится справа) и обратного переноса в Таблицу всех доступных значений(на странице в диалоговом окне находится слева)
Связанная таблица используется для отображения списка уже выбранных пользователем записей (во всплывающем диалоговом окне находится справа) из массива доступных значений (записей) для выбора. Необязательна для настройки (только при необходимости более детального вывода информации), так как по умолчанию дублирует конфигурацию
Кнопка Ок используется для переноса значений из Связанной таблицы выбранных записей в результирующую Связанную таблицу с главной сущностью(компонентойФормана текущей странице)и закрытия диалогового окна
Кнопка Отмена используется для отмены выбора значений из списка доступных и закрытия диалогового окна
+

Свойства

+

Компонента имеет набор общих свойств.

+

Основные параметры Список зависимых записей

+

прим.: с полным описанием компоненты и её настройки также можно ознакомиться в разделе - Вертикальный контейнер

+

Основные параметры Связанной таблицы

+

прим.: с полным описанием компоненты и её настройки также можно ознакомиться в разделе - Таблица

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Показывать номер строки позволяет задать автоматическую нумерацию строк +
    +
  • значение не определено - по умолчанию
  • +
  • Активно - отображать нумерацию строк
  • +
  • Не активно - не отображать нумерацию строк
Подсказка позволяет создать подсказку, расположенную внутри элемента
Надпись позволяет задать наименование поля, которое будет отображаться на странице
Multiselectable позволяет задать возможность единовременного выбора одной или нескольких записей в Таблице; выбранные строки окрашиваются в отличный от других строк цвет +
    +
  • возможность выбора сразу нескольких или одной строки
  • +
  • возможность выбора одной строки - значение по умолчанию
Checkbox Column позволяет поставить отметку в виде флажка на тех записях, которые выбраны пользователем в рамках работы с компонентой +
    +
  • значение не определено - по умолчанию
  • +
  • Активно - отображать колонку флагов +
  • Не активно - не отображать колонку флагов
Pinned Bottom Row Label позволяет задать значение для названия итоговой строки таблицы (строки с агрегирующими значениями по колонкам таблицы) пример возможного значения: Итого
Row click selection type позволяет задать поведение выбора строк при клике на строку Таблицы +
    +
  • SINGLE_SELECT_CLICK – при клике на строку предыдущие выбранные строки сбрасываются, если не была зажата клавиша Ctrl или Shift- данный метод выбран по умолчанию
  • +
  • MULTI_SELECT_CLICK -при каждом клике на строку, предыдущие выбранные строки не сбрасываются, т.е если кликнули на одну строку, а затем на другую, то первая строка останется выбранной. Клик по уже выбранной строке снимает с неё выделение. Использования данного метода допустимо, в случае, если в таблице доступен выбор нескольких строк (при значениисвойстваMultiselectable)
  • +
  • SUPPRESS_SELECT_CLICK – исключает возможность выбора (выделения) строки по клику. В данном случае, выбор строки представляется возможным только при использовании чекбоксов.
Save Column State позволяет задать возможность сохранения пользовательских настроек в части состава и ширины колонок в таблице +
    +
  • значение не определено - по умолчанию
  • +
  • Активно - изменения пользователя в части отображаемых колонок в таблице (состав и ширина) будут сохраняться в локальном хранилище, т.е. если пользователь исключил для отображения конкретную колонку или изменил ширину столбца в таблице, то при повторном переходе на страницу эти изменения отобразятся
  • +
  • Не активно - не сохранять изменения пользователя в части отображаемых колонокв таблице (состав и ширина), т.е. если пользователь исключил для отображения конкретную колонку или изменил ширину столбца в таблице, то при повторном переходе на страницу эти изменения не отобразятся и таблица будет иметь исходный вид по умолчанию
No Rows Overlay Message позволяет указать текст для отображения пользователю в таблице в случае, если результат запроса не вернул ни одной строки, например, Данные отсутствуют(доступно для настройки при Loading Overlay Type - TEXT_OVERLAY) пример возможного значения:Данные отсутствуют
Loading Overlay Type позволяет выбрать вид прелоадера при подгрузке данных в таблицу Доступны следующие виды настройки: +
    +
  • TEXT_OVERLAY - отображает текст в центре таблицы при подгрузке данных, задаваемый в свойствах:No Rows Overlay Message и Loading Overlay Message
  • +
  • PROGRESS_BAR - отображает прогресс-бар при подгрузке данных в таблицу
Allow Context Menu With позволяет управлять отображением контекстного меню (список доступных для исполнения действий) при нажатии правой кнопкой мыши на ячейку внутри таблицы +
    +
  • значение не определено - по умолчанию
  • +
  • Активно - при нажатии правой кнопкой мыши на ячейку внутри таблицы отображается контекстное меню доступных действий, например, копирование значения ячейки
  • +
  • Не активно - исключает отображение контекстного меню при нажатии правой кнопкой мыши на ячейку внутри таблицы
Loading overlay message позволяет указать текст для отображения пользователю в процессе подгрузки данных в таблицу, например,Загрузка данных, пожалуйста, подождите.(доступно для настройки приLoading Overlay Type - TEXT_OVERLAY)
+

Свойство компоненты: Список зависимых записей. Подгрузка данных

+

+

позволяет задать граф сущностей для подгрузки данных в Таблицу. Является обязательным к заполнению и настройке.

+

с описанием настройки Графа сущностей для Таблицы можно ознакомиться в разделе: Настройка Графа сущностей

+

Свойство компоненты: Таблица. Настроить колонки таблицы

+

+

позволяет настроить отображаемые колонки в Таблице с сортировкой данных по конкретному порядку

+

с описанием настройки Колонок Таблицы можно ознакомиться в разделе: Настройка колонок Таблицы

+

Свойство компоненты: Список зависимых записей. Взаимосвязи таблиц

+

+

позволяет задать взаимосвязи между таблицами для подгрузки/сохранения значений

+
    + +
  • Колонка, ссылающаяся на таблицу “доступных” - указывается колонка объекта базы данных, включенного в Граф сущностей текущей настраиваемой Связанной таблицы, которая ссылается на главную таблицу в Графе сущностей Таблицы “доступных” записей для выбора (на странице в диалоговом окне находится слева)
  • +
  • Колонка, ссылающаяся на “основную” таблицу - указывается колонка объекта базы данных, включенного в Граф сущностей текущей настраиваемой Связанной таблицы, которая ссылается на главную таблицу в Графе сущностей основной компоненты Форма на странице
  • +
  • Колонка “основной” таблицы - указывается колонка (первичный ключ) главной таблицы в Графе сущностей основной компоненты Форма на странице, на которую ссылается текущая настраиваемая Связанная таблица
  • +
+

Свойство компоненты: Список зависимых записей. Заполнить значением по умолчанию

+

+

позволяет настроить параметры и осуществить запрос данных для заполнения значениями по умолчанию полей компоненты Список зависимых записей

+

с описанием функции Заполнить значением по умолчанию можно ознакомиться в разделе: Заполнить значением по умолчанию - Список зависимых записей.

+

с описанием настройки Графа сущностей для Таблицы можно ознакомиться в разделе: Настройка Графа сущностей

+

прим.: с полным описанием компоненты и её настройки также можно ознакомиться в разделе - Кнопка

+ + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Надпись на кнопке позволяет создать надпись на кнопке Изменить - значение по умолчанию
Текст подтверждения при нажатии позволяет задать текст, который будет отображен пользователю внутри диалогового окна вместе с кнопками для подтверждения действия - Да/Нет пример возможного значения: Внести изменения в список?
+

Свойство компоненты: Диалог. Вызвать

+ + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Вызвать диалог позволяет задать диалог, который будет открываться при нажатии на кнопку по умолчанию задан Диалог вложенный в компоненту Список зависимых записей
+

Свойство компоненты: Список зависимых записей. Перенести записи в таблицу “выбранных” записей

+

+

параметры заполнены по умолчанию ссылками на элементы, иерархически входящими в состав компоненты Список зависимых записей

+
    + +
  • Из списка зависимых записей: указывается основная результирующая Связанная таблица с главной сущностью(компонентой Формана текущей странице)
  • +
  • В таблицу выбранных записей: указывается таблица, расположенная (справа) во всплывающем диалоговом окне, в которой находятся уже выбранные пользователем записи из списка доступных
  • +
  • Таблица со всеми доступными записями: указывается таблица, расположенная (слева) во всплывающем диалоговом окне, в которой находятся все доступные для выбора записи
  • +
+

+

Основные параметры Диалога

+

прим.: с полным описанием компоненты и её настройки также можно ознакомиться в разделе - Диалог

+ + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Заголовок позволяет задать заголовок диалога на странице пример возможного значения: Выбор записей - значение по умолчанию
Допускается скрытие через системную Х позволяет задать возможность закрытия диалога по нажатию на системный возможно закрыть диалог через- значение по умолчанию, невозможно закрыть диалог (системный скрыт)
+

Основные параметры Таблицы

+

прим.: с полным описанием компоненты и её настройки также можно ознакомиться в разделе - Таблица

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Зависит от позволяет указать объект (родителя), по идентификатору которого будут отображаться сведения в текущей Таблице; задаётся в случае необходимости связать Таблицу с другой компонентой, например, Выпадающий список
Multiselectable позволяет задать возможность единовременного выбора одной или нескольких записей в Таблице; выбранные строки окрашиваются в отличный от других строк цвет +
    +
  • возможность выбора сразу нескольких или одной строки
  • +
  • возможность выбора одной строки - значение по умолчанию
Checkbox Column позволяет поставить отметку в виде флажка на тех записях, которые выбраны пользователем в рамках работы с компонентой +
    +
  • значение не определено - по умолчанию
  • +
  • Активно - отображать колонку флагов +
  • Не активно - не отображать колонку флагов
Показывать номер строки позволяет задать автоматическую нумерацию строк +
    +
  • значение не определено - по умолчанию
  • +
  • Активно - отображать нумерацию строк
  • +
  • Не активно - не отображать нумерацию строк
Pinned Bottom Row Label позволяет задать значение для названия итоговой строки таблицы (строки с агрегирующими значениями по колонкам таблицы) пример возможного значения: Итого
Row click selection type позволяет задать поведение выбора строк при клике на строку Таблицы +
    +
  • SINGLE_SELECT_CLICK – при клике на строку предыдущие выбранные строки сбрасываются, если не была зажата клавиша Ctrl или Shift- данный метод выбран по умолчанию
  • +
  • MULTI_SELECT_CLICK -при каждом клике на строку, предыдущие выбранные строки не сбрасываются, т.е если кликнули на одну строку, а затем на другую, то первая строка останется выбранной. Клик по уже выбранной строке снимает с неё выделение. Использования данного метода допустимо, в случае, если в таблице доступен выбор нескольких строк (при значениисвойстваMultiselectable)
  • +
  • SUPPRESS_SELECT_CLICK – исключает возможность выбора (выделения) строки по клику. В данном случае, выбор строки представляется возможным только при использовании чекбоксов.
Save column state позволяет задать возможность сохранения пользовательских настроек в части состава и ширины колонок в таблице +
    +
  • значение не определено - по умолчанию
  • +
  • Активно - изменения пользователя в части отображаемых колонок в таблице (состав и ширина) будут сохраняться в локальном хранилище, т.е. если пользователь исключил для отображения конкретную колонку или изменил ширину столбца в таблице, то при повторном переходе на страницу эти изменения отобразятся
  • +
  • Не активно - не сохранять изменения пользователя в части отображаемых колонокв таблице (состав и ширина), т.е. если пользователь исключил для отображения конкретную колонку или изменил ширину столбца в таблице, то при повторном переходе на страницу эти изменения не отобразятся и таблица будет иметь исходный вид по умолчанию
Loading Overlay Type позволяет выбрать вид прелоадера при подгрузке данных в таблицу Доступны следующие виды настройки: +
    +
  • TEXT_OVERLAY - отображает текст в центре таблицы при подгрузке данных, задаваемый в свойствах:No Rows Overlay Message и Loading Overlay Message
  • +
  • PROGRESS_BAR - отображает прогресс-бар при подгрузке данных в таблицу
No Rows Overlay Message позволяет указать текст для отображения пользователю в таблице в случае, если результат запроса не вернул ни одной строки, например, Данные отсутствуют(доступно для настройки при Loading Overlay Type - TEXT_OVERLAY)
Loading overlay message позволяет указать текст для отображения пользователю в процессе подгрузки данных в таблицу, например,Загрузка данных, пожалуйста, подождите.(доступно для настройки приLoading Overlay Type - TEXT_OVERLAY) *пример возможного значения:Загрузка данных, пожалуйста, подождите.
Allow Context Menu With позволяет управлять отображением контекстного меню (список доступных для исполнения действий) при нажатии правой кнопкой мыши на ячейку внутри таблицы +
    +
  • значение не определено - по умолчанию
  • +
  • Активно - при нажатии правой кнопкой мыши на ячейку внутри таблицы отображается контекстное меню доступных действий, например, копирование значения ячейки
  • +
  • Не активно - исключает отображение контекстного меню при нажатии правой кнопкой мыши на ячейку внутри таблицы
+

Свойство компоненты: Таблица. Подгрузка данных

+

+

позволяет задать граф сущностей для подгрузки данных в Таблицу. Является обязательным к заполнению и настройке.

+

с описанием настройки Графа сущностей для Таблицы можно ознакомиться в разделе: Настройка Графа сущностей

+

Свойство компоненты: Таблица. Настроить колонки таблицы

+

+

позволяет настроить отображаемые колонки в Таблице с сортировкой данных по конкретному порядку

+

Видимые колонки данной Таблицы должны быть равны колонкам, отображаемым в основной Связанной таблице (колонки могут быть скрыты, но должны быть включены в таблицу)

+

с описанием настройки Колонок Таблицы можно ознакомиться в разделе: Настройка колонок Таблицы

+

Свойство компоненты: Активировать кнопку после выбора строки в таблице

+

+

устанавливает доступность Кнопки “Добавить” после выбора строки в Таблице со списком доступных записей (на странице в диалоговом окне находится слева) для переноса записи в Связанную таблицу выбранных пользователем записей (на странице в диалоговом окне находится справа)

+

+

-по умолчанию задана Кнопка “Добавить”, вложенная в компоненту Список зависимых записей

+

Свойство компоненты: Продублировать конфигурацию текущей таблицы (с доступными строками) в таблицу уже выбранных строк

+

+

позволяет продублировать настройки Таблицы с доступными для выбора записей (на странице в диалоговом окне находится слева) в Связанную таблицу уже выбранных пользователем записей (на странице в диалоговом окне находится справа), то есть исключает необходимость ручной настройки (так как обе таблицы должны быть приведены к единому виду) бизнес-аналитиком колонок таблицы, сортировки, форматирования таблицы и проч. для Связанной таблицы.

+

+

-по умолчанию задана Связанная таблица, вложенная в компоненту Список зависимых записей

+

Свойство компоненты: Исключить из текущей таблицы (доступных строк) уже выбранные строки

+

+

при выборе записи в Таблице с доступными для выбора записей (на странице в диалоговом окне находится слева) и переносе её (с помощью Кнопки “Добавить” или Кнопки “Добавить все” ) в Связанную таблицу уже выбранных пользователем записей (на странице в диалоговом окне находится справа) исключает данную запись (и) из текущей Таблицы (доступных строк)

+

-по умолчанию задана Связанная таблица, вложенная в компоненту Список зависимых записей

+

Свойство компоненты: Таблица. Настроить динамическую подгрузку данных при просмотре страницы

+ + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Количество записей в блоке количество отображаемых записей в Таблице по умолчанию при каждой новой подгрузке 20 - значение по умолчанию
+

Основные параметры Кнопки “Добавить”

+

прим.: с полным описанием компоненты и её настройки также можно ознакомиться в разделе - Кнопка

+ + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Надпись на кнопке позволяет задать надпись на кнопке пример возможного значения: > - значение по умолчанию
Текст подтверждения при нажатии позволяет задать текст, который будет отображен пользователю внутри диалогового окна вместе с кнопками для подтверждения действия - Да/Нет пример возможного значения: Вы действительно хотите выбрать данное значение?
+

Свойство компоненты: Список зависимых записей. Перенести строку из таблицы “доступных” строк в таблицу “выбранных”

+

+

по нажатию на кнопку автоматически происходит перенос строки из Таблицы доступных записей (на странице в диалоговом окне находится слева) в Таблицу выбранных пользователем записей (на странице в диалоговом окне находится справа)

+

параметры функции заполнены по умолчанию ссылками на элементы, иерархически входящими в состав компоненты Список зависимых записей

+
    + +
  • Из таблицы “доступных”: указывается таблица, расположенная (слева) во всплывающем диалоговом окне, в которой находятся все доступные для выбора записи, откуда будет перенесена выбранная запись
  • +
  • В таблицу “выбранных”: указывается таблица, расположенная (справа) во всплывающем диалоговом окне, в которой находятся уже выбранные пользователем записи из списка доступных, куда будет перенесена выбранная запись
  • +
+

+

Основные параметры Кнопки “Добавить все”

+

прим.: с полным описанием компоненты и её настройки также можно ознакомиться в разделе-Кнопка

+ + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Надпись на кнопке позволяет задать надпись на кнопке *пример возможного значения: >> - значение по умолчанию
Текст подтверждения при нажатии позволяет задать текст, который будет отображен пользователю внутри диалогового окна вместе с кнопками для подтверждения действия - Да/Нет пример возможного значения: Вы действительно хотите выбрать данное значение?
+

Свойство компоненты: Список зависимых записей. Перенести строку из таблицы “доступных” строк в таблицу “выбранных”

+

+

по нажатию на кнопку автоматически происходит перенос всех строк из Таблицы доступных записей (на странице в диалоговом окне находится слева) в Таблицу выбранных пользователем записей (на странице в диалоговом окне находится справа)

+

параметры заполнены по умолчанию ссылками на элементы, иерархически входящими в состав компоненты Список зависимых записей

+
    + +
  • Из таблицы “доступных”: указывается таблица, расположенная (слева) во всплывающем диалоговом окне, в которой находятся все доступные для выбора записи, откуда будут перенесены все записи одновременно
  • +
  • В таблицу “выбранных”: указывается таблица, расположенная (справа) во всплывающем диалоговом окне, в которой находятся уже выбранные пользователем записи из списка доступных, куда будут перенесены записи
  • +
+

+

Основные параметры **Кнопки “Удалить”

+

прим.: с полным описанием компоненты и её настройки также можно ознакомиться в разделе - Кнопка

+ + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Надпись на кнопке позволяет задать надпись на кнопке пример возможного значения: < - значение по умолчанию
Текст подтверждения при нажатии позволяет задать текст, который будет отображен пользователю внутри диалогового окна вместе с кнопками для подтверждения действия - Да/Нет пример возможного значения: Вы действительно хотите исключить данное значение?
+

Свойство компоненты: Список зависимых записей. Вернуть строку в таблицу “доступных” из таблицы “выбранных”

+

+

по нажатию на кнопку автоматически происходит перенос строки из Таблицы выбранных пользователем записей (на странице в диалоговом окне находится справа) в Таблицу доступных записей (на странице в диалоговом окне находится слева)

+

параметры заполнены по умолчанию ссылками на элементы, иерархически входящими в состав компоненты Список зависимых записей

+
    + +
  • В таблицу “доступных”: указывается таблица, расположенная (слева) во всплывающем диалоговом окне, в которой находятся все доступные для выбора записи, куда будет перенесена (возвращена) выбранная запись
  • +
  • Из таблицы “выбранных”: указывается таблица, расположенная (справа) во всплывающем диалоговом окне, в которой находятся уже выбранные пользователем записи из списка доступных, откуда будет перенесена (возвращена) выбранная запись
  • +
+

+

Основные параметры **Кнопки “Удалить все”

+

прим.: с полным описанием компоненты и её настройки также можно ознакомиться в разделе - Кнопка

+ + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Надпись на кнопке позволяет задать надпись на кнопке пример возможного значения: << - значение по умолчанию
Текст подтверждения при нажатии позволяет задать текст, который будет отображен пользователю внутри диалогового окна вместе с кнопками для подтверждения действия - Да/Нет пример возможного значения: Вы действительно хотите исключить все значения?
+

Свойство компоненты: Список зависимых записей. Вернуть все строки в таблицу “доступных” из таблицы “выбранных”

+

+

по нажатию на кнопку автоматически происходит перенос строки из Таблицы выбранных пользователем записей (на странице в диалоговом окне находится справа) в Таблицу доступных записей (на странице в диалоговом окне находится слева)

+

параметры заполнены по умолчанию ссылками на элементы, иерархически входящими в состав компоненты Список зависимых записей

+
    + +
  • В таблицу “доступных”: указывается таблица, расположенная (слева) во всплывающем диалоговом окне, в которой находятся все доступные для выбора записи, куда будут перенесены (возвращены) все записи
  • +
  • Из таблицы “выбранных”: указывается таблица, расположенная (справа) во всплывающем диалоговом окне, в которой находятся уже выбранные пользователем записи из списка доступных, откуда будут перенесены (возвращены) все записи
  • +
+

+

Основные параметры Связанной таблицы (таблица выбранных пользователем записей)

+

прим.: с полным описанием компоненты и её настройки также можно ознакомиться в разделе - Таблица

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Показывать номер строки позволяет задать автоматическую нумерацию строк +
    +
  • значение не определено - по умолчанию
  • +
  • Активно - отображать нумерацию строк
  • +
  • Не активно - не отображать нумерацию строк
Подсказка позволяет создать подсказку, расположенную внутри элемента
Надпись позволяет задать наименование поля, которое будет отображаться на странице
Multiselectable позволяет задать возможность единовременного выбора одной или нескольких записей в Таблице; выбранные строки окрашиваются в отличный от других строк цвет +
    +
  • возможность выбора сразу нескольких или одной строки
  • +
  • возможность выбора одной строки - значение по умолчанию
Checkbox Column позволяет поставить отметку в виде флажка на тех записях, которые выбраны пользователем в рамках работы с компонентой Таблица +
    +
  • значение не определено - по умолчанию
  • +
  • Активно - отображать колонку флагов +
  • Не активно - не отображать колонку флагов
Pinned Bottom Row Label позволяет задать значение для названия итоговой строки таблицы (строки с агрегирующими значениями по колонкам таблицы) пример возможного значения: Итого
Row click selection type позволяет задать поведение выбора строк при клике на строку Таблицы +
    +
  • SINGLE_SELECT_CLICK – при клике на строку предыдущие выбранные строки сбрасываются, если не была зажата клавиша Ctrl или Shift- данный метод выбран по умолчанию
  • +
  • MULTI_SELECT_CLICK -при каждом клике на строку, предыдущие выбранные строки не сбрасываются, т.е если кликнули на одну строку, а затем на другую, то первая строка останется выбранной. Клик по уже выбранной строке снимает с неё выделение. Использования данного метода допустимо, в случае, если в таблице доступен выбор нескольких строк (при значениисвойстваMultiselectable)
  • +
  • SUPPRESS_SELECT_CLICK – исключает возможность выбора (выделения) строки по клику. В данном случае, выбор строки представляется возможным только при использовании чекбоксов.
Save Column State позволяет задать возможность сохранения пользовательских настроек в части состава и ширины колонок в таблице +
    +
  • значение не определено - по умолчанию
  • +
  • Активно - изменения пользователя в части отображаемых колонок в таблице (состав и ширина) будут сохраняться в локальном хранилище, т.е. если пользователь исключил для отображения конкретную колонку или изменил ширину столбца в таблице, то при повторном переходе на страницу эти изменения отобразятся
  • +
  • Не активно - не сохранять изменения пользователя в части отображаемых колонокв таблице (состав и ширина), т.е. если пользователь исключил для отображения конкретную колонку или изменил ширину столбца в таблице, то при повторном переходе на страницу эти изменения не отобразятся и таблица будет иметь исходный вид по умолчанию
Loading Overlay Type позволяет выбрать вид прелоадера при подгрузке данных в таблицу Доступны следующие виды настройки: +
    +
  • TEXT_OVERLAY - отображает текст в центре таблицы при подгрузке данных, задаваемый в свойствах:No Rows Overlay Message и Loading Overlay Message
  • +
  • PROGRESS_BAR - отображает прогресс-бар при подгрузке данных в таблицу
No Rows Overlay Message позволяет указать текст для отображения пользователю в таблице в случае, если результат запроса не вернул ни одной строки, например, Данные отсутствуют(доступно для настройки при Loading Overlay Type - TEXT_OVERLAY)
Loading overlay message позволяет указать текст для отображения пользователю в процессе подгрузки данных в таблицу, например,Загрузка данных, пожалуйста, подождите.(доступно для настройки приLoading Overlay Type - TEXT_OVERLAY)
Allow Context Menu With позволяет управлять отображением контекстного меню (список доступных для исполнения действий) при нажатии правой кнопкой мыши на ячейку внутри таблицы +
    +
  • значение не определено - по умолчанию
  • +
  • Активно - при нажатии правой кнопкой мыши на ячейку внутри таблицы отображается контекстное меню доступных действий, например, копирование значения ячейки
  • +
  • Не активно - исключает отображение контекстного меню при нажатии правой кнопкой мыши на ячейку внутри таблицы
+

Свойство компоненты: Таблица. Настроить колонки таблицы

+

+

позволяет настроить отображаемые колонки в Таблице с сортировкой данных по конкретному порядку

+

с описанием настройки Колонок Таблицы можно ознакомиться в разделе: Настройка колонок Таблицы

+

Свойство компоненты: Активировать кнопку после выбора строки в таблице

+

+

устанавливает доступность Кнопки “Удалить” после выбора строки в Связанной таблице выбранных пользователем записей (на странице в диалоговом окне находится справа) для переноса (возврата) записи в Таблицу со списком доступных записей (на странице в диалоговом окне находится слева)

+

по умолчанию задана - Кнопка “Удалить”

+

+

Свойство компоненты:Список зависимых записей. Заполнить значением по умолчанию

+

+

позволяет настроить параметры и осуществить запрос данных для заполнения значениями по умолчанию полей компоненты Список зависимых записей

+

Внимание! При использовании данной функции, нет необходимости настройки и заполнения Графа сущностей в текущей таблице

+

с описанием функции Заполнить значением по умолчанию можно ознакомиться в разделе: Заполнить значением по умолчанию.Список зависимых записей

+

Основные параметры Кнопки “Ок”

+

прим.: с полным описанием компоненты и её настройки также можно ознакомиться в разделе - Кнопка

+ + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Надпись на кнопке позволяет создать надпись на кнопке пример возможного значения: Ок - значение по умолчанию
Текст подтверждения при нажатии позволяет задать текст, который будет отображен пользователю внутри диалогового окна вместе с кнопками для подтверждения действия - Да/Нет пример возможного значения: Вы действительно выбрали все необходимые значения?
+

Свойство компоненты: Диалог. Скрыть

+

+

Скрыть Диалог - позволяет задать диалог, который будет закрыт при нажатии на кнопку. По умолчанию задан Список зависимых записей#Диалог, вложенный в компоненту Список зависимых записей

+

Свойство компоненты: Список зависимых записей. Перенести записи из таблицы “выбранных” записей

+

+

по нажатию на кнопку автоматически происходит перенос записей из Таблицы выбранных пользователем записей (на странице в диалоговом окне находится справа) в результирующую Связанную таблицу зависимых записей (на основной странице)

+

параметры заполнены по умолчанию ссылками на элементы, иерархически входящими в состав компоненты Список зависимых записей

+
    + +
  • Из таблицы “выбранных”: указывается Связанная таблица, расположенная (справа) во всплывающем диалоговом окне, в которой находятся уже выбранные пользователем записи из списка доступных, откуда будут перенесены значения
  • +
  • В список зависимых записей: указывается основная результирующая Связанная таблица с главной сущностью(компонентой Формана текущей странице), куда будут перенесены записи
  • +
+

+

Основные параметры Кнопки “Отмена”

+

прим.: с полным описанием компоненты и её настройки также можно ознакомиться в разделе - Кнопка

+ + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Надпись на кнопке позволяет создать надпись на кнопке пример возможного значения: Отмена - значение по умолчанию
Текст подтверждения при нажатии позволяет задать текст, который будет отображен пользователю внутри диалогового окна вместе с кнопками для подтверждения действия - Да/Нет пример возможного значения: Вы действительно хотите отменить операцию?
+

Свойство компоненты: Диалог. Скрыть

+

+

позволяет задать диалог, который будет закрыт при нажатии на кнопку

+

- по умолчанию задан Список зависимых записей#Диалог, вложенный в компоненту Список зависимых записей

+

Базовые функции

+

заполнить значением по умолчанию

+

Назначение

+

Функция, которая позволяет настроить параметры и осуществить запрос данных для заполнения значениями по умолчанию полей компоненты Список зависимых записей.

+

Функция Заполнить значением по умолчанию должна быть задействована на обоих компонентах “Связанная таблица”, а настроена только на основной компоненте “Связанная таблица”, входящей в состав сложной компоненты Список зависимых записей.

+

Активация и настройка функции на первой компоненте “Связанная таблица”

+

Активация без настройки функции на второй компоненте “Связанная таблица”

+

При этом, на выше лежащей компоненте Форма функция Подгрузка значений по умолчанию должна быть активирована (но может быть не настроена).

+

+

Результатом исполнения функции Заполнить значением по умолчанию является одно или несколько значений, которыми предзаполняются основная компонента “Связанная таблица”, входящая в состав сложнойкомпоненты Список зависимых записей, и отображающая список только тех строк из списка всех доступных строк, которые выбраны пользователем .

+

В этом основное отличие этой функции от аналогичной функции, используемой для запроса ‘значений по умолчанию’ обычных визуальных компонентов, но оперирующей только одним значением.

+

Дополнительные функции

+

В ходе настройки свойств компоненты (заданных по умолчанию) может оказаться недостаточно для выполнения поставленной задачи и получения необходимого результата.

+

Для каждой компоненты предусмотрен перечень функций, расширяющих её базовую функциональность, которые можно добавить нажатием кнопки Добавить скрипт.

+

Вследствие технических особенностей реализации функций (функции, которые выполняются удаленно на сервере приложений, функции, которые выполняются в браузере пользователя), они имеют разные иконки, но это никак не влияет на их функциональность или предпочтительность использования.

+

Рекурсивно копировать составные объекты сложных компонент

+

TODO

+

Определить права текущего пользователя

+

Определить права текущего пользователя

+

Определить роли текущего пользователя

+

Определить роли текущего пользователя

+

Методические рекомендации по применению

+

Пошаговые инструкции по применению компонента в типовых задачах Вы можете найти в разделах:

+ +

Как ограничить количество строк в Связанной таблице (LinkField)

+

Чтобы ограничить количество строк в Связанной таблице установите необходимое значение в параметр “Макс. количество строк” (Если значение не установлено или 0, то ограничение не действует):

+

+

Если Вы хотите выбрать действие при попытке выйти за границы максимального количества, выберите это действие в блоке “Тогда” в компоненте “Обработка событий”:

+

+

Если Вы хотите динамически менять максимальное количество строк, используйте метод “Задать максимальное количество строк” в компоненте:

+

+

Часто задаваемые вопросы

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Вопрос Ответ
Как сделать, чтобы данные, отобранные с помощью компоненты Список зависимых записей, сохранялись в базу данных? Для того, чтобы данные, отобранные с помощью компоненты Список зависимых записей, сохранялись/считывались в/из базы данных, её необходимо вложить внутрь основной компоненты Формана странице.
Какие дочерние элементы Списка зависимых записей требуют обязательной и непосредственнойнастройки аналитиком? Большинству описанных параметров дочерних элементов компоненты Список зависимых записей уже заранее заданы значения по умолчанию, и они не требуют каких-либо изменений от аналитика в типовых случаях. Но часть параметров следует задать в процессе использования компоненты для её корректной работы и внедрения в логику бизнес-процесса: +
    +
  • параметры основной Таблицы Списка зависимых записей на странице -Связанная таблица: Список зависимых записей. Подгрузка данныхСписок зависимых записей. Взаимосвязи таблиц Таблица. Настроить колонки таблицы
  • +
  • параметры Таблицы доступных строк для выбора -Таблица: Таблица. Подгрузка данных Таблица. Настроить колонки таблицы
В каких случаях используется Список зависимых записей, а в каких случаях Список с поиском для выбора одного значения? В случае, когда необходимо связать идентификатор главной сущности компоненты Форма, например, Заявление на получение лицензии, одновременно с несколькими значениями (связь многие ко многим), например, виды деятельности лицензиата,из заранее сформированного списка доступных значений, то используется Список зависимых записей (сохранение отобранных значений, осуществляется в таблицу связи базы данных, в приведенном примере, между Заявлением и Видом деятельности лицензиата). В случае, когда архитектура базы данных предполагает сохранение одного идентификатора из списка доступных значений (связь один ко многим) используется Список с поиском для выбора одного значения
Можно ли использовать Набор фильтров для удобства поиска значений в Таблице доступных строк? Да, можно. Для этого необходимо в элемент Диалог, входящий в состав компоненты Список зависимых записей, добавить элемент Набор фильтров со вложенными фильтрами, например, *Текстовое поле (фильтр)*или Фильтр по числовому полю, настроить их свойства и в качестве Таблицы, по значениям которой будет происходить фильтрация, в Наборе фильтров указать Таблицу доступных строк компоненты Список зависимых записей.
Почему при открытии диалога на странице неактивна кнопка “Добавить”? Кнопка "Добавить"недоступна для управления по умолчанию и становится активна только при выборе записи (с помощью функцииАктивировать кнопку после выбора строки в таблице, настраиваемой в свойствах Таблицы) в Таблице доступных строк для выбора(на странице в диалоговом окне находится слева). По нажатию на кнопку выбранная пользователем строка будет перенесена в Таблицу выбранных строк(на странице в диалоговом окне находится справа). Аналогичная логика заложена в работу кнопки “Удалить”, которая становится активна только при выборе записи в Таблице выбранных строк(на странице в диалоговом окне находится справа),и по нажатию на кнопку выбранная запись будет перенесена в Таблицу доступных строк(на странице в диалоговом окне находится слева).
Можно ли выбрать одновременно несколько строк в Таблице доступных записей для добавления в Таблицу выбранных строк? Да, можно. Для этого необходимо при настройке основных параметров Таблицы доступных строк, привести свойства Допустимо выбрать несколько строк и Колонка флагов в значение(истина) в параметре Таблица. Задействовать режим выбора нескольких строк, после чего в интерфейсе в Таблице доступных строк (на странице в диалоговом окне находится слева)отобразится колонка флагов (выбора записи), которая позволит одновременно выделить несколько строк (при этом выбранные строки окрасятся в отличный от других строк цвет), и по нажатию на кнопку “Добавить” выбранные записи будут перенесены в Таблицу выбранных строк(на странице в диалоговом окне находится слева). В случае, когда необходимо выбрать все предложенные записи в Таблице доступных строк и включить их в Таблицу выбранных строк используется кнопка “Добавить все”.
Можно ли изменить цветовое оформление Таблицы? Да. Цветовым оформлением Таблицы можно управлять с помощью CSS-стилей, задаваемых в**Основных параметрах - Расширенные настройки - CSS классы.
Как изменить формат отображения данных в колонке Таблицы? В случае, если необходимо изменить формат отображения значений в колонке Таблицы необходимо при настройке колонки применить Форматтер. Например, подгружаемое значение в колонку имеет тип данных Дата и Время (DateTime), но на странице пользовательского приложения необходимо отображать значение в колонке без Времени, только Дату. В таком случае, целесообразно использовать форматтер DateFormatter, который отобразит значение колонки в нужном виде. Но при этом предварительно необходимо применить к Таблице функцию Очистить форматирование колонок таблицы, указав наименование настраиваемой колонки.
Можно ли поменять порядок отображаемых колонок в Таблице? Для того, чтобы изменить порядок колонок в Таблице необходимо в свойстве Настроить колонки таблицы - Колонки нажать правой кнопкой мыши на «Элемент» и выбрать предложенные варианты: Переместить наверх - Переместить вниз - Удалить элемент.
Можно ли задать автоматическую нумерацию строк (записей) в Таблице? Да, можно. Для этого необходимо в настраиваемых параметрах Таблицы перейти к свойству Таблица. Основные параметры - Показывать номер строки и привести его в значение(истина).
+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Список_зависимых_записей_поле_.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Список_зависимых_записей_поле_.html new file mode 100644 index 0000000..7e694e1 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Список_зависимых_записей_поле_.html @@ -0,0 +1,751 @@ + + + + + + + + Web-BPM Docs – Список зависимых записей (поле) + + + + + + +
+
+ + + +
+
+

Список зависимых записей (поле)

+

Назначение

+

Список зависимых записей (поле)- это составной компонент, которыйиспользуется длявыбора одного или нескольких значений из списка доступных и записи выбранных значений в поле, которое имеет возможность хранения и отображения нескольких значений одновременно (поле с множественным выбором). Логика работы компоненты Список зависимых записей (поле) схожа с логикой работы компоненты Список зависимых записей, отличие заключается в том, что результатвыбора значений отображается не в виде таблицы, а в виде поля с множественным выбором.Компонента может быть использована в достаточно частных случаях, посколькуданные, отобранные с помощью этой компоненты, не сохраняются в базу данных. Примером возможного применения компоненты Список зависимых записей (поле) можно назвать использование компоненты в качестве входного параметра для формирования отчетной формы, когда в качестве параметра необходимо передать массив значений (идентификаторов) (например, список нескольких сотрудников, по которым необходимо сформировать отчет).

+

Компонента Список зависимых записей (поле) находится в разделе Компоненты - Поля - Список зависимых записей(поле).

+

В структуру компоненты Список зависимых записей (поле), представленной набором простых компонентов и связанных между собой заранее определенными алгоритмами, входят следующие элементы

+

Работа с компонентой и выбор требуемых значений из списка доступных записей осуществляется в следующей последовательности:

+
    + +
  • нажатие Кнопки “Изменить” (рис.3), расположенной рядом с Полем с множественным выбором на странице; по нажатию на кнопку происходит открытие диалогового окна (рис.4)
  • +
  • доступные для выбора значения расположены вТаблицедоступных записей(на странице в диалоговом окне находится слева)
  • +
  • выбор значения осуществляется с помощью Кнопок “Добавить” (>) или “Добавить все” (>>) из списка доступных записей; по нажатию на кнопку происходит перенос (добавление) записи из Таблицы доступных значений(на странице в диалоговом окне находится слева) в Связанную таблицу выбранных значений (на странице в диалоговом окне находится справа)
  • +
  • удаление выбранного значения осуществляется с помощью Кнопок “Удалить” или “Удалить все” из списка уже выбранных значений; по нажатию на кнопку происходит перенос (удаление) записи из Связанной таблицы выбранных значений(на странице в диалоговом окне находится справа) и возвращение записи в Таблицу доступных значений(на странице в диалоговом окне находится слева)
  • +
  • перенос значений из Связанной таблицы выбранных записей в результирующее Поле с множественным выбором по нажатию на Кнопку “Ок” и закрытие диалогового окна
  • +
+

+

рис.3 Поле с множественным выборок и кнопка “Изменить”

+

+

рис.4 Диалоговое окно для выбора значений

+

Структура

+

Основные вложенные элементы компоненты Список зависимых записей (поле)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование элемента Описание
Список зависимых записей (поле) контейнер горизонтального выравнивания, в который вложены все дочерние компоненты
Поле с множественным выбором используется только для отображения (без возможности управления и ручного ввода) выбранных значений из Связанной таблицы
Кнопка “Изменить” используется для открытия (вызова) диалогового окна со списком доступных значений для выбора
Диалог используется для отображениявсплывающего диалогового окна со списком доступных значений для выбора
Таблица используется для отображения списка доступных значений (записей) для выбора (во всплывающем диалоговом окне находится слева)
Кнопка “Добавить” используется для переноса (добавления) одной выбранной записи из Таблицы всех доступных значений (на странице в диалоговом окне находится слева) в Связанную таблицу выбранных значений (на странице в диалоговом окне находится справа)
Кнопка Добавить все используется для переноса (добавления) всех записей из Таблицы всех доступных значений(на странице в диалоговом окне находится слева)вСвязанную таблицувыбранных значений(на странице в диалоговом окне находится справа)
Кнопка “Удалить” используется для исключения (удаления) строки из Связанной таблицы уже выбранных значений (на странице в диалоговом окне находится справа) и обратного переноса в Таблицу всех доступных значений(на странице в диалоговом окне находится слева)
Кнопка Удалить все используется для исключения (удаления) всех строк из Связанной таблицы уже выбранных значений (на странице в диалоговом окне находится справа) и обратного переноса в Таблицу всех доступных значений(на странице в диалоговом окне находится слева)
Связанная таблица используется для отображения списка уже выбранных пользователем записей (во всплывающем диалоговом окне находится справа) из массива доступных значений (записей) для выбора. Необязательна для настройки (только при необходимости более детального вывода информации), так как по умолчанию дублирует конфигурацию Таблицы Списка зависимых записей всех доступных значений для выбора (во всплывающем диалоговом окне находится слева)
Кнопка “ОК” используется для переноса значений из “Связанной таблицы” выбранных записей в результирующее “Поле с множественным выбором” и закрытия диалогового окна
Кнопка Отмены используется для отмены выбора значений из списка доступных и закрытия диалогового окна
+

Свойства

+

Компонента имеет набор общих свойств.

+

Основные параметры Список зависимых записей (поле)

+

прим.: с полным описанием компоненты и её настройки также можно ознакомиться в разделе - Горизонтальный контейнер

+ + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
+

Основные параметры Поле с множественным выбором

+ + + + + + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Надпись позволяет задать наименование поля, которое будет отображаться на странице *пример возможного значения:*Утверждающие (рис.1)
Разделитель позволяет указать символ или пробел, который будет разделять между собой выбранные значения в поле пример возможного значения: ;
Подсказка позволяет создать подсказку, расположенную внутри элемента *пример возможного значения:*Выбрать сотрудников
+

Свойство компоненты: Поле с множественным выбором. Подгрузка данных

+

+

позволяет задать источник подгрузки данных с указанием отображаемых значений пользователю, и с настройкой Графа сущностей. Является обязательным к заполнению и настройке.

+
    + +
  • + +

    Граф сущностей элемента настраивается в соответствии с п. Настройка Графа сущностей. Является обязательным к заполнению и настройке.

    +
  • +
  • + +

    Отображаемая колонка - позволяет задатьэлемент базы данных, значение которого будет отображено пользователю на странице в Поле с множественным выбором

    +
  • +
+

Свойство компоненты: Поле с множественным выбором. Подгрузка данных по умолчанию

+

позволяет указать значение по умолчанию, которое будет подгружаться в поле с помощью двух типов подгрузки (источников подгрузки значения):

+
    + +
  • из колонки
  • +
  • из сервиса
  • +
+

с описанием настройки свойства Подгрузка данных по умолчаниюи соответствующих ей типов подгрузкиможно ознакомиться в разделе: Заполнить значением по умолчанию

+

Основные параметры Кнопки “Изменить”

+

прим.: с полным описанием компоненты и её настройки также можно ознакомиться в разделе - Кнопка

+ + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Текст подтверждения позволяет задать текст, который будет отображен пользователю внутри диалогового окна вместе с кнопками для подтверждения действия - Да/Нет пример возможного значения: Внести изменения в список?
Надпись позволяет задать надпись на кнопке пример возможного значения: … - значение по умолчанию
+

Свойство компоненты: Диалог. Вызвать

+ + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
позволяет задать диалог, который будет открываться при нажатии на кнопку по умолчанию задан Диалог (Список зависимых записей(поле) - Диалог вложенный в компоненту Список зависимых записей (поле))
+

Свойство компоненты: Список зависимых записей. Перенести записи в Поле множественного выбора (SetRowsFromFieldForMTMField)

+ + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
SetRowsFromFieldForMTMField параметры заполнены по умолчанию ссылками на элементы, иерархически входящими в состав компоненты Список зависимых записей (поле) +
    +
  • From (Из списка зависимых записей): указывается результирующий элемент Поле с множественным выбором
  • +
  • To (В таблицу выбранных записей): указывается таблица, расположенная (справа) во всплывающем диалоговом окне, в которой находятся уже выбранные пользователем записи из списка доступных
  • +
  • Grid (Таблица со всеми доступными записями): указывается таблица, расположенная (слева) во всплывающем диалоговом окне, в которой находятся все доступные для выбора записи
+

+

рис.1 Отображение связи элементов

+

Основные параметры Диалога

+

прим.: с полным описанием компоненты и её настройки также можно ознакомиться в разделе - Диалог

+ + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Заголовок позволяет задать заголовок диалога на странице пример возможного значения: Выбор записей - значение по умолчанию
Допускается скрытие через системную Х позволяет задать возможность закрытия диалога по нажатию на системный возможно закрыть диалог через- значение по умолчанию, невозможно закрыть диалог (системный скрыт)
+

Основные параметры Таблицы

+

прим.: с полным описанием компоненты и её настройки также можно ознакомиться в разделе - Таблица

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Зависит от позволяет указать объект (родителя), по идентификатору которого будут отображаться сведения в текущей Таблице; задаётся в случае необходимости связать Таблицу с другой компонентой, например, Выпадающий список
Всплывающая подсказка позволяет указать текст всплывающей подсказки, которая появляется при наведении курсора на элемент
Multiselectable позволяет задать возможность единовременного выбора одной или нескольких записей в Таблице; выбранные строки окрашиваются в отличный от других строк цвет +
    +
  • возможность выбора сразу нескольких или одной строки
  • +
  • возможность выбора одной строки - значение по умолчанию
Checkbox Column позволяет поставить отметку в виде флажка на тех записях, которые выбраны пользователем в рамках работы с компонентой Таблица +
    +
  • значение не определено - по умолчанию
  • +
  • Активно - отображать колонку флагов
  • +
  • Не активно - не отображать колонку флагов
Показывать номер строки позволяет задать автоматическую нумерацию строк +
    +
  • значение не определено - по умолчанию
  • +
  • Активно - отображать нумерацию строк
  • +
  • Не активно - не отображать нумерацию строк
Pinned Bottom Row Label позволяет задать значение для названия итоговой строки таблицы (строки с агрегирующими значениями по колонкам таблицы) пример возможного значения: Итого
Row click selection type позволяет задать поведение выбора строк при клике на строку Таблицы +
    +
  • SINGLE_SELECT_CLICK – при клике на строку предыдущие выбранные строки сбрасываются, если не была зажата клавиша Ctrl или Shift- данный метод выбран по умолчанию
  • +
  • MULTI_SELECT_CLICK -при каждом клике на строку, предыдущие выбранные строки не сбрасываются, т.е если кликнули на одну строку, а затем на другую, то первая строка останется выбранной. Клик по уже выбранной строке снимает с неё выделение. Использования данного метода допустимо, в случае, если в таблице доступен выбор нескольких строк (при значениисвойстваMultiselectable)
  • +
  • SUPPRESS_SELECT_CLICK – исключает возможность выбора (выделения) строки по клику. В данном случае, выбор строки представляется возможным только при использовании чекбоксов.
Save Column State позволяет задать возможность сохранения пользовательских настроек в части состава и ширины колонок в таблице +
    +
  • значение не определено - по умолчанию
  • +
  • Активно - изменения пользователя в части отображаемых колонок в таблице (состав и ширина) будут сохраняться в локальном хранилище, т.е. если пользователь исключил для отображения конкретную колонку или изменил ширину столбца в таблице, то при повторном переходе на страницу эти изменения отобразятся
  • +
  • Не активно - не сохранять изменения пользователя в части отображаемых колонокв таблице (состав и ширина), т.е. если пользователь исключил для отображения конкретную колонку или изменил ширину столбца в таблице, то при повторном переходе на страницу эти изменения не отобразятся и таблица будет иметь исходный вид по умолчанию
Loading Overlay Type позволяет выбрать вид прелоадера при подгрузке данных в таблицу Доступны следующие виды настройки: +
    +
  • TEXT_OVERLAY - отображает текст в центре таблицы при подгрузке данных, задаваемый в свойствах:No Rows Overlay Message и Loading Overlay Message
  • +
  • PROGRESS_BAR - отображает прогресс-бар при подгрузке данных в таблицу
No Rows Overlay Message позволяет указать текст для отображения пользователю в таблице в случае, если результат запроса не вернул ни одной строки, например, Данные отсутствуют(доступно для настройки при Loading Overlay Type - TEXT_OVERLAY) пример возможного значения:Данные отсутствуют
Loading overlay message позволяет указать текст для отображения пользователю в процессе подгрузки данных в таблицу, например,Загрузка данных, пожалуйста, подождите.(доступно для настройки приLoading Overlay Type - TEXT_OVERLAY) пример возможного значения:Загрузка данных, пожалуйста, подождите.
Allow Context Menu With позволяет управлять отображением контекстного меню (список доступных для исполнения действий) при нажатии правой кнопкой мыши на ячейку внутри таблицы +
    +
  • значение не определено - по умолчанию
  • +
  • Активно - при нажатии правой кнопкой мыши на ячейку внутри таблицы отображается контекстное меню доступных действий, например, копирование значения ячейки
  • +
  • Не активно - исключает отображение контекстного меню при нажатии правой кнопкой мыши на ячейку внутри таблицы
+

Свойство компоненты: Таблица. Подгрузка данных

+

+

позволяет задать граф сущностей для подгрузки данных в Таблицу. Является обязательным к заполнению и настройке.

+

Граф сущностей элемента настраивается в соответствии с п. Настройка Графа сущностей.

+
    + +
  • + +

    Колонка для режима “Зависит от” - позволяет указать колонку настраиваемой Таблицы, которая обеспечивает связь текущей компоненты с компонентой заданной в параметре “Зависит от”

    +
  • +
  • + +

    Datasource Jndi Name - позволяет задать иной источник (базу данных) для выполнения запроса, заданного с помощью элементов базы данных в редакторе Графа сущностей элемента.

    +
  • +
+

Значение данного свойства может быть задано следующим образом: java:/webbpm/AppRepDS, а сам адрес базы данных, логин и пароль для подключения должен быть указан в файле standalone.xml (аналогично тому, как указывается, например, подключение к базе данных безопасности).

+

В случае, если данное свойство не заполнено, запрос выполняется в базе данных, указанной в конфигурации проекта (во вкладке База данных).

+

Свойство компоненты: Таблица. Настроить колонки таблицы

+ + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Настроить колонки таблицы позволяет настроить отображаемые колонки в Таблице с сортировкой данных по конкретному порядку с описанием настройки Колонок Таблицы можно ознакомиться в разделе: Настройка колонок Таблицы
+

+

Свойство компоненты: Активировать кнопку после выбора строки в таблице

+

+

устанавливает доступность Кнопки “Добавить” (>) после выбора строки в Таблице со списком доступных записей (на странице в диалоговом окне находится слева) для переноса записи в Связанную таблицу выбранных пользователем записей (на странице в диалоговом окне находится справа)

+

+
    + +
  • по умолчанию задана Кнопка “Добавить”, вложенная в компоненту Список зависимых записей (поле)
  • +
+

Свойство компоненты: Продублировать конфигурацию текущей таблицы (с доступными строками) в таблицу уже выбранных строк

+

+

позволяет продублировать настройки Таблицы с доступными для выбора записей (на странице в диалоговом окне находится слева) в Связанную таблицу уже выбранных пользователем записей (на странице в диалоговом окне находится справа), то есть исключает необходимость ручной настройки (так как обе таблицы должны быть приведены к единому виду) бизнес-аналитиком колонок таблицы, сортировки, форматирования таблицы и проч. для Связанной таблицы.

+

+
    + +
  • по умолчанию задана Связанная таблица, вложенная в компоненту Список зависимых записей
  • +
+

Свойство компоненты: Таблица.Настроить динамическую подгрузку данных при просмотре страницы

+ + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Количество запесей в блоке количество отображаемых записей в Таблице по умолчанию при каждой новой подгрузке пример возможного значения: 20 - значение по умолчанию
+

Основные параметры Кнопки “Добавить”

+

прим.: с полным описанием компоненты и её настройки также можно ознакомиться в разделе - Кнопка

+ + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Надпись на кнопке позволяет задать надпись на кнопке пример возможного значения: > - значение по умолчанию
Текст подтверждения позволяет задать текст, который будет отображен пользователю внутри диалогового окна вместе с кнопками для подтверждения действия - Да/Нет пример возможного значения: Вы действительно хотите выбрать данное значение?
+

Свойство компоненты: Список зависимых записей. Перенести строку из таблицы “доступных” строк в таблицу “выбранных”

+

+

по нажатию на кнопку автоматически происходит перенос строки из Таблицы доступных записей (на странице в диалоговом окне находится слева) в Таблицу выбранных пользователем записей (на странице в диалоговом окне находится справа)

+

параметры функции заполнены по умолчанию ссылками на элементы, иерархически входящими в состав компоненты Список зависимых записей (поле)

+
    + +
  • Из таблицы “доступных”: указывается таблица, расположенная (слева) во всплывающем диалоговом окне, в которой находятся все доступные для выбора записи, откуда будет перенесена выбранная запись
  • +
  • В таблицу “выбранных”: указывается таблица, расположенная (справа) во всплывающем диалоговом окне, в которой находятся уже выбранные пользователем записи из списка доступных, куда будет перенесена выбранная запись
  • +
+

+

Основные параметры Кнопки “Добавить все”

+

прим.: с полным описанием компоненты и её настройки также можно ознакомиться в разделе - Кнопка

+ + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Надпись на кнопке позволяет задать надпись на кнопке пример возможного значения: >> - значение по умолчанию
Текст подтверждения позволяет задать текст, который будет отображен пользователю внутри диалогового окна вместе с кнопками для подтверждения действия - Да/Нет пример возможного значения: Вы действительно хотите выбрать данное значение?
+

Свойство компоненты: Список зависимых записей. Перенести строку из таблицы “доступных” строк в таблицу “выбранных”

+

+

по нажатию на кнопку автоматически происходит перенос всех строк из Таблицы доступных записей (на странице в диалоговом окне находится слева) в Таблицу выбранных пользователем записей (на странице в диалоговом окне находится справа)

+

параметры заполнены по умолчанию ссылками на элементы, иерархически ходящими в состав компоненты Список зависимых записей (поле)

+
    + +
  • Из таблицы “доступных”: указывается таблица, расположенная (слева) во всплывающем диалоговом окне, в которой находятся все доступные для выбора записи, откуда будут перенесены все записи одновременно
  • +
  • В таблицу “выбранных”: указывается таблица, расположенная (справа) во всплывающем диалоговом окне, в которой находятся уже выбранные пользователем записи из списка доступных, куда будут перенесены записи
  • +
+

+

Основные параметры Кнопки “Удалить”

+

прим.: с полным описанием компоненты и её настройки также можно ознакомиться в разделе - Кнопка

+ + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Надпись на кнопке позволяет задать надпись на кнопке пример возможного значения: < - значение по умолчанию
Текст подтверждения позволяет задать текст, который будет отображен пользователю внутри диалогового окна вместе с кнопками для подтверждения действия - Да/Нет пример возможного значения: Вы действительно хотите выбрать данное значение?
+

Свойство компоненты: Список зависимых записей. Вернуть строку в таблицу “доступных” из таблицы “выбранных”

+

+

по нажатию на кнопку автоматически происходит перенос строки из Таблицы выбранных пользователем записей (на странице в диалоговом окне находится справа) в Таблицу доступных записей (на странице в диалоговом окне находится слева)

+

параметры заполнены по умолчанию ссылками на элементы, иерархически входящими в состав компоненты Список зависимых записей

+
    + +
  • В таблицу “доступных”: указывается таблица, расположенная (слева) во всплывающем диалоговом окне, в которой находятся все доступные для выбора записи, куда будет перенесена (возвращена) выбранная запись
  • +
  • Из таблицы “выбранных”: указывается таблица, расположенная (справа) во всплывающем диалоговом окне, в которой находятся уже выбранные пользователем записи из списка доступных, откуда будет перенесена (возвращена) выбранная запись
  • +
+

+

Основные параметры Кнопки “Удалить все”

+

прим.: с полным описанием компоненты и её настройки также можно ознакомиться в разделе - Кнопка

+ + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Надпись на кнопке позволяет задать надпись на кнопке пример возможного значения: << - значение по умолчанию
Текст подтверждения позволяет задать текст, который будет отображен пользователю внутри диалогового окна вместе с кнопками для подтверждения действия - Да/Нет пример возможного значения: Вы действительно хотите выбрать данное значение?
+

Свойство компоненты: Список зависимых записей. Вернуть все строки в таблицу “доступных” из таблицы “выбранных”

+

+

по нажатию на кнопку автоматически происходит перенос строки из Таблицы выбранных пользователем записей (на странице в диалоговом окне находится справа) в Таблицу доступных записей (на странице в диалоговом окне находится слева)

+

параметры заполнены по умолчанию ссылками на элементы, иерархически входящими в состав компоненты Список зависимых записей (поле)

+
    + +
  • В таблицу “доступных”: указывается таблица, расположенная (слева) во всплывающем диалоговом окне, в которой находятся все доступные для выбора записи, куда будут перенесены (возвращены) все записи
  • +
  • Из таблицы “выбранных”: указывается таблица, расположенная (справа) во всплывающем диалоговом окне, в которой находятся уже выбранные пользователем записи из списка доступных, откуда будут перенесены (возвращены) все записи
  • +
+

+

Основные параметры Связанной таблицы(таблица выбранных пользователем записей)

+

прим.: с полным описанием компоненты и её настройки также можно ознакомиться в разделе - Таблица

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Показывать номер строки позволяет задать автоматическую нумерацию строк +
    +
  • значение не определено - по умолчанию
  • +
  • Активно - отображать нумерацию строк
  • +
  • Не активно - не отображать нумерацию строк
Подсказка позволяет создать подсказку, расположенную внутри элемента
Надпись позволяет задать наименование поля, которое будет отображаться на странице Активно - подлежит сохранению - значение по умолчанию, Не активно -не подлежит сохранению
Multiselectable позволяет задать возможность единовременного выбора одной или нескольких записей в Таблице; выбранные строки окрашиваются в отличный от других строк цвет +
    +
  • возможность выбора сразу нескольких или одной строки
  • +
  • возможность выбора одной строки - значение по умолчанию
Checkbox Column позволяет поставить отметку в виде флажка на тех записях, которые выбраны пользователем в рамках работы с компонентой +
    +
  • значение не определено - по умолчанию
  • +
  • Активно - отображать колонку флагов
  • +
  • Не активно - не отображать колонку флагов
Pinned Bottom Row Label позволяет задать значение для названия итоговой строки таблицы (строки с агрегирующими значениями по колонкам таблицы) пример возможного значения: Итого
Row click selection type позволяет задать поведение выбора строк при клике на строку Таблицы +
    +
  • SINGLE_SELECT_CLICK – при клике на строку предыдущие выбранные строки сбрасываются, если не была зажата клавиша Ctrl или Shift- данный метод выбран по умолчанию
  • +
  • MULTI_SELECT_CLICK -при каждом клике на строку, предыдущие выбранные строки не сбрасываются, т.е если кликнули на одну строку, а затем на другую, то первая строка останется выбранной. Клик по уже выбранной строке снимает с неё выделение. Использования данного метода допустимо, в случае, если в таблице доступен выбор нескольких строк (при значениисвойстваMultiselectable)
  • +
  • SUPPRESS_SELECT_CLICK – исключает возможность выбора (выделения) строки по клику. В данном случае, выбор строки представляется возможным только при использовании чекбоксов.
Save Column State позволяет задать возможность сохранения пользовательских настроек в части состава и ширины колонок в таблице +
    +
  • значение не определено - по умолчанию
  • +
  • Активно - изменения пользователя в части отображаемых колонок в таблице (состав и ширина) будут сохраняться в локальном хранилище, т.е. если пользователь исключил для отображения конкретную колонку или изменил ширину столбца в таблице, то при повторном переходе на страницу эти изменения отобразятся
  • +
  • Не активно - не сохранять изменения пользователя в части отображаемых колонокв таблице (состав и ширина), т.е. если пользователь исключил для отображения конкретную колонку или изменил ширину столбца в таблице, то при повторном переходе на страницу эти изменения не отобразятся и таблица будет иметь исходный вид по умолчанию
Loading Overlay Type позволяет выбрать вид прелоадера при подгрузке данных в таблицу Доступны следующие виды настройки: +
    +
  • TEXT_OVERLAY - отображает текст в центре таблицы при подгрузке данных, задаваемый в свойствах:No Rows Overlay Message и Loading Overlay Message
  • +
  • PROGRESS_BAR - отображает прогресс-бар при подгрузке данных в таблицу
No Rows Overlay Message позволяет указать текст для отображения пользователю в таблице в случае, если результат запроса не вернул ни одной строки, например, Данные отсутствуют(доступно для настройки при Loading Overlay Type - TEXT_OVERLAY) пример возможного значения:Данные отсутствуют
Loading overlay message позволяет указать текст для отображения пользователю в процессе подгрузки данных в таблицу, например,Загрузка данных, пожалуйста, подождите.(доступно для настройки приLoading Overlay Type - TEXT_OVERLAY) пример возможного значения: Загрузка данных, пожалуйста, подождите.
Allow Context Menu With позволяет управлять отображением контекстного меню (список доступных для исполнения действий) при нажатии правой кнопкой мыши на ячейку внутри таблицы +
    +
  • значение не определено - по умолчанию
  • +
  • Активно - при нажатии правой кнопкой мыши на ячейку внутри таблицы отображается контекстное меню доступных действий, например, копирование значения ячейки
  • +
  • Не активно - исключает отображение контекстного меню при нажатии правой кнопкой мыши на ячейку внутри таблицы
+

Свойство компоненты: Таблица. Настроить колонки таблицы

+

+

позволяет настроить отображаемые колонки в Таблице с сортировкой данных по конкретному порядку

+

с описанием настройки Колонок Таблицы можно ознакомиться в разделе: Настройка колонок Таблицы

+

Свойство компоненты: Активировать кнопку после выбора строки в таблице

+

+

устанавливает доступность Кнопки “Удалить” после выбора строки в Связанной таблице выбранных пользователем записей (на странице в диалоговом окне находится справа) для переноса (возврата) записи в Таблицу со списком доступных записей (на странице в диалоговом окне находится слева)

+

по умолчанию задана - Кнопка “Удалить” (Список зависимых записей (поле ) - Кнопка удалить).

+

+

Свойство компоненты: Список зависимых записей. Заполнить значением по умолчанию

+

+

позволяет настроить параметры и осуществить запрос данных для заполнения значениями по умолчанию полей компонентыСписок зависимых записей (поле)

+

с описанием функции Заполнить значением по умолчанию можно ознакомиться в разделе: Заполнить значением по умолчанию. Список зависимых записей

+

Основные параметры Кнопки “Ок”

+

прим.: с полным описанием компоненты и её настройки также можно ознакомиться в разделе - Кнопка

+ + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Надпись на кнопке позволяет задать надпись на кнопке пример возможного значения: Ок - значение по умолчанию
Текст подтверждения позволяет задать текст, который будет отображен пользователю внутри диалогового окна вместе с кнопками для подтверждения действия - Да/Нет пример возможного значения: Вы действительно выбрали все необходимые значения?
+

Свойство компоненты: Диалог. Скрыть

+

+

позволяет задать диалог, который будет закрыт при нажатии на кнопку

+

- по умолчанию задан Диалог Список зависимых записей (поле) - Диалог вложенный в компоненту Список зависимых записей (поле)

+

Свойство компоненты: Список зависимых записей. Перенести записи из таблицы “выбранных” записей

+

+

по нажатию на кнопку автоматически происходит перенос записей из Таблицы выбранных пользователем записей (на странице в диалоговом окне находится справа) в результирующую Связанную таблицу зависимых записей (на основной странице)

+

параметры заполнены по умолчанию ссылками на элементы, иерархически входящими в состав компоненты Список зависимых записей

+
    + +
  • Из таблицы “выбранных”: указывается Связанная таблица, расположенная (справа) во всплывающем диалоговом окне, в которой находятся уже выбранные пользователем записи из списка доступных, откуда будут перенесены значения
  • +
  • В список зависимых записей: указывается результирующая компонента Поле с множественным выбором
  • +
+

+

Основные параметры Кнопки “Отмена”

+

прим.: с полным описанием компоненты и её настройки также можно ознакомиться в разделе - Кнопка

+ + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Надпись на кнопке позволяет задать надпись на кнопке пример возможного значения: Отмена - значение по умолчанию
Текст подтверждения позволяет задать текст, который будет отображен пользователю внутри диалогового окна вместе с кнопками для подтверждения действия - Да/Нет пример возможного значения: Вы действительно хотите отменить действие?
+

Свойство компоненты: Диалог. Скрыть

+

+

позволяет задать диалог, который будет закрыт при нажатии на кнопку

+

- по умолчанию задан Диалог Список зависимых записей (поле) - Диалог, вложенный в компоненту Список зависимых записей

+

Функции

+

В ходе настройки свойств компоненты (заданных по умолчанию) может оказаться недостаточно для выполнения поставленной задачи и получения необходимого результата.

+

Для каждой компоненты предусмотрен перечень функций, расширяющих её базовую функциональность, которые можно добавить нажатием кнопки Добавить скрипт

+

Вследствие технических особенностей реализации функций (-функции, которые выполняются удаленно на сервере приложений,- функции, которые выполняются в браузере пользователя), они имеют разные иконки, но это никак не влияет на их функциональность или предпочтительность использования.

+

Рекурсивно копировать составные объекты сложных компонент

+

TODO

+

Определить права текущего пользователя

+

Определить права текущего пользователя

+

Определить роли текущего пользователя

+

Определить роли текущего пользователя

+

Методические рекомендации по применению

+

Пошаговые инструкции по применению компонента в типовых задачах Вы можете найти в разделах:

+ +

Часто задаваемые вопросы

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Вопрос Ответ
Какие дочерние элементы Списка зависимых записей требуют обязательной и непосредственнойнастройки аналитиком? Большинству описанных параметров дочерних элементов компоненты Список зависимых записей (поле) уже заранее заданы значения по умолчанию, и они не требуют каких-либо изменений от аналитика в типовых случаях. Но часть параметров следует задать в процессе использования компоненты для её корректной работы и внедрения в логику бизнес-процесса: +
    +
  • параметры элемента Поле с множественнымвыбором: Поле с множественным выбором. Подгрузка данных
  • +
  • параметры Таблицы доступных строк для выбора - Таблица: Таблица. Подгрузка данных Таблица. Настроить колонки таблицы
С примером добавления и настройки компоненты Список зависимых записей можно ознакомиться в разделе: Как задействовать компоненту Список зависимых записей (поле)
Можно ли использовать Набор фильтров для удобства поиска значений в Таблице доступных строк? Да, можно. Для этого необходимо в элемент Диалог, входящий в состав компоненты Список зависимых записей (поле), добавить элемент Набор фильтров со вложенными фильтрами, например, Текстовое поле (фильтр) или Фильтр по числовому полю, настроить их свойства и в качестве Таблицы, по значениям которой будет происходить фильтрация, в Наборе фильтров указать Таблицу доступных строк (Список зависимых записей (поле) - Таблица) компоненты Список зависимых записей (поле).
Почему при открытии диалога на странице неактивна кнопка “Добавить”? Кнопка"Добавить"недоступна для управления по умолчанию и становится активна только при выборе записи (с помощью функцииАктивировать кнопку после выбора строки в таблице,настраиваемой в свойствахТаблицы) в Таблице доступных строк для выбора(на странице в диалоговом окне находится слева).По нажатию на кнопку выбранная пользователем строка будет перенесена в Таблицу выбранных строк(на странице в диалоговом окне находится справа).Аналогичная логика заложена в работу кнопки"Удалить", которая становится активна только при выборе записи в Таблице выбранных строк(на странице в диалоговом окне находится справа),и по нажатию на кнопку выбранная запись будет перенесена в Таблицу доступных строк(на странице в диалоговом окне находится слева).
Можно ли выбрать одновременно несколько строк в Таблице доступных записей для добавления в Таблицу выбранных строк? Да, можно. Для этого необходимо при настройкеосновных параметров Таблицы доступных строк, привести свойства Допустимо выбрать несколько строк (Multiselectable) и Колонка флагов в значение (истина), после чего в интерфейсе в Таблице доступных строк (на странице в диалоговом окне находится слева) отобразится колонка флагов (выбора записи), которая позволит одновременно выделить несколько строк (при этом выбранные строки окрасятся в отличный от других строк цвет), и по нажатию на кнопку"Добавить"выбранные записи будут перенесены в Таблицу выбранных строк(на странице в диалоговом окне находится слева).В случае, когда необходимо выбрать все предложенные записи в Таблице доступных строк и включить их в Таблицу выбранных строк используется кнопка"Добавить все".
Можно ли изменить цветовое оформление Таблицы? Да. Цветовым оформлением Таблицы можно управлять с помощью CSS-стилей, задаваемых в**Основных параметрах - Расширенные настройки - CSS классы.
Как изменить формат отображения данных в колонке Таблицы? В случае, если необходимо изменить формат отображения значений в колонке Таблицы необходимо при настройке колонки применить Форматтер. Например, подгружаемое значение в колонку имеет тип данных Дата и Время (DateTime), но на странице пользовательского приложения необходимо отображать значение в колонке без Времени, только Дату. В таком случае, целесообразно использовать форматтер DateFormatter, который отобразит значение колонки в нужном виде. Но при этом предварительно необходимо применить к Таблице функцию Очистить форматирование колонок таблицы, указав наименование настраиваемой колонки.
Можно ли поменять порядок отображаемых колонок в Таблице? Для того, чтобы изменить порядок колонок в Таблице необходимо в свойстве Настроить колонки таблицы - Колонкинажать правой кнопкой мыши на «Элемент» и выбрать предложенные варианты: Переместить наверх - Переместить вниз - Удалить элемент.
Можно ли задать автоматическую нумерацию строк (записей) в Таблице? Да, можно. Для этого необходимо в настраиваемых параметрах Таблицы перейти к свойству Таблица. Основные параметры - Показывать номер строкии привести его в значение(истина).
+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Список_с_поиском_для_выбора_одного_значения.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Список_с_поиском_для_выбора_одного_значения.html new file mode 100644 index 0000000..5919d8a --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Список_с_поиском_для_выбора_одного_значения.html @@ -0,0 +1,675 @@ + + + + + + + + Web-BPM Docs – Список с поиском для выбора одного значения + + + + + + +
+
+ + + +
+
+

Список с поиском для выбора одного значения

+

Назначение

+

Список с поиском для выбора одного значения - это составной компонент, который используется длявыбора одного значения из списка доступных с возможностью поиска.Для того чтобы данные, отобранные с помощью этой компоненты, сохранялись в базу данных, её необходимо вложить в компоненту Форма.

+

Компонента Список с поиском для выбора одного значения находится в разделе Компоненты - Поля - Список с поиском для выбора одного значения.

+

В структуру компоненты Список с поиском для выбора одного значения входят следующие элементы

+

Структура

+

Основные вложенные элементы компоненты Список с поиском для выбора одного значения

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование элемента Описание
Список с поиском для выбора одного значения контейнер горизонтального выравнивания, в который вложены все дочерние компоненты
Списка с поиском (с возможностью сохранения) отображает информацию по выбранной записи из списка
Кнопка выбора используется для открытия (вызова) диалогового окна
Диалог выбора используется для отображениявсплывающего диалогового окна
Панель фильтров представляет собой сворачиваемую панель, которая включает в себя Группу фильтров, Кнопку для фильтрации и “Кнопку Очистить”, которые будут отображаться в диалоговом окне
Группа фильтров позволяет задать фильтры поиска, которые будут применяться к Таблице; в зависимости от типа полей (текст, число и т.д.) по которым будет осуществляться фильтрация, в группу фильтров может быть вложен, например, Фильтр по текстовому полю или Фильтр по числовому полю
Кнопка для фильтрации используется для осуществления поиска значения в Таблице в соответствии с заданными фильтрами из Группы фильтров
Кнопка Очистить позволяет очистить введенные значения фильтров из Группы фильтров
Таблица используется для отображения информации в табличном виде, в данном случае, списка доступных значений из справочника
Кнопка выбора позволяет перенести значение из списка доступных вариантов в поле список с поиском (с возможностью сохранения)
Кнопка отмены позволяет закрыть диалог без выполнения действий с данными
+

Свойства

+

Компонента имеет набор общих свойств.

+

Основные параметры Списка с поиском для выбора одного значения

+

прим.: с полным описанием компоненты и её настройки также можно ознакомиться в разделе - Горизонтальный контейнер

+

Основные параметры Списка с поиском с возможностью сохранения

+

прим.: с полным описанием компоненты и её настройки также можно ознакомиться в разделе - Поле ввода с подбором значения (Поиск)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Подсказка позволяет создать подсказку, расположенную внутри элемента пример возможного значения: Начните вводить название департамента
Надпись позволяет задать наименование поля, которое будет отображаться на странице пример возможного значения: Департамент
Зависит от используется в том случае, когда набор доступных для выбора значений в текущем компоненте необходимо ограничить, исходя из выбранного значения в вышестоящем компоненте, от которого зависит текущий
Начать подбор вариантов после ввода задает минимальное число символов, при наборе которых будет осуществляться запрос на сервер пример возможного значения: 3 - значение по умолчанию
Прикрепить значение (Scroll Gravity) позволяет задать расположение уже выбранного значения при отображении в выпадающем списке доступных значений позволяет задать расположение уже выбранного значения при отображении в выпадающем списке доступных значений +
    +
  • По умолчанию (DEFAULT) - выбранное значение отображается в порядке своего следования в списке доступных значений для выбора
  • +
  • По центру (CENTER) - выбранное значение отображается по центру в выпадающем списке доступных значений для выбора
  • +
  • В верхней части (TOP)- выбранное значение отображается в верхней части выпадающего списка доступных значений для выбора
  • +
  • В нижней части (BOTTOM) - выбранное значение отображается в нижней части выпадающего списка доступных значений для выбора
Исключить условия графа данное свойство позволяет подгружать для отображения значения в поле минуя условия (ограничения), заданные в Графе сущностей компоненты +
    +
  • Не активно - в данном состоянии, при подгрузке значений отсекаются значения не соответствующие условиям, заданным в Графе сущностей компоненты
  • +
  • Активно - в данном состоянии, при подгрузке значений допускается отображение значений, не соответствующих условиям, заданным в Графе сущностей компоненты, но без возможности их повторного выбора в выпадающем списке
Помечать невалидным (Mark invalid if not Satisfy) данное свойство доступно для управления при активации значении свойства Exclude Graph Conditions и позволяет визуально помечать поле как невалидное на странице, в случае если в него было подгружено значение, не соответствующие условиям Графа сущностей элемента +
    +
  • Не активно - в данном значении, поле не помечается на странице как невалидное и отображается стандартным образом
  • +
  • Активно - в данном значении, убрав фокус с поля, оно помечается на странице как невалидное
Css class if not Satisfy данное свойство доступно для управления при активном значении свойства Exclude Graph Conditions и позволяет задать CSS-класс, который будет применяться, в случае если в поле было подгружено значение, не соответствующие условиям Графа сущностей элемента
Tooltip if not Satisfy позволяет отображать всплывающую подсказку,в случае если в поле было подгружено значение, не соответствующие условиям Графа сущностей элемента. Данное свойство доступно для управления при: активном значении свойства Exclude Graph Conditions и заданному значению в поле Css Class If Not Satisfy пример возможного значения: not_valid
+

Свойство компоненты: Поле ввода с подбором значения. Подгрузка данных

+

+

позволяет задать источник подгрузки данных с указанием методов и типов сортировки, и с настройкой Графа сущностей. Является обязательным к заполнению и настройке.

+
    + +
  • + +

    Граф сущностей элемента настраивается в соответствии с п. Настройка Графа сущностей. Является обязательным к заполнению и настройке.

    +
  • +
  • + +

    Возвращать значение дополнительно из - по умолчанию компонента возвращает идентификатор записи выбранной из справочника значений. Настройка данного параметра позволяет указать компоненте, какое значение необходимо дополнительно считать и вернуть, кроме значения идентификатора выбранной пользователем записи.

    +
  • +
  • + +

    Показывать варианты по - позволяет ограничить список отображаемых вариантов в процессе подбора по подстроке.

    +
  • +
  • + +

    Тип поиска позволяет задать один из вариантов поиска по вводимой пользователем подстроке:

    +
  • +
  • + +

    С начала строки - значение отображается в списке, если с введенной пользователем подстроки начинается значение колонки из базы данных

    +
  • +
  • По всей строке -значение отображается в списке, если введенная пользователем подстрока содержится в значении колонки из базы данных с любого места вхождения
  • +
  • + +

    Связаны по - позволяет указать колонку текущей компоненты, по которой осуществляется связь с компонентой, указанной в свойстве “Зависит от”, обеспечивающую связь между родительской и текущей компонентами

    +
  • +
  • + +

    Тип колонки - это свойство, позволяющее выбрать тип для отображения значения в поле:

    +
  • +
  • + +

    Из одной колонки - значение по умолчанию

    +
  • +
  • Из нескольких колонок - позволяет указать перечень колонок, значения которых будут склеиваться в одну строку при отображении на страницес определяемым разделителем значений (точка, запятая, пробел и другие)
  • +
  • + +

    Разделитель - символ или пробел, который будет разделять между собой значения из разных колонок таблиц (ы) приводимых в одну строку (доступно для настройки при Тип колонки - Из нескольких колонок)

    +
  • +
  • + +

    Колонка для поиска (Search Columns) - позволяет задать элемент базы данных (колонку) со строковым типом данных, значениекоторого будет отображаться в строке результата поиска, в случае если в отображаемой (по умолчанию) пользователю колонке (Display Column) содержится значение NULL (доступно для настройки при Тип колонки - Из нескольких колонок)

    +
  • +
  • + +

    Порядок сортировки (Sort Order) - позволяет задать порядок сортировки отображаемых значений в списке для выбора, принимает значения:

    +
      + +
    • по возрастанию - значения будут сортироваться от меньшего к большему
    • +
    • по убыванию - значения будут сортироваться от большего к меньшему
    • +
    +
  • +
  • + +

    Показывать пользователю - позволяет задатьэлемент базы данных, значение которого будет отображено пользователю в Выпадающем списке (доступно для настройки при Тип колонки - Из одной колонки)

    +
  • +
  • + +

    Активировать фильтрацию по - позволяет задать колонку, по которой можно будет динамически активировать фильтр при использовании метода “Задать фильтр” (Set_Filter) в компоненте Обработка Событий в отношении настраиваемой компоненты

    +
  • +
  • + +

    *Datasource Jndi Name - *позволяет задать иной источник (базу данных) для выполнения запроса, заданного с помощью элементов базы данных в редакторе Графа сущностей элемента.

    +
  • +
+

Значение данного свойства может быть задано следующим образом: java:/webbpm/AppRepDS, а сам адрес базы данных, логин и пароль для подключения должен быть указан в файлеstandalone.xml(аналогично тому, как указывается, например, подключение к базе данных безопасности) (рис.1)

+

В случае, если данное свойство не заполнено, запрос выполняется в базе данных, указанной в конфигурации проекта (во вкладке База данных).

+
    + +
  • Сортировать по - позволяет задать элемент базы данных, по значению которого будет производиться сортировка
  • +
+

с описанием настройки Списка с поиском с возможностью сохраненияможно ознакомиться в разделе: Поле ввода с подбором значения

+

Свойство компоненты: Поле ввода с подбором значения. Сохранение значения

+

+

В случае, если значение в Поле ввода с подбором значения необходимо сохранить или подгрузить из базы данных, указывается поле таблицы базы данных, куда будет сохраняться и откуда будет подгружаться введенное значение.

+

В случае, если значение Поля ввода с подбором значения не требуется сохранять или подгружать из базы данных, то данное свойство удаляется (или отключается). Данный вариант может быть необходим, когда поле используется для отображения значения, которое является константой, определённой в логике приложения.

+

+

Свойство компоненты: Заполнить значением из переменнойлюбого типа

+

позволяет указать переменную процесса, значение которой будет передаваться в поле и отображаться по умолчанию

+

с описанием настройки свойстваЗаполнить значением из переменной процессаможно ознакомиться в разделе: Заполнить значением из переменной процесса

+

Свойство компоненты: Поле ввода с подбором значения. Подгрузка данных по умолчанию

+

позволяет указать значение по умолчанию, которое будет подгружаться в поле с помощью двух типов подгрузки (источников подгрузки значения):

+
    + +
  • из колонки
  • +
  • из сервиса
  • +
+

с описанием настройки свойства Заполнить значением поумолчаниюи соответствующих ей типов подгрузкиможно ознакомиться в разделе: Заполнить значением по умолчанию

+

Основные параметры Кнопки выбора (открытия диалога)

+

прим.: с полным описанием компоненты и её настройки также можно ознакомиться в разделе - Кнопка выбора

+ + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Надпись на кнопке позволяет задать надпись на кнопке … - значение по умолчанию
Вызвать диалог позволяет задать диалог, который будет открываться при нажатии на кнопку по умолчанию задан Диалог выбора
+

Основные параметры Диалога выбора

+

прим.: с полным описанием компоненты и её настройки также можно ознакомиться в разделе - Диалог

+ + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Заголовк позволяет задать заголовок диалога на странице пример возможного значения: Выбор записи - значение по умолчанию
Допускается скрытие через системную Х позволяет задать возможность закрытия диалога по нажатию на системный крестик возможно закрыть диалог через - значение по умолчанию, невозможно закрыть диалог (системный скрыт)
+

Основные параметры Панели фильтров

+ + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Заголовок позволяет задать заголовок сворачиваемой панели на странице пример возможного значения: Фильтр - значение по умолчанию
Открывать развернутым позволяет задать вид панели при открытии диалога не активно - панель свернута - значение по умолчанию, активно - панель развернута
+

Основные параметры Кнопки для фильтрации

+

прим.: с полным описанием компоненты и её настройки также можно ознакомиться в разделе - Кнопка для фильтрации

+ + + + + + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Надпись на кнопке позволяет задать надпись на кнопке Найти - значение по умолчанию
Компонент “Набор фильтров” позволяет задать Набор фильтров, по значениям которых будет осуществляться поиск по умолчанию задана Группа фильтров
Текст подтверждения позволяет задать текст сообщения, который отобразится в диалоговом окне после нажатия на кнопкус возможностью подтвердить действие с помощью кнопок “Да / Нет”
+

Основные параметры Кнопки “Очистить”

+

прим.: с полным описанием компоненты и её настройки также можно ознакомиться в разделе-Кнопка очистки фильтра

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Надпись на кнопке позволяет задать надпись на кнопке пример возможного значения: Сбросить - значение по умолчанию
Текст подтверждения позволяет задать текст сообщения, который отобразится в диалоговом окне после нажатия на кнопкус возможностью подтвердить действие с помощью кнопок “Да / Нет”
Для компонента “набор фильтров” позволяет задать Набор фильтров, поля которого будут очищаться при нажатии по умолчанию задана Группа фильтров
Сбросить значения фильтров на значения по умолчанию при нажатии на кнопку возвращает значения заданных фильтров к значениям по умолчанию Не активно - не сбрасывать значения - значение по умолчанию, активно - сбрасывать значения
Применять фильтры после сброса позволяет задать возможность возврата фильтруемой Таблицы в первоначальное состояние при нажатии на кнопку Не активно - не применять значения фильтров - значение по умолчанию, активно - применять значения фильтров
+

Основные параметры Кнопки выбора

+

прим.: с полным описанием компоненты и её настройки также можно ознакомиться в разделе - Кнопка выбора

+ + + + + + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Надпись на кнопке позволяет задать надпись на кнопке пример возможного значения: Выбрать - значение по умолчанию
Текст подтверждения позволяет задать текст сообщения, который отобразится в диалоговом окне после нажатия на кнопкус возможностью подтвердить действие с помощью кнопок “Да / Нет”
Скрыть диалог позволяет указать Диалог, который будет закрыт при нажатии на кнопку по умолчанию задан Диалог выбора
+

Свойство компоненты: Перенести значение из списка доступных вариантов в поле “выбранное значение”

+ + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Из списка доступных вариантов позволяет задать Таблицу, из которой будет переносится выбранное значение по умолчанию задана Таблица
В поле выбранное занчение позволяет указать поле, куда будет копироваться выбранное значение из Таблицы по умолчанию задан Список с поиском (с возможностью сохранения)(Поле ввода с подбором значения)
+

Основные параметры “Кнопки отмены”

+

прим.: с полным описанием компоненты и её настройки также можно ознакомиться в разделе - Кнопка отмены

+ + + + + + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Надпись на кнопке позволяет задать надпись на кнопке пример возможного значения: Отмена - значение по умолчанию
Скрыть диалог позволяет указать Диалог, который будет закрыт при нажатии на кнопку по умолчанию задан Диалог выбора
Текст подтверждения позволяет задать текст сообщения, который отобразится в диалоговом окне после нажатия на кнопкус возможностью подтвердить действие с помощью кнопок “Да / Нет”
+

Основные параметры Таблицы

+

прим.: с полным описанием компоненты и её настройки также можно ознакомиться в разделе - Таблица

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Зависит от позволяет указать объект (родителя), по идентификатору которого будут отображаться сведения в текущей Таблице; задаётся в случае необходимости связать Таблицу с другой компонентой, например, Выпадающий список пример возможного значения: необходимо ограничить по конкретному признаку вложенную Таблицу (справочник районов). В данном случае, ограничивающим признаком будет служить значение из Выпадающего списка (регионы России), например, Республика Татарстан. В Таблице будут отображаться районы только Республики Татарстан, из которых будет производится дальнейший выбор.
Multiselectable позволяет задать возможность единовременного выбора одной или нескольких записей в Таблице; выбранные строки окрашиваются в отличный от других строк цвет +
    +
  • возможность выбора сразу нескольких или одной строки
  • +
  • возможность выбора одной строки - значение по умолчанию
Checkbox Column позволяет поставить отметку в виде флажка на тех записях, которые выбраны пользователем в рамках работы с компонентой +
    +
  • значение не определено - по умолчанию
  • +
  • Активно - отображать колонку флагов +
  • Не активно - не отображать колонку флагов
Показывать номер строки позволяет задать автоматическую нумерацию строк +
    +
  • значение не определено - по умолчанию
  • +
  • Активно - отображать нумерацию строк
  • +
  • Не активно - не отображать нумерацию строк
Pinned Bottom Row Label позволяет задать значение для названия итоговой строки таблицы (строки с агрегирующими значениями по колонкам таблицы) пример возможного значения: Итого
Row click selection type позволяет задать поведение выбора строк при клике на строку Таблицы +
    +
  • SINGLE_SELECT_CLICK – при клике на строку предыдущие выбранные строки сбрасываются, если не была зажата клавиша Ctrl или Shift- данный метод выбран по умолчанию
  • +
  • MULTI_SELECT_CLICK -при каждом клике на строку, предыдущие выбранные строки не сбрасываются, т.е если кликнули на одну строку, а затем на другую, то первая строка останется выбранной. Клик по уже выбранной строке снимает с неё выделение. Использования данного метода допустимо, в случае, если в таблице доступен выбор нескольких строк (при значениисвойстваMultiselectable)
  • +
  • SUPPRESS_SELECT_CLICK – исключает возможность выбора (выделения) строки по клику. В данном случае, выбор строки представляется возможным только при использовании чекбоксов.
Save column state позволяет задать возможность сохранения пользовательских настроек в части состава и ширины колонок в таблице +
    +
  • значение не определено - по умолчанию
  • +
  • Активно - изменения пользователя в части отображаемых колонок в таблице (состав и ширина) будут сохраняться в локальном хранилище, т.е. если пользователь исключил для отображения конкретную колонку или изменил ширину столбца в таблице, то при повторном переходе на страницу эти изменения отобразятся
  • +
  • Не активно - не сохранять изменения пользователя в части отображаемых колонокв таблице (состав и ширина), т.е. если пользователь исключил для отображения конкретную колонку или изменил ширину столбца в таблице, то при повторном переходе на страницу эти изменения не отобразятся и таблица будет иметь исходный вид по умолчанию
Loading Overlay Type позволяет выбрать вид прелоадера при подгрузке данных в таблицу Доступны следующие виды настройки: +
    +
  • TEXT_OVERLAY - отображает текст в центре таблицы при подгрузке данных, задаваемый в свойствах: No Rows Overlay Message и Loading Overlay Message
  • +
  • PROGRESS_BAR - отображает прогресс-бар при подгрузке данных в таблицу
No rows overlay message позволяет указать текст для отображения пользователю в таблице в случае, если результат запроса не вернул ни одной строки, например, Данные отсутствуют (доступно для настройки при Loading Overlay Type - TEXT_OVERLAY) пример возможного значения: Данные отсутствуют
Loading Overlay Message позволяет указать текст для отображения пользователю в процессе подгрузки данных в таблицу, например,Загрузка данных, пожалуйста, подождите.(доступно для настройки приLoading Overlay Type - TEXT_OVERLAY) пример возможного значения:Загрузка данных, пожалуйста, подождите.
Allow Context Menu With позволяет управлять отображением контекстного меню (список доступных для исполнения действий) при нажатии правой кнопкой мыши на ячейку внутри таблицы +
    +
  • значение не определено - по умолчанию
  • +
  • Активно - при нажатии правой кнопкой мыши на ячейку внутри таблицы отображается контекстное меню доступных действий, например, копирование значения ячейки
  • +
  • Не активно - исключает отображение контекстного меню при нажатии правой кнопкой мыши на ячейку внутри таблицы
+

Свойство компоненты: Таблица. Подгрузка данных

+ + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Подгрузка данных позволяет задать граф сущностей для подгрузки данных в Таблицу. Является обязательным к заполнению и настройке. +
    +
  • Граф сущностей элемента настраивается в соответствии с п. Настройка Графа сущностей. Является обязательным к заполнению и настройке.
  • +
  • Колонка для режима “Зависит от” - позволяет указать колонку настраиваемой Таблицы, которая обеспечивает связь текущей компоненты с компонентой заданной в параметре “Зависит от”
+

Свойство компоненты: Таблица. Настроить колонки таблицы

+ + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Настроить колонки таблицы позволяет настроить отображаемые колонки в Таблице с сортировкой данных по конкретному порядку с описанием настройки Колонок Таблицы можно ознакомиться в разделе: Настройка колонок Таблицы
+

Свойство компоненты: Активировать кнопку после выбора строки в таблице

+ + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Активируемая кнопка устанавливает доступность Кнопки выбора записи после указания необходимой строки в Таблице по умолчанию задана Кнопка выбора
+

Свойство компоненты: Таблица. Настроить динамическую подгрузку данных при просмотре страницы

+ + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Количество записей в блоке количество отображаемых записей в Таблице по умолчанию при каждой новой подгрузке пример возможного значения: 20 - значение по умолчанию
+

Основные параметры Группы фильтров

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Фильтровать сразу позволяет задать возможность фильтровать Таблицу сразу по мере ввода значения фильтра, без нажатия на Кнопку для фильтрации +
    +
  • Активно - не фильтровать сразу - значение по умолчанию
  • +
  • Активно - фильтровать сразу, без нажатия Кнопки для фильтрации
  • +
  • - значение не определено
Применить к … позволяет задать Таблицу, по которой будет осуществляться фильтрация записей по умолчанию задана Таблица
Запомнить значения фильтра позволяет восстанавливать значения фильтров при возврате на страницу, т.е. запоминать значения фильтров (сохранять в кэше). При этом значение фильтра, заданное пользователем имеет приоритет над значением фильтра по умолчанию +
    +
  • значение не определено - по умолчанию
  • +
  • Активно - запоминать значения фильтров
  • +
  • Не активно - не запоминать значения фильтров
Skip initial loading позволяет исключать подгрузку данных в таблицу без указания значений фильтров (пустыми фильтрами) +
    +
  • значение не определено - по умолчанию
  • +
  • Активно - исключает возможность подгрузки данных в таблицу без указания значений фильтров, т.е. при пустых значениях фильтров при первоначальном открытии страницы или по кнопке “Найти” запрос в базу данных (по Графу сущностей таблицы) выполняться не будет
  • +
  • Не активно - позволяет подгружать данные в таблицу без указания значений фильтров, т.е. при первоначальном открытии страницы или по кнопке “Найти” будет осуществляться запрос в базу данных по пустым значениям фильтров
позволяет задатьшаблон вывода сообщения (текст сообщения), отображаемого в окне ошибки при валидации значений фильтров. По умолчанию шаблон сообщения выставлен как:“#{label}: #{message}”, где параметры интерпретируются следующим образом: #{label} -наименование компоненты, в которой произошла ошибка. #{message}-текст сообщения об ошибке Примеры возможной настройки: При пустом значений в поле* Message Validation Template* текст в окне об ошибке, отображаемом, например, при не заполнении значения в обязательном поле, будет отображаться по шаблону "\#{label}: \#{message}", где \#{label} - наименование компоненты, в которой произошла ошибка (например, поле ФИО) \#{message} - текст сообщения об ошибке (значение по умолчанию Поле обязательно). При указании конкретного текста в поле Message Validation Template,например, “Для выполнения поиска необходимо заполнить обязательные поля!”. Указываемое значение вMessage Validation Template допускает и использование атрибутов#{label} и #{message} по отдельности, например, если задать значение “#{label}: Некорректное значение в обязательном поле”, то окно об ошибке будет иметь следующий вид (рис.3), где#{label} -наименование компоненты, в которой произошла ошибка (например, поле ФИО)
+

Функции

+

В ходе настройки свойств компоненты (заданных по умолчанию) может оказаться недостаточно для выполнения поставленной задачи и получения необходимого результата.

+

Для каждой компоненты предусмотрен перечень функций, расширяющих её базовую функциональность, которые можно добавить нажатием кнопки Добавить скрипт

+

Вследствие технических особенностей реализации функций (функции, которые выполняются удаленно на сервере приложений, функции, которые выполняются в браузере пользователя), они имеют разные иконки, но это никак не влияет на их функциональность или предпочтительность использования.

+

TODO

+

Определить права текущего пользователя

+

Определить роли текущего пользователя

+

Методические рекомендации по применению

+

Пошаговые инструкции по применению компонента в типовых задачах Вы можете найти в разделах:

+ +

Часто задаваемые вопросы

+ + + + + + + + + + + + + + + + + + + + + +
Вопрос Ответ
Как определить какие типы фильтров необходимо включить в Группу Фильтров? В зависимости от того, к какому типу относится колонка в таблице, по которой будет осуществляться поиск и фильтрация, определяется соответствующий тип фильтра. Например, если мы указываем, что необходимо фильтровать по колонке, в которой хранится текст, то в данном случае, используем Фильтр по текстовому полю, если необходимо предоставить возможность выбора значения из списка значений, то применяем Фильтр по выпадающему списку.
Есть ли ограничения по количеству включаемых фильтров в Группу фильтров? Нет.Количество фильтров определяется в зависимости от решаемой задачи.
Обязательно ли использование фильтров в диалоговом окне? Нет, необязательно.Фильтры можно отключить, скрыв видимость Панели фильтров.
В каком случае целесообразно использовать компоненту Список с поиском для выбора одного значения, а в каком Выпадающий список? Если справочник, из которого необходимо выбрать значение имеет небольшую размерность и пользователь сможет сразу найти значение без использования вспомогательных фильтров, то целесообразно использовать Выпадающий список значений. Если для удобства выбора значения необходимо отобразить дополнительные параметры в виде Таблицы, то в этом случае необходимо использовать Список с поиском для выбора одного значения.
+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Статичный_выпадающий_список.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Статичный_выпадающий_список.html new file mode 100644 index 0000000..61a59e0 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Статичный_выпадающий_список.html @@ -0,0 +1,144 @@ + + + + + + + + Web-BPM Docs – Статичный выпадающий список + + + + + + +
+
+ + + +
+
+

Статичный выпадающий список

+

Назначение

+

Статичный выпадающий список - это компонента, которая используется для выбора одного значения из выпадающего списка значений, источником подгрузки которых является не объект базы данных (таблица или представление), а массив данных, определенный вручную аналитиком при настройке элемента.

+

В зависимости от настройки свойств, включенных по умолчанию в состав компоненты, компонента Статичный выпадающий список может использоваться для:

+
    + +
  1. Для сохранения введенной информации в базу данных и отображения значения из базы данных (в данном случае, функция компоненты Статичный выпадающий список. Сохранение значения должна быть включена)
  2. +
  3. Для отображения данных, которые были введены пользователем приложения или является константой, определённой в логике приложения(в данном случае, функция компоненты Статичный выпадающий список. Сохранение значения должна быть выключена или удалена через настройки функции по кнопке)
  4. +
+

Компонента Статичный выпадающий список (без возможности сохранения) находится в разделе Компоненты - Поля - Статичный выпадающий список.

+

Свойства

+

Компонента имеет набор общих свойств. Ниже отображены свойства, специфичные только для данной компоненты.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Подсказка позволяет создать подсказку, расположенную внутри элемента пример возможного значения: Введите год
Надпись позволяет задать наименование поля, которое будет отображаться на странице пример возможного значения: Отчетный год
Значение позволяет задать значение поля по умолчанию пример возможного значения: 2019
Список значений позволяет задать список значений, которые будут отображаться в выпадающем списке +
    +
  • надпись - позволяет задать наименование элемента в списке значений
  • +
  • значение - позволяет задать значение элемента, которое можно записать в базу данных
  • +
  • скрыть - позволяет регулировать видимость элемента в списке значений
надпись - Отчетный год, значение - 2018
Прикрепить значение (Scroll Gravity) позволяет задать расположение уже выбранного значения при отображении в выпадающем списке доступных значений позволяет задать расположение уже выбранного значения при отображении в выпадающем списке доступных значений +
    +
  • По умолчанию (DEFAULT) - выбранное значение отображается в порядке своего следования в списке доступных значений для выбора
  • +
  • По центру (CENTER) - выбранное значение отображается по центру в выпадающем списке доступных значений для выбора
  • +
  • В верхней части (TOP)- выбранное значение отображается в верхней части выпадающего списка доступных значений для выбора
  • +
  • В нижней части (BOTTOM) - выбранное значение отображается в нижней части выпадающего списка доступных значений для выбора
+

Свойство компоненты: Выпадающий список. Сохранение значения

+

+

указывается поле таблицы базы данных, куда будет сохраняться и откуда будет подгружаться введенное значение

+

+

Базовые функции

+

Заполнить значением по умолчанию

+

Заполнить значением по умолчанию

+

Заполнить значением из переменной процесса

+

Заполнить значением из переменной процесса

+

Дополнительные функции

+

В ходе настройки свойств компоненты (заданных по умолчанию) может оказаться недостаточно для выполнения поставленной задачи и получения необходимого результата.

+

Для каждой компоненты предусмотрен перечень функций, расширяющих её базовую функциональность, которые можно добавить нажатием кнопки Добавить скрипт.

+

Вследствие технических особенностей реализации функций (функции, которые выполняются удаленно на сервере приложений, функции, которые выполняются в браузере пользователя), они имеют разные иконки, но это никак не влияет на их функциональность или предпочтительность использования.

+

сохранить значение в переменную процесса любого типа

+

Определить права текущего пользователя

+

Определить права текущего пользователя

+

Определить роли текущего пользователя

+

Определить_роли_текущего_пользователя

+

Заполнить значением из переменной любого типа

+

Заполнить значением из переменной процесса

+

Методические рекомендации по применению

+

Пошаговые инструкции по применению компонента в типовых задачах Вы можете найти в разделах:

+ +

Часто задаваемые вопросы

+ + + + + + + + + + + + + + + +
Вопрос Ответ
Чем отличается компонента Статичный выпадающий список от компоненты Выпадающий список? Компонента Статичный выпадающий список используются для выбора значений, которые указываются аналитиком вручную при настройке компоненты, Выпадающий список используется для выбора значений, которые подгружаются из таблицы базы данных.
Все ли свойства компоненты обязательны для заполнения? Нет. Свойства компоненты определяются в зависимости от решаемой задачи.
+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Статичный_переключатель.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Статичный_переключатель.html new file mode 100644 index 0000000..de423f2 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Статичный_переключатель.html @@ -0,0 +1,138 @@ + + + + + + + + Web-BPM Docs – Статичный переключатель + + + + + + +
+
+ + + +
+
+

Статичный переключатель

+

Назначение

+

Статичный переключатель - это компонента, которая используется для выбора одного из нескольких предоставленных вариантов.Значения берутся не из базы данных,а задаются аналитиком вручную при настройке компоненты.

+

В зависимости от настройки свойств, включенных по умолчанию в состав компоненты, компонента Статичный переключатель может использоваться для:

+
    + +
  1. Для сохранения введеннойинформации в базу данных и отображения значения из базы данных(в данном случае, функция компоненты Статичный переключатель. Сохранение значения должна быть включена)
  2. +
  3. Для отображения значений,заданных бизнес-аналитиком или являющихся константой, определённой в логике приложения(в данном случае, функция компоненты Статичный переключатель. Сохранение значения должна быть выключена или удалена через настройки функции по кнопке)
  4. +
+

Компонента Статичный переключатель находится в разделе Компоненты - Поля без сохранения - Статичный переключатель.

+

Свойства

+

Компонента имеет набор общих свойств. Ниже отображены свойства, специфичные только для данной компоненты.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Подсказка позволяет создать подсказку, расположенную внутри элемента. Данное свойство не применимо с логикой отображения поля на странице приложения
Надпись позволяет задать наименование поля, которое будет отображаться на странице пример возможного значения: Статус
Значение позволяет задать значение по умолчанию, соответствующее одному из указанных значений в настройках компоненты “Список значений” в настройке элемента “Возвращаемое значение” В списке значений компоненты указано, например, два элемента, в настройках которых заполнены поля “Возвращаемое значение”, одно из которых можно использовать в качестве значения по умолчанию для компоненты, отображаемое при отсутствиииного значения подгруженного из базы данных (через функцию Статичный переключатель. Сохранение значения)
Список значений позволяет задать значения доступные для выбора пользователем на странице со следующими настройками +
    +
  • Возвращаемое значение - позволяет задать значение, которое может быть сохранено в базу данных
  • +
  • Сделать скрытым -* позволяет регулировать видимость элемента (значения)
  • +
  • Видимое значение - позволяет задать значение, которое будет отображено пользователю
  • +
  • Сделать недоступным для выбора* - позволяет регулировать возможность управления элементом
+

Свойство Статичный переключатель. Сохранение значения

+

+

В случае, если значение в поле Статичный переключатель необходимо сохранить или подгрузить из базы данных, указывается поле таблицы базы данных, куда будет сохраняться и откуда будет подгружаться введенное значение. Для выбора доступны только колонки имеющие строковый тип в базе данных.

+

В случае, если значение поля Статичный переключатель не требуется сохранять или подгружать из базы данных, то данное свойство удаляется (или отключается). Данный вариант может быть необходим, когда поле используется дляотображения значения, которое было введено пользователем приложения или является константой, определённой в логике приложения.

+

+

Базовые функции

+

Заполнить значением по умолчанию

+

Заполнить значением по умолчанию

+

Заполнить значением из переменной процесса

+

Заполнить значением из переменной процесса

+

Дополнительные функции

+

В ходе настройки свойств компоненты (заданных по умолчанию) может оказаться недостаточно для выполнения поставленной задачи и получения необходимого результата.

+

Для каждой компоненты предусмотрен перечень функций, расширяющих её базовую функциональность, которые можно добавить нажатием кнопки Добавить скрипт.

+

Вследствие технических особенностей реализации функций (функции, которые выполняются удаленно на сервере приложений, функции, которые выполняются в браузере пользователя), они имеют разные иконки, но это никак не влияет на их функциональность или предпочтительность использования.

+

Сохранить значение в переменную процесса любого типа

+

Сохранить значение в переменную процесса любого типа

+

Методические рекомендации по применению

+

Пошаговые инструкции по применению компонента в типовых задачах Вы можете найти в разделах:

+ +

Часто задаваемые вопросы

+ + + + + + + + + + + + + + + + + + + + + +
Вопрос Ответ
Чем отличается компонента Статичный переключатель от компоненты Переключатель? Компонента Статичный переключательиспользуются для выбора значений, которые задаются аналитиком при настройке компоненты, Переключательиспользуется для выбора значений,которые берутся из базы данных.
Все ли свойства компоненты обязательны для заполнения? Нет.Свойства компоненты определяются в зависимости от решаемой задачи.
Возникнет ли ошибка при запуске приложения, если оставить незаполненным свойство Статичный переключатель. Сохранение значения? Да. В случае, если функция “Статичный переключатель. Сохранения значения” включена у элемента и не заполнены ее параметры, то при валидации проекта возникнет ошибка. Если по условию задачи данное поле не должно подгружаться и сохраняться в базу данных, данную функцию в компоненте необходимо либо отключить либо удалить.
Если удалить базовые функции, которые включены в компоненту по умолчанию, например, “Заполнить значением по умолчанию” можно ли будет вновь их добавить? Да. Если удалить какую-то базовую функцию компоненты, то по кнопке “Добавить функцию” она будет доступна для выбора.
+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Стили-полей-ввода.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Стили-полей-ввода.html new file mode 100644 index 0000000..8688dbe --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Стили-полей-ввода.html @@ -0,0 +1,201 @@ + + + + + + + + Web-BPM Docs – + + + + + + +
+
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Название класса css Описание
radio-invert применять для группы radiobutton с целью изменения порядка следования элементов
radio-horizontal применять для RadioButton / StaticRadioButton для горизонтального вывода (кнопки в одну строку)
check-invert применять для группы checkbox с целью изменения порядка следования элементов
ok Бледно-зеленый фон input-а
error Мигающий красный фон input-а
align-center-field Выравнивание полей по центру по горизонтали (Для корректной работы должен находиться внутри отдельного контейнера с классом align-center)
+

Растягиваемые по ширине поля

+

Пользоваться КРАЙНЕ аккуратно, возможны искажения информации!

+ + + + + + + + + + + + +
Название класса css Описание
width-full для полнотекстовых полей input и textarea. Использовать только если элемент единственный в строке!
+

Размеры полей

+ + + + + + + + + + + + + + + + + + + + + + + + +
Название класса css Описание
extra-mini 60px
mini 80px
small 150px
medium 220px
large 600px
+

Размеры надписей к компонентам

+ + + + + + + + + + + + + + + + + + + + + +
Название класса css Описание
fixed-label класс для жесткой фиксации длины метки (заголовка поля), ширина - 200px
fixed-label-small класс для жесткой фиксации длины метки (заголовка поля), ширина - 150px
fixed-label-mini класс для жесткой фиксации длины метки (заголовка поля), ширина - 100px
free-label сбрасывает изначальную ширину, принимает значение по длине текста
+

Размеры шрифтов

+ + + + + + + + + + + + + + + + + + + + + +
Название класса css Описание
font-large 1.8em
font-medium 1.4em
font-small 0.9em
font-mini 0.8em
+

Жирный шрифт

+ + + + + + + + + + + + +
Название класса css Описание
font-bold для текста
+

Компонент Text

+ + + + + + + + + + + + + + + + + + + + + +
Название класса css Описание
title класс для заголовка страницы. * При необходимости использования title на группу элементов, применять ко всему контейнеру * Применять title при наличии заголовка у объекта «fieldset».
blue (совместно с title) Синий фон заголовка
text-blink Мигающий красный текст
text-blink -blue Мигающий синий текст
+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Текст.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Текст.html new file mode 100644 index 0000000..5e94c67 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Текст.html @@ -0,0 +1,146 @@ + + + + + + + + Web-BPM Docs – Текст + + + + + + +
+
+ + + +
+
+

Текст

+

Назначение

+

Текст - это компонента, которая используется для отображения статического текста на форме страницы без возможности прямого ввода значения в поле на форме приложения.

+

В зависимости от настройки свойств, включенных по умолчанию в состав компоненты, компонента Текст может использоваться для:

+
    + +
  1. Для сохранения информации в базу данных и отображения значения из базы данных (в данном случае, функция компоненты Текст. Сохранение значения должна быть включена)
  2. +
  3. Для отображения текста, который является константой, определённой в логике приложения(в данном случае, функция компоненты Текст. Сохранение значения должна быть выключена или удалена через настройки функции по кнопке) (рис.3)
  4. +
+

Компонента Текст находится в разделе Компоненты - Поля - Текст.

+

Свойства

+

Компонента имеет набор общих свойств. Ниже отображены свойства, специфичные только для данной компоненты.

+ + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Надпись позволяет задать наименование поля, которое будет отображаться на странице пример возможного значения: Наименование организации
Значение позволяет задать значение поля по умолчанию пример возможного значения: ООО “Форт”
+

Свойство Текст. Сохранение значения

+

+

В случае, если значение в поле Текст необходимо сохранить или подгрузить из базы данных, указывается поле таблицы базы данных, куда будет сохраняться и откуда будет подгружаться введенное значение. Для выбора доступны колонки без ограничения по типу данных (например, если для Текстового поля можно выбрать только колонки имеющий строковый тип данных, то для компоненты Текст таких ограничений нет).

+

В случае, если значение поля Текст не требуется сохранять или подгружать из базы данных, то данное свойство удаляется (или отключается). Данный вариант может быть необходим, когда поле используется для отображения текста, являющегося константой, определённой в логике приложения, например, Заголовок страницы.

+

+

Свойство Заполнить значением из переменной процесса

+

Заполнить значением из переменной процесса

+

Свойство Заполнить значением по умолчанию

+

Заполнить значением по умолчанию

+

Заполнить значением из переменной процесса

+

Заполнить значением из переменной процесса

+

Сохранить значение в переменную процесса любого типа

+

Сохранить значение в переменную процесса любого типа

+

Определить права текущего пользователя

+

Определить права текущего пользователя

+

### Определить роли текущего пользователя

+

Определить роли текущего пользователя

+

### Добавить строку к значению в текущем поле

+

Добавить строку к значению в текущем поле

+

### Склеить несколько значений

+

Склеить несколько значений

+

Методические рекомендации по применению

+

Пошаговые инструкции по применению компонента в типовых задачах Вы можете найти в разделах:

+ +

Часто задаваемые вопросы

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Вопрос Ответ
Чем отличается компонента Текстовое поле от компоненты Текст? Компонента Текст используется для отображения статического текста на странице без возможности ввода значения в поле на форме,текстовое полеиспользуется для отображения и ввода текста.
Для решения каких задач чаще всего используется компонента Текст? Компонента Текст чаще всего используется для добавления Заголовка на странице или отображения каких-то текстовых примечаний для пользователя на странице без возможности их редактирования пользователем.
Какие действия необходимо выполнить для того, чтобы значение указанное в настройке поля Текст отобразилось как заголовок на странице (т.е. отличалось от других текстовых полей на странице)? Для того, чтобы элемент Текст отображался как заголовок на странице к нему необходимо применить CSS-класс “title”.
Как задать определенный цвет шрифта для значения, содержащегося в поле Текст? Для этого необходимо применить соответствующий необходимому цвету CSS-класс в настройке компоненты, например, “font-color-pink.”
Как задать определенный размер шрифта для значения, содержащегося в поле Текст? Для этого необходимо применить соответствующий необходимому размеру шрифта CSS-класс в настройке компоненты, например, "font-small.
Все ли свойства компоненты обязательны для заполнения? Нет. Свойства компоненты определяются в зависимости от решаемой задачи.
Возникнет ли ошибка при запуске приложения, если оставить незаполненным свойство Текст. Сохранение значения? Да. В случае, если функция “Текст. Сохранения значения” включена у элемента и не заполнены ее параметры, то при валидации проекта возникнет ошибка. Если по условию задачи данное поле не должно подгружаться и сохраняться в базу данных, данную функцию в компоненте необходимо либо отключить либо удалить.
Если удалить базовые функции, которые включены в компоненту по умолчанию, например, “Заполнить значением по умолчанию” можно ли будет вновь их добавить? Да. Если удалить какую-то базовую функцию компоненты, то по кнопке “Добавить функцию” она будет доступна для выбора.
Если в поле Текст невозможно ввести значение на странице приложения, то возможно ли выставить в него значение по определенному действию на странице? Для того, чтобы выставить в поле Текст определенное значение по событию (действию) на странице, необходимо использовать компоненту “Обработка событий”, настроив ее условия следующий образом: в условии “Когда” мы указываем событие, по которому должно происходить определение значения в поле, например нажатие на кнопку на странице или изменение значения в другом поле; в условии “Если” указываем дополнительные условия, при которых должно выполниться действие, например, значение в поле указанном в условии “Когда” - не пусто; в условии “Тогда” указываем поле Текст, которому необходимо задать значение, выбираем метод “Задать значение” во вкладке “Текст. Основные параметры” и указываем необходимое значение в зависимости от поставленной задачи, в условии “Иначе” также можно прописать ряд в действий в зависимости от поставленной задачи.
+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Текстовое_поле.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Текстовое_поле.html new file mode 100644 index 0000000..514bbe3 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Текстовое_поле.html @@ -0,0 +1,231 @@ + + + + + + + + Web-BPM Docs – Текстовое поле + + + + + + +
+
+ + + +
+
+

Текстовое поле

+

Назначение

+

Текстовое поле - это компонента, которая используется для отображения и ввода однострочного текста на форме страницы.

+

В зависимости от настройкисвойств, включенных по умолчанию в состав компоненты, компонента Текстовое поле может использоваться для:

+
    + +
  1. Для сохранения введенной информации в базу данных и отображения значения из базы данных (в данном случае, функция компоненты Текстовое поле. Сохранение значения должна быть включена) (рис.2)
  2. +
  3. Для отображения текста, который был введен пользователем приложения или является константой, определённой в логике приложения (в данном случае, функция компоненты Текстовое поле. Сохранение значения должна быть выключена или удалена через настройки функции по кнопке) (рис.3)
  4. +
+

Компонента Текстовое поле находится в разделе Компоненты - Поля - Текстовое поле.

+

Свойства

+

Компонента имеет набор общих свойств. Ниже отображены свойства, специфичные только для данной компоненты.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Подсказка позволяет создать подсказку, расположенную внутри элемента пример возможного значения: Введите название организации
Надпись позволяет задать наименование поля, которое будет отображаться на странице пример возможного значения: Наименование организации
Значение позволяет задать значение поля по умолчанию пример возможного значения: ООО “Форт”
Максимальная длина задаёт максимальное количество вводимых символов в поле пример возможного значения: 10
Минимальная длина (Min length) задаёт минимальное количество вводимых символов в поле
allowMoreSymbols при true позволяет пользователю ввести больше символов, чем значение максимальной длины, но при этом поле станет невалидным и будет отображено сообщение об ошибке maxLengthErrorMsg (см. документацию) логическое значение (true, false)
Оперировать немаскированным значением указывает системе порядок обработки символов маски при сохранении значения поля в базу данных +
    +
  • значение не определено - по умолчанию
  • +
  • активно - сохранять без форматирования маской
  • +
  • пустое - сохранять с форматированием маской
Значение, отформатированное маской в поле ввода как “+7~(917)-922-33-44”, может быть сохранено в поле таблицы базы данных как “+7~(917)-922-33-44” (если флажок снят) или как “9179223344” (если флажок выставлен)
Маска позволяет задать маску, в соответствии с которой пользователь будет осуществлять ввод текста выставление маски не может обеспечить выполнение требования обязательности ввода, маска только внешне отфильтровывает и форматирует последовательность вводимых пользователем символов заранее заданным образом (например, отобразит тел. номер в виде “+ 7 (917) - 101 - 02 - 03” вместо “8917010203” или не допустит такого ввода “89170102йЯ”). Для блокирования сохранения записи с пустым значением поля и обеспечения контроля обязательности ввода используйте свойство “Обязательность” Примеры масок: +
    +
  • A (буква, латинская, регистр не имеет значения) в маске - позволит ввести в поле одну любую букву любого алфавита
  • +
  • Б (буква, русская, в верхнем регистре) в маске - позволит ввести в поле одну любую букву русского алфавита
  • +
  • 9 (цифра) в маске - позволит ввести в поле одну любую цифру
  • +
  • * (символ) в маске - позволит ввести в поле одну любую цифру или букву
  • +
  • R (буква, латинская, в верхнем регистре) в маске - позволит ввести в поле одну римскую цифру
  • +
  • [ ] (внутри квадратных скобок) в маске - позволит ввести или опустить при вводе в поле один или несколько необязательных символов (букву, цифру), например 999[9]; под эту маску подходит как 123, так и 1234 Например, необходимо задать форматирование ввода маской для значения Й456QЬ. В данном случае маска может выглядеть следующим образом: Б999АА, где А - латинская буква.
Регистр позволяет задать вид регистра вводимого текста: +
    +
  • в верхнем регистре - заглавные (прописные) буквы
  • +
  • в нижнем регистре - строчные (маленькие) буквы
  • +
  • первая буква каждого слова заглавная
  • +
  • только первая буква текста заглавная, остальные строчные
  • +
  • первая буква текста заглавная
Тип позволяет задать тип вводимого текста: +
    +
  • обычный текст
  • +
  • пароль (заполнитель - звездочки)
  • +
  • электронная почта
  • +
  • URL
Регулярное выражение или Pattern позволяет задать проверку вводимого текста с помощью регулярных выражений поля, для которых не выполняются условия заданных регулярных выражений, при сохранении записи подсвечиваются красным оттенком и операция отменяется. Некоторые типовые регулярные выражения: +
    +
  • \d [0-9] - одна цифра от 0 до 9
  • +
  • \D [^0-9] - любой символ кроме цифры
  • +
  • \s - пробел
  • +
  • [A-Z] - только заглавная латинская буква
  • +
  • [A-Za-z] - только латинская буква в любом регистре
  • +
  • [А-Яа-яЁё] - только русская буква в любом регистре
  • +
  • [A-Za-zА-Яа-яЁё] - любая буква русского и латинского алфавита
  • +
  • [0-9]{3} - три цифры
+
    +
  • [A-Za-z]{6,}- не менее шести латинских букв
  • +
  • [0-9]{,3} - не более трёх цифр
  • +
  • [0-9]{5,10} - от пяти до десяти цифр
  • +
  • ^[a-zA-Z]+$ - любое слово на латинице
  • +
  • ^[А-Яа-яЁё\s]+$ - любое слово на русском включая пробелы
  • +
  • ^[ 0-9]+$ - любое число
чтобы ограничить возможность ввода и сохранения текста латиницей, можно использовать регулярное выражение ^[А-Яа-яЁё\s]+$
patterErrorMsg, maxLengthErrorMsg, minLengthErrorMsg, emailErrorMsg, urlErrorMsg позволяют задать пользовательское сообщение о соответствующих ошибках валидации строка
+

Свойство Текстовое поле. Сохранение значения

+

+

В случае, если значение в текстовом поле необходимо сохранить или подгрузить из базы данных, указывается поле таблицы базы данных, куда будет сохраняться и откуда будет подгружаться введенное значение. Для выбора доступны только колонки имеющий строковый тип в базе данных.В случае, если значение текстового поля не требуется сохранять или подгружать из базы данных, то данное свойство удаляется (или отключается). Данный вариант может быть необходим, когда текстовое поле используется дляотображения текста, который был введен пользователем приложения или является константой, определённой в логике приложения.

+

+

Свойство Заполнить значением из переменной процесса

+

Заполнить значением из переменной процесса

+

Базовые функции

+

Заполнить значением по умолчанию

+

Заполнить значением из переменной процесса

+

Дополнительные функции

+

В ходе настройки свойств компоненты (заданных по умолчанию) может оказаться недостаточно для выполнения поставленной задачи и получения необходимого результата.

+

Для каждой компоненты предусмотрен перечень функций, расширяющих её базовую функциональность, которые можно добавить нажатием кнопки Добавить скрипт

+

Вследствие технических особенностей реализации функций (функции, которые выполняются удаленно на сервере приложений, функции, которые выполняются в браузере пользователя), они имеют разные иконки, но это никак не влияет на их функциональность или предпочтительность использования.

+

Настройка

+

Для добавления функции в логику работы компоненты необходимо нажать на кнопку Добавить скрипт - Выбрать из списка функцию, если она предусмотрена для использования с компонентой Указать переменную, в которую будет сохраняться значение из поля.

+

+

+

### Определить права текущего пользователя

+

Определить права текущего пользователя

+

### Определить роли текущего пользователя

+

Определить роли текущего пользователя

+

Добавить строку к значению в текущем поле

+

Добавить строку к значению в текущем поле

+

Склеить несколько значений

+

Склеить несколько значений

+

Методические рекомендации по применению

+

Пошаговые инструкции по применению компонента в типовых задачах Вы можете найти в разделах:

+ +

Часто задаваемые вопросы

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Вопрос Ответ
Чем отличается компонента Текстовое поле от компоненты Текст? Компонента текст используются для отображения статического текста на странице, текстовое поле используется для отображения и ввода текста.
Все ли свойства компоненты обязательны для заполнения? Нет. Свойства компоненты определяются в зависимости от решаемой задачи.
Возникнет ли ошибка при запуске приложения, если оставить незаполненным свойство Текстовое поле. Сохранение значения? Да. В случае, если функция “Текстовое поле. Сохранения значения” включена у элемента и не заполнены ее параметры, то при валидации проекта возникнет ошибка. Если по условию задачи данное поле не должно подгружаться и сохраняться в базу данных, данную функцию в компоненте необходимо либо отключить либо удалить.
Чем отличается регулярное выражение от маски? Маска даёт простое и наглядное представление правила ввода с подстановкой дополнительных символов, а регулярное выражение позволяет задать более сложный шаблон с дополнительными условиями. Необходимо отметить, что поля, для которых не выполняются условия заданных регулярных выражений, при сохранении записи подсвечиваются красным оттенком и операция отменяется.
Если удалить базовые функции, которые включены в компоненту по умолчанию, например, “Заполнить значением по умолчанию” можно ли будет вновь их добавить? Да. Если удалить какую-то базовую функцию компоненты, то по кнопке “Добавить функцию” она будет доступна для выбора.
Все ли типы переменных можно записать в текстовое поле? Нет. Вслучае с текстовым полем, используется строковый тип переменной (string).
Какую функцию необходимо добавить, чтобы сохранить значение из текстовогополя в переменную процесса? Для того чтобы сохранить значение из текстового поля в переменную процесса необходимо по кнопке “Добавить функцию” выбрать в списке функцию “Сохранить значение в переменную процесса любого типа”, выбрав в настройке добавленной функции необходимую переменную строкового типа (string).
Обязательно ли наличие Формы на странице для сохранения значения из текстового поля в переменную процесса? Нет, наличие Формы на странице необязательно для сохранения значения из текстового поля в переменную процесса. При переходе по процессу со страницы, где расположено текстовое поле, например, по Кнопке навигации, осуществится сохранение значения в переменную процесса при условии, что на текстовое поле добавлена функция “Сохранить значение в переменную процесса любого типа” и указана необходимая переменная процесса.
+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Файл.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Файл.html new file mode 100644 index 0000000..f5d1c5d --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Файл.html @@ -0,0 +1,172 @@ + + + + + + + + Web-BPM Docs – Файл + + + + + + +
+
+ + + +
+
+

Файл

+

Файл - это компонента, которая сочетает в себе функциональность сохранения файлов-вложений в базу данных в кодировке base64, функциональность отображения preview уже сохраненных файлов и функциональность скачивания сохраненных в базу данных файлов-вложений на компьютер пользователя. Указание файлов, подлежащих сохранению в базу данных, осуществляется через перетягивание файлов мышью из других приложений (drag-and-drop), либо явным указанием набора файлов через системный диалог операционной системы. Режим предпросмотра включен всегда - если файлы существуют, и для них операционная система может отобразить содержимое - то компонента отображает контент в уменьшенном масштабе. Для скачивания ранее сохраненных файлов достаточно кликнуть мышью по наименованию файла, являющемуся гиперссылкой на скачивание:

+

Компонента Файл находится в разделе Компоненты - Поля - Файл.

+

Свойства

+

Компонента имеет набор общих свойств. Ниже отображены свойства, специфичные только для данной компоненты.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Подсказка позволяет создать подсказку, расположенную внутри элемента пример возможного значения: Выберите файл для загрузки
Надпись позволяет задать наименование поля, которое будет отображаться на странице пример возможного значения: Файл
Максимальный размер каждого файла позволяет задать максимально разрешенный размер для каждого из загружаемых файлов, измеряется мегабайтами пример возможного значения: 10
Допустимо удаление файла позволяет настроить разрешение на удаление файла
Список доступных типов файлов позволяет сформировать список разрешенных для загрузки расширений файлов, при пустом списке можно добавлять файлы любых расширений пример возможного значения: doc
File names
+

Свойство Загрузки файлов: Настройка

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Ссылка на главную сущность графа основной формы осуществляется настройка таблиц и связей между ними для сохранения файлов-вложений.
граф сущностей настраивается в соответствии с п. Настройка Графа сущностей. Указывается только та таблица, в которую будут сохраняться вложения.
допустимое максимальное количество файлов в компоненте позволяет задать количество файлов, которые допустимо загрузить.
колонка главной сущности графа основной формы(а не графа сущности текущей компоненты) - позволяет задать наименование таблицы и колонки, указанной как главная в графе сущностей родительской компоненты Форма.
колонка с именем файла позволяет задать наименование таблицы и колонки с именем файла.
колонка с содержимым файла позволяет задать наименование таблицы и колонки для сохранения содержимого файла в base64 кодировке.
+

+

В показанной конфигурации в основную таблицу базы данных (Проекты) сохраняется информация об основным признаках проекта, т.е в новой создаваемой строке о проекте присваивается новый идентификатор, а в зависимую таблицу (Вложенные документы) со ссылкой на этот идентификатор создается 10 записей, в каждой из которых сохраняется по 1 файл вложений.

+

Таким образом, между 2 таблицами создается связь один-ко-многим с внешним ключом из зависимой таблицы вложений в основную таблицу проектов.

+

+

Для случая, когда количество вложений строго ограничено 1 (одним) файлом, параметр:

+

допустимое максимальное количество файлов в компоненте - принимает значение “1”,

+

а параметр:

+

колонка главной сущности графа основной формы - исключается из интерфейса настройки компоненты.

+

+

В показанной конфигурации в основную таблицу базы данных (Проекты) сохраняется информация как об основных признаках проекта, так и сам файл вложений.

+

Таким образом, сохранение 1 файла-вложения происходит в ту же таблицу, что и другие основные параметры сущности “проект”, без использования зависимой таблицы и без внешних ключей между сущностью “проект” и файлом-вложением .

+

Заполнить значением по умолчанию

+

Заполнить значением по умолчанию

+

Дополнительные функции

+

В ходе настройки свойств компоненты (заданных по умолчанию) может оказаться недостаточно для выполнения поставленной задачи и получения необходимого результата.

+

Для каждой компоненты предусмотрен перечень функций, расширяющих её базовую функциональность, которые можно добавить нажатием кнопки Добавить скрипт.

+

Вследствие технических особенностей реализации скриптов (скрипты выполняются удаленно на сервере приложений, скрипты выполняются в браузере пользователя), они имеют разные иконки, но это никак не влияет на их функциональность или предпочтительность использования.

+

Определить права текущего пользователя

+

Определить права текущего пользователя

+

Определить роли текущего пользователя

+

Определить роли текущего пользователя

+

Методические рекомендации по применению

+

Пошаговые инструкции по применению компонента в типовых задачах Вы можете найти в разделах:

+ +

Часто задаваемые вопросы

+ + + + + + + + + + + + + + + + + + +
Вопрос Ответ
Все настроено верно, но компонента по-прежнему не сохраняет вложения в базу данных ? Проверьте свойство компоненты
Нужно ли включать (дублировать) в граф сущности компоненты таблицу, являющуюся главной сущностью всей компоненты Form ? Ответ зависит от ситуации ,в которой используется компонента Файл. Когда для одной основной сущности всей страницы требуется сохранить несколько файлов вложений (это большинство случаев использования компоненты) в графе сущностей компоненты Файл указывается только таблица, в которую происходит непосредственное сохранение файлов. Взаимосвязь с таблицей, представляющей главную сущность родительской компоненты Форма, осуществляется не стрелками в графе сущностей компоненты Файл, а при настройке параметров колонка главной сущности графа основной формы,колонка с именем файла,колонка с содержимым файла в интерфейсе Диспетчера компоненты Файл. Когда для одной основной сущности всей страницы требуется сохранить единственный файл вложений (редкий вариант) в графе сущностей компоненты Файлуказывается та же самая таблица, которая указана в качестве главной сущности родительской компоненты Форма.
Где в иерархии страницы следует располагать компоненту? Поскольку она уже имеет свою структуру сущности - должна ли она обязательно находиться внутри родительской компоненты Form всей страницы? Да, При любом кейсе использования компоненты Файл, эта она должна быть дочерней по отношению к компоненте Форма всей страницы и располагаться внутри ее (компоненты Форма) контейнера.
+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Фильтрация_источника_данных.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Фильтрация_источника_данных.html new file mode 100644 index 0000000..887fe11 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Фильтрация_источника_данных.html @@ -0,0 +1,105 @@ + + + + + + + + Web-BPM Docs – Фильтрация источника данных одного из полей с подбором значения в зависимости от выбранного значения в другом поле с подбором значения + + + + + + +
+
+ + + +
+
+

Фильтрация источника данных одного из полей с подбором значения в зависимости от выбранного значения в другом поле с подбором значения

+

Дано: 3 Autocomplete поля: Страна, область и город. Необходимо организовать последовательное заполнение этих полей.

+

Проблема: Если просто использовать 3 Autocomplete поля, без настройки,пользователь сможет выбрать несуществующую цепочку, к примеру: Германия - Татарстан - Пекин
+Нужно, чтобы в следующем уровне можно было выбирать только дочерние значения родительского уровня. В России можно выбирать только российские населенные пункты и т.д.

+

Пример настройки

+

На страницу добавлены нужные компоненты:

+
    + +
  1. Настроить Autocomplete. Autocomplete области и города сделать неактивными (Enabled = false), для того, чтобы пользователь заполнял поля последовательно.
  2. +
  3. Задать свойство filter column
    +для Autocomplete области фильтруем по странам, для города - по областям. Для Autocomplete страны не задаем.
  4. +
  5. + +

    Настраиваем ActionController’ы:
    +Настроем ActionController, который отвечает за фильтрацию области по стране. Настройка выглядит следующим образом:

    +
  6. +
+

ЕСЛИ Autocomplete страны был заполнен,

+

ТОГДА установить фильтр дляAutocomplete области (метод setFilter) по значению изAutocomplete страны.

+

А также сделать активным(Enabled = true)Autocomplete области.

+

ИНАЧЕ очистить фильтр используя метод resetFilter

+

исделать неактивным (Enabled = false) Autocomplete области.

+

5. Аналогично настраивается второйAutocomplete.

+

Фильтрация может задаваться 2 способами:

+
    + +
  1. C использованием метода getValue :
  2. +
+

Autocomplete_1:

+

Autocomplete_2:

+

Используется метод getValue:

+
    + +
  1. C помощью метода getBusinessId:
  2. +
+

Autocomplete_1:

+

Autocomplete_2:

+

Используется метод getBusinessId:

+ +
+
+

Attachments:

+
+ + +
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Фильтрация_источника_данных_одного_из_полей_с_подбором_значения_в_зависимости_от_выбранного_значения_в_другом_поле_с_подбором_значения.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Фильтрация_источника_данных_одного_из_полей_с_подбором_значения_в_зависимости_от_выбранного_значения_в_другом_поле_с_подбором_значения.html new file mode 100644 index 0000000..6588db9 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Фильтрация_источника_данных_одного_из_полей_с_подбором_значения_в_зависимости_от_выбранного_значения_в_другом_поле_с_подбором_значения.html @@ -0,0 +1,105 @@ + + + + + + + + Web-BPM Docs – Фильтрация источника данных одного из полей с подбором значения в зависимости от выбранного значения в другом поле с подбором значения + + + + + + +
+
+ + + +
+
+

Фильтрация источника данных одного из полей с подбором значения в зависимости от выбранного значения в другом поле с подбором значения

+

Дано: 3 Autocomplete поля: Страна, область и город. Необходимо организовать последовательное заполнение этих полей.

+

Проблема: Если просто использовать 3 Autocomplete поля, без настройки,пользователь сможет выбрать несуществующую цепочку, к примеру: Германия - Татарстан - Пекин
+Нужно, чтобы в следующем уровне можно было выбирать только дочерние значения родительского уровня. В России можно выбирать только российские населенные пункты и т.д.

+

Пример настройки

+

На страницу добавлены нужные компоненты:

+
    + +
  1. Настроить Autocomplete. Autocomplete области и города сделать неактивными (Enabled = false), для того, чтобы пользователь заполнял поля последовательно.
  2. +
  3. Задать свойство filter column
    +для Autocomplete области фильтруем по странам, для города - по областям. Для Autocomplete страны не задаем.
  4. +
  5. + +

    Настраиваем ActionController’ы:
    +Настроем ActionController, который отвечает за фильтрацию области по стране. Настройка выглядит следующим образом:

    +
  6. +
+

ЕСЛИ Autocomplete страны был заполнен,

+

ТОГДА установить фильтр дляAutocomplete области (метод setFilter) по значению изAutocomplete страны.

+

А также сделать активным(Enabled = true)Autocomplete области.

+

ИНАЧЕ очистить фильтр используя метод resetFilter

+

исделать неактивным (Enabled = false) Autocomplete области.

+

5. Аналогично настраивается второйAutocomplete.

+

Фильтрация может задаваться 2 способами:

+
    + +
  1. C использованием метода getValue :
  2. +
+

Autocomplete_1:

+

Autocomplete_2:

+

Используется метод getValue:

+
    + +
  1. C помощью метода getBusinessId:
  2. +
+

Autocomplete_1:

+

Autocomplete_2:

+

Используется метод getBusinessId:

+ +
+
+

Attachments:

+
+ + +
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Флаг.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Флаг.html new file mode 100644 index 0000000..d2fabde --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Флаг.html @@ -0,0 +1,138 @@ + + + + + + + + Web-BPM Docs – Флаг + + + + + + +
+
+ + + +
+
+

Флаг

+

Назначение

+

Флаг - это компонента, которая используется для проставления отметок в виде “флажков - галочек” в группе из нескольких доступных пользователю вариантов выбора значений. Отличается от компоненты Переключатель тем, что предоставляет выбор сразу нескольких значений вместо одного из альтернативных. При одиночном использовании (не в составе группы) может использоваться как включатель/выключатель какой-либо функциональности, разработанной аналитиком на web-странице. В этом случае используется совместно с компонентой Обработка Событий, которая управляет реакцией системы на изменение значения компоненты Флаг.

+

В зависимости от настройки свойств, включенных по умолчанию в состав компоненты, компонента Флаг может использоваться для:

+
    + +
  1. Для сохранения введеннойинформации в базу данных и отображения значения из базы данных(в данном случае, функция компоненты Флаг. Сохранение значения должна быть включена)
  2. +
  3. Для отображения значений,которые были введены пользователем приложенияили являются константой, определённой в логике приложения (в данном случае, функция компоненты Дата. Сохранение значения должна быть выключена или удалена через настройки функции по кнопке)
  4. +
+

Компонента Флаг (без возможности сохранения) находится в разделе Компоненты - Поля - Флаг

+

Свойства

+

Компонента имеет набор общих свойств. Ниже отображены свойства, специфичные только для данной компоненты.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Подсказка позволяет создать подсказку, расположенную внутри элемента данное свойство не применимо с логикой отображения поля на странице приложения
Надпись позволяет задать наименование поля, которое будет отображаться на странице пример возможного значения: Пример поля Флаг
Значение позволяет задать значение по умолчанию, которое примет компонента при открытии страницы в приложении, значение типа Boolean (TRUE, FALSE, UNDEFINED) Истина (TRUE), Ложь (FALSE), Не определено (UNDEFINED) - значение по умолчанию
Allow null позволяет регулировать возможность выбора (отображения) значения “Не определено (UNDEFINED)” при работе с полем Флаг Активно - позволяет выбирать значение “Не определено (UNDEFINED)” пользователем при работе с полем на ряду со значениямиИстина (TRUE) иЛожь (FALSE), Не активно - исключает возможность выбора значения “Не определено (UNDEFINED)” пользователем при работе с полем, т.е. к выбору доступны только два значения Истина (TRUE) и Ложь (FALSE)- значение по умолчанию
+

Свойство Флаг.Сохранение значения

+

+

В случае, если значение в поле Флаг необходимо сохранить или подгрузить из базы данных, указывается поле таблицы базы данных, куда будет сохраняться и откуда будет подгружаться введенное значение. Для выбора доступны только колонки имеющие логический тип в базе данных - BOOLEAN. В случае, если значение поля Флаг не требуется сохранять или подгружать из базы данных, то данное свойство удаляется (или отключается). Данный вариант может быть необходим, когда поле используется дляотображения значения, которое было введено пользователем приложения или является константой, определённой в логике приложения.

+

+

Базовые функции

+

Заполнить значением по умолчанию

+

Заполнить значением из переменной процесса

+

Дополнительные функции

+

В ходе настройки свойств компоненты (заданных по умолчанию) может оказаться недостаточно для выполнения поставленной задачи и получения необходимого результата.

+

Для каждой компоненты предусмотрен перечень функций, расширяющих её базовую функциональность, которые можно добавить нажатием кнопки Добавить скрипт.

+

Вследствие технических особенностей реализации функций (функции, которые выполняются удаленно на сервере приложений, функции, которые выполняются в браузере пользователя), они имеют разные иконки, но это никак не влияет на их функциональность или предпочтительность использования.

+

сохранить значение в переменную процесса любого типа

+

Методические рекомендации по применению

+

Пошаговые инструкции по применению компонента в типовых задачах Вы можете найти в разделах:

+ +

Часто задаваемые вопросы

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Вопрос Ответ
Чем отличается компоненты Флаг и Переключатель? в компоненте Переключатель в один и тот же момент времени может быть выбрано только единственное значение из нескольких возможных, тогда как компонент Флаг предоставляет возможность одновременно выбрать несколько вариантов из предложенных. При этом, поскольку компонента Переключатель предоставляет выбор только одного варианта, то в базу данных сохраняется разные значения, но в одну колонку для всех вариантов. Для компоненты Флаг для каждого варианта должна быть предусмотрена своя колонка.
Чем отличается компоненты Флаг и Переключатель? в компоненте Переключатель в один и тот же момент времени может быть выбрано только единственное значение из нескольких возможных, тогда как компонент Флаг предоставляет возможность одновременно выбрать несколько вариантов из предложенных. При этом, поскольку компонента Переключатель предоставляет выбор только одного варианта, то в базу данных сохраняется разные значения, но в одну колонку для всех вариантов . Для компоненты Флаг для каждого варианта должна быть предусмотрена своя колонка.
Сохраняет ли в базу данных свои значения компонента Флаг? КомпонентаФлаг, для которой указана колонка для сохранения, обеспечивает и сохранение значения в базу данных, и чтение из нее. КомпонентаФлаг, без параметра “колонка для сохранения в БД” не сохраняет свое значение в базу данных. Но зато может использоваться для динамического управления интерфейсом страницы, на которой расположена. Пример такой настройки приведен в разделе методических рекомендаций.
Все ли свойства компоненты обязательны для заполнения? Нет.Свойства компоненты определяются в зависимости от решаемой задачи.
Можно ли расположить сам Флаг на странице с левой стороны от наименования поля? Да. Если на странице необходимо отображать сначала сам Флаг, а после Наименование этого поля, то необходимо использовать CSS-класс “check-invert”. После применения CSS-класса поле Флаг будет выглядеть следующим образом:(вместо стандартного отображения)
Если удалить базовые функции, которые включены в компоненту по умолчанию, например, “Заполнить значением по умолчанию” можно ли будет вновь их добавить? Да. Если удалить какую-то базовую функцию компоненты, то по кнопке “Добавить функцию” она будет доступна для выбора.
Возникнет ли ошибка при запуске приложения, если оставить незаполненным свойство Флаг. Сохранение значения? Да.В случае, если функция “Флаг. Сохранения значения” включена у элемента и не заполнены ее параметры, то при валидации проекта возникнет ошибка. Если по условию задачи данное поле не должно подгружаться и сохраняться в базу данных, данную функцию в компоненте необходимо либо отключить либо удалить.
+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Числовое_поле.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Числовое_поле.html new file mode 100644 index 0000000..0dcfa60 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/fields/Числовое_поле.html @@ -0,0 +1,165 @@ + + + + + + + + Web-BPM Docs – Числовое поле + + + + + + +
+
+ + + +
+
+

Числовое поле

+

Назначение

+

Числовое поле - это компонента, которая используется для отображения и ввода чисел на форме страницы.

+

В зависимости от настройки свойств, включенных по умолчанию в состав компоненты, компонента Числовое поле может использоваться для:

+
    + +
  1. Для сохранения введенной информации в базу данных и отображения значения из базы данных (в данном случае, функция компоненты Числовое поле. Сохранение значения должна быть включена)
  2. +
  3. Для отображения числа, которые было введено пользователем приложения или является константой, определённой в логике приложения(в данном случае, функция компоненты Числовое поле. Сохранение значения должна быть выключена или удалена через настройки функции по кнопке)
  4. +
+

Компонента Числовое поле находится в разделе Компоненты - Поля - Числовое поле.

+

Свойства

+

Компонента имеет набор общих свойств. Ниже отображены свойства, специфичные только для данной компоненты.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Подсказка позволяет создать подсказку, расположенную внутри элемента пример возможного значения: Введите год
Надпись позволяет задать наименование поля, которое будет отображаться на странице пример возможного значения: Год
Значение по умолчанию позволяет задать значение поля по умолчанию, которое будет отображаться на странице пример возможного значения: 100
Минимальное возможное значение позволяет задать минимально возможное значение числа, меньше которого пользователь ввести не сможет пример возможного значения: 0
Максимальное возможное значение позволяет задать максимально возможное значение числа, больше которого пользователь ввести не сможет пример возможного значения: 2999
Шаг увеличения позволяет задать шаг увеличения значения числа пример возможного значения: 1
maxValueErrorMsg, minValueErrorMsg, numberErrorMsg позволяют задать пользовательское сообщение о соответствующих ошибках валидации строка
+

Свойство Числового поля: Сохранение значения

+

+

В случае если значение в числовом поле необходимо сохранить или подгрузить из БД, указывается поле таблицы базы данных, куда будет сохраняться и откуда будет подгружаться введенное значение. Если же числовое поле не требуется сохранять в БД или подгружать из БД, то данное свойство удаляется. Данный вариант может быть необходим, когдачисловое поле используется для отображения текста,который был введен пользователем приложенияили является константой, определённой в логике приложения.

+

+

Базовые функции

+

Заполнить значением по умолчанию

+

Подгрузка данных по умолчанию

+

Заполнить значением из переменной процесса

+

Заполнить значением из переменной процесса

+

Дополнительные функции

+

В ходе настройки свойств компоненты (заданных по умолчанию) может оказаться недостаточно для выполнения поставленной задачи и получения необходимого результата.

+

Для каждой компоненты предусмотрен перечень функций, расширяющих её базовую функциональность, которые можно добавить нажатием кнопки Добавить скрипт.

+

Вследствие технических особенностей реализации функций (функции, которые выполняются удаленно на сервере приложений, функции, которые выполняются в браузере пользователя), они имеют разные иконки, но это никак не влияет на их функциональность или предпочтительность использования.

+

Определить права текущего пользователя

+

Определить права текущего пользователя

+

Определить роли текущего пользователя

+

Определить роли текущего пользователя

+

Включить вычисление математических операций

+

Включить вычисление математических операций

+

Включить конвертирование значений

+

TODO desribe function

+

Функция, которая не имеет настраиваемых аналитиком параметров, но будучи задействованной, позволяет осуществить преобразование значения в исходном компоненте из текущего типа (чаще всего, в компоненте Поле ввода с подбором значенияиз типа данных ANY) в целочисленный тип данных.

+

Она относится к той группе функций, чья функциональность применяетсяи может быть полезной не сразу после добавленияв исходную компоненту, а только при последующем использовании в компоненте “Обработка событий”, когда у исходной компоненты появляется нескольконовых доступных методов при конструировании алгоритма обработки событий на web-странице. Например, для такого паттерна обработки: ‘ЕСЛИ в компоненте Поле ввода с подбором значения выбрано (изменилось) значение, ТО в компоненту числовое поле вывести идентификатор(первичный ключ) этого значения’

+

+

Рис.1 Активация функции на компоненте Поле ввода с подбором значения

+

+

Рис.2 Числовое поле, в которое будем записывать идентификатор значения из компонента Поле ввода с подбором значения

+

+

Рис. 3 Пример алгоритма заполнения числового поля идентификатором значения, выбранного в поле с Постановщиком задачи, при условии расширения функциональности исходной компоненты Поле ввода с подбором значения функцией Сконвертировать значение в целочисленный тип; (появился новый метод Сконвертировать в число; у исходной компоненты)

+

+

Рис.4 Пример невозможности построения алгоритма из-за отсутствия необходимого метода Сконвертировать в число, вследствие удаления функции Сконвертировать значение в целочисленный тип из исходной компоненты Поле ввода с подбором значения Постановщик задачи (пропал метод Сконвертировать в число у исходной компоненты)

+

После запуска web-приложения (in runtime mode) выбираем в компоненте Список с поиском одно из значений (например, постановщика задачи с фамилией Дякин), после этого значение идентификатора (первичный ключ сотрудника по фамилии Дякин в справочнике) переносится в поле"Идентификатор постановщика", а в консоли браузера можно наблюдать сообщение о срабатывании компоненты Обработка событий, которое показывает выполненное функцией действие.

+

+

Рис 5.Выбираем Постановщика задачи

+

+

Рис.6 Функция заполняет числовое поле идентификатором

+

Сохранить значение в переменную процесса

+

Сохранить значение в переменную процесса любого типа

+

Методические рекомендации по применению

+

Пошаговые инструкции по применению компонента в типовых задачах Вы можете найти в разделах:

+ +

Часто задаваемые вопросы

+ + + + + + + + + + + + + + + + + + +
Вопрос Ответ
В каком случае используется числовое поле, а в каком текстовое? Использование того или иного компонента зависит от типа поля в базе данных, в которую предполагается сохранение данных. Например, если поле в базе данных текстовое (text, char и т.п.), то используется компонента - текстовое поле.
Можно ли в числовое поле вводить отрицательные числа? Да, можно.
Можно ли в числовое поле вводить нецелые числа? Да, например, 3,25.
+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/grids/ColumnNavigationRenderer.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/grids/ColumnNavigationRenderer.html new file mode 100644 index 0000000..c8349c3 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/grids/ColumnNavigationRenderer.html @@ -0,0 +1,70 @@ + + + + + + + + Web-BPM Docs – + + + + + + +
+
+ + + +
+
+

Скрипт для настройки переходов по ячейке в новых таблицах GridV2. Накидывается на колонку GridV2Column.

+

Правила настройки:

+
    + +
  1. + +

    В отличие от NavigateOnGridCellOrRow, в данном скрипте не нужно проставлять индексы колонок:

    +
      + +
    • Если необходимо использовать значение из данной колонки, а не идентификатор (isPk == false), то свойство useSelfValue выставляем в true.
    • +
    • Если нужно взять значение из другой, то накидываем соответствующую колонку в поле valueColumn.
    • +
    +
  2. +
  3. + +

    Все остальные свойства настраиваются по аналогии со свойствами в NavigateOnGridCellOrRow.

    +
  4. +

+

Примеры заполнения:

+

+

+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/grids/CustomSqlLoadDao-и-CustomSqlFormDao.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/grids/CustomSqlLoadDao-и-CustomSqlFormDao.html new file mode 100644 index 0000000..ee03936 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/grids/CustomSqlLoadDao-и-CustomSqlFormDao.html @@ -0,0 +1,53 @@ + + + + + + + + Web-BPM Docs – + + + + + + +
+
+ + + +
+
+

Расположение в студии: database\dao\CustomSqlLoadDao.java, dao\container\CustomSqlFormDao.java

+

Описание: скрипты добавляют возможность задания оптимизированного запроса в виде текста. Статичные параметры должны быть прописаны в тексте запроса, а динамические в тексте запроса должны быть определены знаком ‘?’ и заданы в переменных процесса (parameterVariables).

+

CustomSqlLoadDao необходим для загрузки данных таблицы и загрузки данных по умолчанию, а CustomSqlFormDao для загрузки данных формы.

+

CustomSqlLoadDao необходимо добавить вместо DefaultLoadDao, а CustomSqlFormDao необходимо добавить вместо FormDao.

+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/grids/GridServiceWithAggregationColumnsImpl-агрегация.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/grids/GridServiceWithAggregationColumnsImpl-агрегация.html new file mode 100644 index 0000000..6909631 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/grids/GridServiceWithAggregationColumnsImpl-агрегация.html @@ -0,0 +1,52 @@ + + + + + + + + Web-BPM Docs – Применение агрегирующих функций + + + + + + +
+
+ + + +
+
+

Применение агрегирующих функций

+

Для того чтобы применить агрегирующую функцию на колонку, необходимо во вкладке “Таблица. Подгрузка данных” выбрать скрипт GridServiceWithAggregationColumnsImpl и в нужной колонке выбрать агрегирующую функцию. В таком случае к запросу будет применен group by без агрегирующихся колонок.

+

! Примечание: если среди агрегирующихся колонок есть та, которая принадлежит главной сущности, то вместо id главной сущности каждой строке будет присвоен фиктивный идентификатор, соответсвующий его порядковому номеру в результирующей таблице.

+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/grids/GridV2.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/grids/GridV2.html new file mode 100644 index 0000000..26851cc --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/grids/GridV2.html @@ -0,0 +1,264 @@ + + + + + + + + Web-BPM Docs – GridV2 + + + + + + +
+
+ + + +
+
+

GridV2

+

Назначение

+

GridV2 - это компонента, которая используется для отображения информации из базы данных в табличном виде с возможностью сортировки записей в нужном порядке.

+

Свойства

+

Компонента имеет набор общих свойств.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Зависит от позволяет указать объект (родителя), по идентификатору которого будут отображаться сведения в текущей Таблице; задаётся в случае необходимости связать Таблицу с другой компонентой, например, Выпадающий список или Таблицей
multiselectable Выбор более 1 строки Да/Нет. По умолчанию ???
checkboxColumn ТУДУ: нельзя менять ширину колонки. Отобразить колонку с флажками для выбора значений. Свойство активно, если задано multiselectable = true Да/Нет
checkboxHeader Добавить выбор/снятие выбора для всех элементов. Свойство активно, если задано checkboxColumn == true Да/Нет
pinnedBottomRowLabel ТУДУ Подпись, которая видна, только если задать checkboxColumn=true ?!!!
rowClickSelectionType Выбор действия по нажатию левой кнопки мыши : SUPPRESS_SELECT_CLICK - запрет выбора строк, MULTI_SELECT_CLICK - выбор нескольких строк, SINGLE_SELECT_CLICK - выбор 1 строки. По умолчанию - SINGLE_SELECT_CLICK.
showRowNumber ТУДУ: нельзя менять ширину колонки. Отобразить колонку с порядковым номером строки Да/Нет. По умолчанию - нет
floatingFilter Добавить компоненты фильтрации в шапке Да/Нет. По умолчанию - нет
loadOnInit Загружать данные при инициализации Да/Нет. По умолчанию - да
pagination Показать элементы для переключения между страницами Да/Нет. По умолчанию - нет
fetchSize
rowModelType Тип загрузки данных INFINITE_LOAD - постраничная загрузка данных, CLIENT_SIDE - загрузка всех данных. По умолчанию - CLIENT_SIDE
+

Расширенные свойства

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
headerHeight высота заголовка
rowHeight высота строки
autoStretchColumns ТУДУ: AutoSizeColumn? Растянуть колонки по содержимому Да/нет
loadingOverlayType способ отображения процесса загрузки данных TEXT_OVERLAY - визуализация внутри грида, PROGRESS_BAR - блокирующий прогресс бар на странице
loadingOverlayMessage Сообщение при загрузке данных. Свойство видно если задано loadingOverlayType=TEXT_OVERLAY По умолчанию “Загрузка данных, пожалуйста, подождите.”
noRowsOverlayMessage Сообщение при отсутствии данных. Свойство видно если задано loadingOverlayType=TEXT_OVERLAY По умолчанию “Данные отсутствуют”
theme Визуализация таблицы (темы) BOOTSTRAP, BALHAM, BALHAM_DARK, BLUE, DARK, MATERIAL, FRESH
allowContextMenuWithControlKey Если нет, то при нажатии Ctrl и правой кнопки будет отображение контекстное меню браузера. Иначе всегда контекстное меню таблицы. Да/Нет.
saveColumnState Сохранять ли состояние колонок грида в локальный кэш браузера
gridConfigurationRowHeight Высота строки в диалоге конфигурации колонок грида
+

GridV2Column

+

Назначение

+

Для настройки колонок в GridV2 добавлена компонента GridV2Column, с помощью которой на клиентской части можно настраивать отображение и экспорт данных в колонке.

+

Свойства

+ + + + + + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Value Formatter Форматирование исходных данных для корректного отображения. При задании серверного и клиентского форматера возможно непредвиденное поведение. Форматирование будет применяться и на строку Итого. Принимает один из возможных форматеров (см. раздел Value Formatter ниже). По умолчанию выбран DefaultValueFormatter
File Export Formatter Форматирование исходных данных для корректного экспорта. Принимает один из возможных форматтеров (см. раздел Export Formatter ниже).
Renderer Позволяет изменить внешний вид GridV2Column (напр. цвет текста). Принимает один из возможных GridCellValueRenderer скриптов.
+

Value Formatter

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование форматера Назначение форматера Настраиваемые значения
DateFormatter Преобразует дату из стандартного (ISO) формата в формат DD.MM.YYYY -
DateTimeFormatter Преобразует дату из стандартного (ISO) формата в формат DD.MM.YYYY hh.mm.ss -
DefaultValueFormatter Предназначен для замены null-значений на настраиваемое noDataValue - значение, на которое будет заменяться null, по умолчанию настроено значение пустой строки
ReplaceValueFormatter Заменяет значения, указанные в Regex, на значения, указанные в New Value No Data Value - значение, на которое будет заменяться null, по умолчанию настроено значение пустой строки
Value To Replace - список пар значений Regex, New Value;
Regex - регулярное выражение, которое используется при поиске;
New Value - значение, на которое нужно заменить.
+

File Export Formatter

+ + + + + + + + + + + + + + + + + + +
Наименование форматера Назначение форматера Настраиваемые значения
DateExportFormatter Преобразует дату из стандартного (ISO) формата в формат DD.MM.YYYY -
DateTimeExportFormatter Преобразует дату из стандартного (ISO) формата в формат DD.MM.YYYY hh.mm.ss -
+

Renderer

+ + + + + + + + + + + + + + +
Наименование скрипта Назначение форматера Настраиваемые значения
ChangeColorOnColumnValueColumnCellRenderer Позволяет изменять цвет текущего GridV2Column на основе значения из любого GridV2Column на странице Grid Column - позволяет указать GridV2Column, который будет использоваться для сравнения значений. Color For Value - позволяет выбрать цвет для каждого значения, которому равен выбранный GridV2Column.
+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/grids/MaskCellValueFormatter.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/grids/MaskCellValueFormatter.html new file mode 100644 index 0000000..9f1e274 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/grids/MaskCellValueFormatter.html @@ -0,0 +1,51 @@ + + + + + + + + Web-BPM Docs – + + + + + + +
+
+ + + +
+
+

Описание: Форматер для колонок GridV2, задает маску для отображения колонки.

+

Использование: Выбрать скрипт MaskCellValueFormatter.ts на объект GridV2Column в valueFormatter. Поле mask - обязательное, для задачи маски. Поле regex - регулярное/не регулярное выражение. Поле casing - отвечает за регистр, может принимать значения null, “upper”, “lower” or “title”.

+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/grids/NavigateOnGridCellOrRow.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/grids/NavigateOnGridCellOrRow.html new file mode 100644 index 0000000..e66b991 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/grids/NavigateOnGridCellOrRow.html @@ -0,0 +1,98 @@ + + + + + + + + Web-BPM Docs – + + + + + + +
+
+ + + +
+
+

Скрипт для настройки переходов по строке (одинарный, двойной клик) и по ячейке: по процессу, по внешней/внутренней ссылке, к диалогу. Накидывается на таблицу.

+

Правила настройки:

+
    + +
  1. + +

    Для начала нужно выбрать направление перехода redirectionType: BPMN (по процессу), LINK (по ссылке) или DIALOG (к диалогу).

    +

    > Большинство остальных свойств настраиваются по аналогии со свойствами в старых скриптах > (SelectAndNavigateCellGridConfigurator, NavigateOnClickGridRow, NavigateOnDoubleClickGridRow).

    +
  2. +
  3. + +

    Вместо identityColumnIndex используется valueColumnIndex - индекс колонки, из которой берем значения (необязательно идентификатор).

    +
  4. +
  5. + +

    Для таблиц типа GridV2 добавлено свойство columnGroupIndex:

    +
      + +
    • Нумерация групп начинается с 1 с учетом индексов колонок, НЕ входящих в группы.
    • +
    • Если колонка принадлежит группе, то необходимо указать индекс columnGroupIndex. Индекс самой колонки начинается с 1 внутри группы.
    • +
    • Если колонка не принадлежит ни одной из групп, то свойство columnGroupIndex оставляем незаполненным (либо 0).
    • +
    +
  6. +
  7. + +

    Сегмент ссылки передается как resources:

    +
      + +
    • Образец внешней ссылки: https://www.wildberries.ru/catalog/${sku}/detail.aspx
    • +
    • Образец внутренней ссылки: products/ru.cg.webbpm.packages.base:resources:jar:3.177.2
    • +
    +
  8. +
  9. + +

    Для ссылок (baseRoute) добавлено свойство isAbsolute:

    +
      + +
    • Если ссылка внутренняя (isAbsolute == false), то для нее можно задать свойство openInNewTab. При true ссылка откроется в новой вкладке.
    • +
    • Если ссылка внешняя, она всегда будет открываться в новой вкладке.
    • +
    +
  10. +
  11. + +

    При настройке перехода к диалогу на свойство dialog необходимо накинуть соответствующий объект диалога.

    +
  12. +

+

Для того чтобы настроить переходы без индексов, необходимо использовать скрипты RowNavigationHandler и ColumnNavigationRenderer. Работают только для GridV2.


+

Пример заполнения:

+

+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/grids/RowNavigationHandler.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/grids/RowNavigationHandler.html new file mode 100644 index 0000000..48db3da --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/grids/RowNavigationHandler.html @@ -0,0 +1,69 @@ + + + + + + + + Web-BPM Docs – + + + + + + +
+
+ + + +
+
+

Скрипт для настройки переходов по строке в новых таблицах GridV2. Накидывается на таблицу GridV2.

+

Правила настройки:

+
    + +
  1. + +

    В отличие от NavigateOnGridCellOrRow, в данном скрипте не нужно проставлять индексы колонок:

    +
      + +
    • Если в навигации не используем идентификатор (isPk == false), то колонку, из которой берем значения, накидываем в поле valueColumn.
    • +
    +
  2. +
  3. + +

    Все остальные свойства настраиваются по аналогии со свойствами в NavigateOnGridCellOrRow.

    +
  4. +

+

Примеры заполнения:

+

+

+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/grids/SelectAndNavigateCellGridConfigurator.ts-(Колонки-с-навигацией).html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/grids/SelectAndNavigateCellGridConfigurator.ts-(Колонки-с-навигацией).html new file mode 100644 index 0000000..2e28bfb --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/grids/SelectAndNavigateCellGridConfigurator.ts-(Колонки-с-навигацией).html @@ -0,0 +1,58 @@ + + + + + + + + Web-BPM Docs – + + + + + + +
+
+ + + +
+
+

Скрипт предназанчен для отображения колонки(колонок) грида как ссылки для перехода на другую страницу. Скрипт доступен для добавления в любой грид.

+

Параметры:

+

variable - переменная процесса, в которую будет сохранено значение(идентификатор) из ячейки-ссылки, на которой было нажатие.

+

navigableColumns - массив элементов вида:

+

renderColumnIndex - индекс колонки, которую нужно отобразить как ссылку, нумерация начинается с 1.

+

isPk - сохранять в переменную ‘_variable’_ значение первичного ключа строки, в которой была нажата ячейка-ссылка. Если isPk=true, то в переменную ‘variable’ сохраняется первичный ключ строки, иначе надо указать индекс колонки(identityColumnIndex), из которой брать значение

+

identityColumnIndex - поле видно, если isPk = false, указывает на индекс колонки, из которой будет взято значение для сохранения в переменную
+‘variable’ . Нумерация начинается с 1

+

navigateTo - значение которое будет передано в переменную для навигации.

+
+
+
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/grids/index.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/grids/index.html new file mode 100644 index 0000000..36d30ab --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/grids/index.html @@ -0,0 +1,72 @@ + + + + + + + + Web-BPM Docs – Таблицы + + + + + + + +
+
+
+
+

© 2023 +Micord +

+
+

Built by Maven +

+
+
+ + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/grids/Древовидная_таблица.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/grids/Древовидная_таблица.html new file mode 100644 index 0000000..1071ef2 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/grids/Древовидная_таблица.html @@ -0,0 +1,182 @@ + + + + + + + + Web-BPM Docs – Древовидная таблица + + + + + + +
+
+ + + +
+
+

Древовидная таблица

+

Назначение

+

Древовидная таблица - это компонента, которая используется для отображения иерархических данных из таблицы базы данных в виде дерева (каждую запись, можно назвать узлом или ветвью, которая может иметь один или несколько подразделов, то есть дочерних записей). При работе с элементом на странице можно развернуть каждую запись таблицы для просмотра подпунктов (если такие существуют), а также свернуть, чтобы их скрыть. Источником подгрузки данных в компоненту является иерархическая таблица базы данных (определенная в качестве Главной сущности в Редакторе структуры сущностей элемента), представляющая собой набор элементов данных (записей), связанных между собой иерархическими связями. Иерархические связи - это связи, в которых один из элементов данных является родителем другого элемента, то есть в таблице присутствует внешний ключ (например, parent_id), ссылающийся на первичный ключ этой же таблицы базы данных.

+

Компонента Древовидная таблица находится в разделе Компоненты - Таблицы - Древовидная таблица (рис.1)

+

Примером использования компоненты Древовидная таблица можно привести задачу, когда на странице необходимо отобразить справочник ОКТМО (Общероссийский классификатор территорий муниципальных образований), где каждый муниципальный район будет отображаться вместе со входящими в него сельскими и городскими поселениями, в виде дерева. В данном случае, Алексеевский муниципальный район будет считаться родителем для входящих в него сельских поселений, например, Лебяжинское, Майнское и др., которые считаются по отношению к нему дочерними записями. При этом на пользовательской странице родительская запись в таблице будет отображаться вместе с подсчитанным числом относящихся к нему дочерних записей, выведенным в скобках после значения, отображаемого в первом столбце таблицы, например, 92606000 (20), где 92606000 - это код муниципального района, а (20) - количество поселений входящих в данный муниципальный район.

+

+

рис.1 Компонента Древовидная таблица

+

+

рис.2 Пример использования компоненты Древовидная таблица на странице

+

Свойства

+

Компонента имеет набор общих свойств.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Наименование свойства Назначение свойства Принимаемые значения
Показывать номер строки позволяет задать автоматическую нумерацию строк +
    +
  • значение не определено - по умолчанию
  • +
  • Активно - отображать нумерацию строк
  • +
  • Не активно - не отображать нумерацию строк
Зависит от позволяет указать объект (родителя), по идентификатору которого будут отображаться сведения в текущей Таблице; задаётся в случае необходимости связать Таблицу с другой компонентой, например, Выпадающий список или Таблицей
Root id equal parent id В случае, если корневой элемент таблицы имеет id равный родительскому id, свойство позволяет переопределить построение иерархии +
  • Значение не определено/Не активно - по умолчанию.
  • +
  • Активно - корневой элемент ссылается сам на себя при построении таблицы
  • Row click selection type позволяет задать поведение выбора строк при клике на строку Таблицы +
      +
    • SINGLE_SELECT_CLICK – при клике на строку предыдущие выбранные строки сбрасываются, если не была зажата клавиша Ctrl или Shift- данный метод выбран по умолчанию
    • +
    • MULTI_SELECT_CLICK– при каждом клике на строку не сбрасываются предыдущие выбранные строки. Например, если вы кликнули на одну строку, а затем на другую, то первая строка останется выбранной. В этом случае клик по уже выбранной строке снимает выделение (deselect). Эта настройка полезна для touch-устройств, у которых нет клавиш Ctrl или Shift.
    • +
    • SUPPRESS_SELECT_CLICK– сроки не будут выбираться при клике. Например, если вы хотите выбирать строки только при нажатии на чекбокс.
    +

    Свойство компоненты: Таблица. Задействовать режим выбора нескольких строк

    + + + + + + + + + + + + + + + + + + +
    Наименование свойства Назначение свойства Принимаемые значения
    Допустимо выбрать несколько строк позволяет задать возможность единовременного выбора одной или нескольких записей в Таблице; выбранные строки окрашиваются в отличный от других строк цвет +
      +
    • возможность выбора сразу нескольких или одной строки
    • +
    • возможность выбора одной строки - значение по умолчанию
    Колонка “Флагов” позволяет поставить отметку в виде флажка на тех записях, которые выбраны пользователем в рамках работы с компонентой Таблица +
      +
    • значение не определено - значение по умолчанию
    • +
    • Активно - отображать колонку флагов
    • +
    • Не активно - не отображать колонку флагов
    +

    Свойство компоненты: Древовидная таблица. Подгрузка данных

    +

    +

    Позволяет задать Граф сущностей для подгрузки данных в Таблицу и Колонку, указывающую на родительский элемент для построения древовидной структуры. Является обязательным к заполнению и настройке.

    +

    Сущность - это объект с которым работают в графе. В качестве объекта могут быть: таблицы и представления (вью) из базы данных. Понятие сущности не равно понятию таблицы, поскольку одна таблица может быть добавлена в граф несколько раз.

    +
      + +
    • Колонка, указывающая на родительский элемент - это колонка иерархической таблицы базы данных, включенной в качестве Главной сущности
    • +
    • в структуру сущности элемента Древовидная таблица, которая является внешним ключом (например,parent_id), ссылающимся на первичный ключ
    • +
    • этой же таблицы базы данных.
    • +
    +

    с описанием настройки Графа сущностей для Таблицы можно ознакомиться в разделе: Настройка Графа сущностей

    +

    Свойство компоненты: Таблица. Настроить колонки таблицы

    +

    +

    позволяет настроить отображаемые колонки в Таблице с сортировкой данных по конкретному порядку

    +

    с описанием настройки Колонок Таблицы можно ознакомиться в разделе: Настройка колонок Таблицы

    +

    Функции

    +

    В ходе настройки свойств компоненты (заданных по умолчанию) может оказаться недостаточно для выполнения поставленной задачи и получения необходимого результата.

    +

    Для каждой компоненты предусмотрен перечень функций, расширяющих её базовую функциональность, которые можно добавить нажатием кнопки Добавить скрипт.

    +

    Вследствие технических особенностей реализации функций (функции, которые выполняются удаленно на сервере приложений, функции, которые выполняются в браузере пользователя), они имеют разные иконки, но это никак не влияет на их функциональность или предпочтительность использования.

    +

    Определить права текущего пользователя

    +

    Определить роли текущего пользователя

    +

    Очистить форматирование колонок таблицы

    +

    Преобразовать в колонки со значениями-переходами

    +

    Методические рекомендации по применению

    +

    Пошаговые инструкции по применению компонента в типовых задачах Вы можете найти в разделах:

    + +

    Часто задаваемые вопросы

    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Вопрос Ответ
    Как задать ширину Таблицы? Для того, чтобы настроить ширину или высоту таблицы необходимо в Основных настройках - Расширенные настройки - Стилизадать необходимые значения для настраиваемых параметров, например, Ширина 500px.
    Как задать ширину колонок в процентах? Для задания ширины колонок в процентах необходимо выставить нужный процент в поле width и поставить галочку “Автоматически выравнивать по ширине” (autoStretchColumns)
    Можно ли поменять порядок отображаемых колонок в Таблице? Для того, чтобы изменить порядок колонок в Таблице необходимо в свойстве Настроить колонки таблицы - Колонкинажать правой кнопкой мыши на «Элемент»ивыбрать предложенные варианты: Переместить наверх - Переместить вниз - Удалить элемент
    Как настроить возможность многострочного выбора записей в Таблице? Для того, чтобы настроить многострочный выбор (одновременный выбор нескольких) записей в Таблице необходимо в разделеТаблица. Задействовать режим выбора нескольких строкустановить свойство Допустимо выбрать несколько строк в значение(истина).
    Можно ли поменять порядок отображаемых колонок в Таблице? Для того, чтобы изменить порядок колонок в Таблице необходимо в свойстве Настроить колонки таблицы - Колонкинажать правой кнопкой мыши на «Элемент»ивыбрать предложенные варианты: Переместить наверх - Переместить вниз - Удалить элемент
    Можно ли добавлять в Граф сущностейдополнительные таблицы, ссылающиеся на главную иерархическую таблицу, и отображать значения их колонок в Древовидной таблице? Да, можно. Добавление к Главной сущности компоненты (иерархической таблице) связанных с ней таблиц базы данных, никак не изменяет логики работы и отображения данных в Древовидной таблице.
    +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/grids/Как_добавить_Таблицу_на_страницу_с_фильтрацией_записей_по_условию_.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/grids/Как_добавить_Таблицу_на_страницу_с_фильтрацией_записей_по_условию_.html new file mode 100644 index 0000000..5402594 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/grids/Как_добавить_Таблицу_на_страницу_с_фильтрацией_записей_по_условию_.html @@ -0,0 +1,104 @@ + + + + + + + + Web-BPM Docs – Как добавить Таблицу на страницу с фильтрацией записей по условию? + + + + + + +
    +
    + + + +
    +
    +

    Как добавить Таблицу на страницу с фильтрацией записей по условию?

    +

    Постановка задачи: необходимо реализовать на пользовательской странице Реестра заявлений элемент Таблица, в которой будет отображаться информация о поступивших заявлениях на получение лицензии. Перечень заявлений доступных для просмотра пользователю (сотруднику) и отображаемых в Таблице должен определяться в зависимости от того, к какому территориальному органу относится сотрудник, то есть сотрудник Чистопольского территориального органа должен видеть заявления, зарегистрированные только в этом территориальном органе, заявления из других объектов не должны отображаться ему в Таблице.

    +

    Таблица с заявлениями должна иметь следующие настройки:

    +
      + +
    • в Граф сущностей в качестве Главной сущности должна быть определена таблица заявлений (application), которая будет связана с другими таблицами базы данных, где содержится дополнительная информация для вывода на страницу как тип заявления, данные по организации-заявителю, территориальный орган
    • +
    • в структуре Графа сущностей должно быть задано условие (фильтр), которое будет регулировать отображаемые записи в Таблице в зависимости от территориального органа сотрудника, просматривающего страницу. Ограничение можно задать приравняв значение из таблицы базы данных Территориальный орган (предварительно включенной в Граф сущностей) к переменной процесса div_code, значение которой определяется в зависимости от учетной записи пользователя и заполняется перед открытием страницы Реестр заявлений.
    • +
    • в структуру Таблицы должно быть включено шесть колонок (источником подгрузки значений из базы данных будут служить заданные в Графе сущностей таблицы): +
        + +
      • Номер заявления
      • +
      • Дата заявления
      • +
      • Наименование организации
      • +
      • Цель обращения
      • +
      • Инн
      • +
      • Территориальныйорган
      • +
      +
    • +
    • сортировка записей в Таблице должна осуществляться по дате заявления (по убыванию)
    • +
    +

    Решение задачи:

    +

    Предполагается, что страница Реестра заявлений уже создана бизнес-аналитиком и в логике бизнес-процесса определена необходимая переменная процесса div_code, значение которое заполняется перед открытием страницы пользователем. Для добавления на страницу и настройки Таблицы необходимо сделать следующее:

    +
      + +
    • добавить внутрь страницы компоненту Таблица (рис.1)
    • +
    • в настройках добавленной Таблицы перейти к разделу Таблица. Подгрузка данных - Источник данных - Граф сущностей и настроить его в соответствии с условием задачи. Во вкладке Структура открывшегося Редактора структуры сущностей необходимо задать условие (фильтр) по территориальному органу сотрудника-пользователя (рис.2)
    • +
    +

    + +
    +
    рис.1 Добавление элемента Таблица на страницу
    +рис.2 Настройка Графа сущностей Таблицы и условия фильтрации записей
    +
    + + +

    +

    рис.5 Настройка колонок Таблицы

    +

    +

    рис.6 Настройка колонок Таблицы

    +

    +

    рис.7 Настройка сортировки в Таблице по дате заявления

    +

    Результат выполнения задачи:

    +

    После применения изменений на странице, в экранной форме пользовательского приложения, мы видим, что условия задачи соблюдены и записи в Таблице с заявлениями отображаются согласно заданному условию (фильтру) в структуре сущностей компоненты (рис.8). При удалении данного условия из логики настройки Таблицы, подгружаются данные по все территориальным органам вне зависимости от того к какому отделу относится сотрудник-пользователь, просматривающий страницу (рис.9).

    +

    рис.8 Визуальное отображение выполнения условий задачи

    +

    +

    рис.9 Отображение данных в Таблице без применения условия по территориальному органу

    +

    image2019-3-7\_15-22-36.png Screenshot\_9.png Screenshot\_9.png
    +image2019-3-7\_15-26-43.png Screenshot\_6.png
    +image2019-3-7\_15-59-25.png Screenshot\_7.png
    +Screenshot\_8.png
    +Screenshot\_3.png
    +Screenshot\_4.png

    +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/grids/Как_добавить_на_страницу_Таблицу_с_постраничным_отображением_.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/grids/Как_добавить_на_страницу_Таблицу_с_постраничным_отображением_.html new file mode 100644 index 0000000..e48991f --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/grids/Как_добавить_на_страницу_Таблицу_с_постраничным_отображением_.html @@ -0,0 +1,102 @@ + + + + + + + + Web-BPM Docs – Как добавить на страницу Таблицу с постраничным отображением? + + + + + + +
    +
    + + + +
    +
    +

    Как добавить на страницу Таблицу с постраничным отображением?

    +

    Постановка задачи: необходимо реализовать на пользовательской странице Реестра сведений о розничных ценах по товарамэлемент Таблица с постраничным отображением, в которой будет отображаться информация о предоставленных и зарегистрированных сведениях о ценах на продовольственные товары по территориальным органам и входящих в него районах.

    +

    Таблица со сведениями должна иметь следующие настройки:

    +
      + +
    • в Граф сущностей в качестве Главной сущности должна быть определена таблица сведений (price_monitor_report), которая будет связана с другими таблицами базы данных, где содержитсядополнительная информация для вывода на страницу как территориальный орган, район, статус обработки, тип сведения
    • +
    • в структуру Таблицы должно быть включено семь колонок (источником подгрузки значений из базы данных будут служить заданные в Графе сущностей таблицы): +
        + +
      • Территориальный орган
      • +
      • Район
      • +
      • Наименование предоставляемых сведений
      • +
      • Период отчетности
      • +
      • Торговый объект
      • +
      • Статус
      • +
      • Комментарий
      • +
      +
    • +
    • сортировка записей в Таблице должна осуществляться по периоду отчетности (по убыванию)
    • +
    +

    Решение задачи:

    +

    Предполагается, что страница Реестра сведений о розничных ценах по товарам, где необходимо разместить Таблицу, уже создана бизнес-аналитиком и включена в логику бизнес-процесса. Для добавления на страницу и настройки Таблицы с постраничным отображением необходимо сделать следующее:

    +
      + +
    • добавить внутрь страницы компоненту Таблица с постраничным отображением (рис.1)
    • +
    • в настройках добавленной Таблицы с постраничным отображением перейти к разделу Таблица с постраничным отображением. Подгрузка данных - Источник данных Граф сущностей и настроить его в соответствии с условием задачи. В качестве Главной сущности (выделена желтой рамкой) в Редакторе структуры сущности задана таблица базы данныхprice_monitor_report (рис.2)
    • +
    +

    + +
    +
    рис.1 Добавление элемента Таблица с постраничным отображением на страницу
    +рис.2 Настройка  Графа сущностей Таблицы с постраничным отображением
    +
    + + +

    + +
    +
    рис.3 Настройка колонок Таблицы         
    +рис.4 Настройка колонок Таблицы   
    +рис.5 Настройка колонок и сортировки в Таблице  
    +
    + +

    Результат выполнения задачи:

    +

    После применения изменений на странице, в экранной форме пользовательского приложения, мы видим, что условия задачи соблюдены и в Таблице с постраничным отображением содержится вся необходимая информация (рис.6).

    +

    + +
    +
    рис.6 Визуальное отображение выполнения условий задачи
    +
    +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/grids/Как_добавить_связанные_Таблицы_на_страницу_.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/grids/Как_добавить_связанные_Таблицы_на_страницу_.html new file mode 100644 index 0000000..f3b97ba --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/grids/Как_добавить_связанные_Таблицы_на_страницу_.html @@ -0,0 +1,89 @@ + + + + + + + + Web-BPM Docs – Как добавить связанные Таблицы на страницу? + + + + + + +
    +
    + + + +
    +
    +

    Как добавить связанные Таблицы на страницу?

    +

    Постановка задачи: необходимо реализовать на пользовательской странице Реестра заявлений, где имеется основная Таблица с информацией о заявлениях на оформление лицензии, дополнительную, зависящую от основной Таблицу объектов из заявления, где будет отображаться информация об объектах (наименование объекта, КПП, площадь), включенных в заявление. Таблица с информацией об объектах должна иметь следующие настройки:

    +
      + +
    • в Граф сущностей должна быть включена в качестве Главной сущности таблица application_object, в которой имеется ссылка на идентификатор заявления(из таблицы application) и на идентификатор объекта(из таблицы object). Также в Граф сущностей должна быть включена таблица object, из которой будет подгружаться информация об объектах, включенных в заявление
    • +
    • в структуру Таблицы должны быть включены три колонки (источником подгрузки значений из базы данных будут служить заданные вГрафе сущностейтаблицы): +
        + +
      • Наименование объекта
      • +
      • КПП объекта
      • +
      • Площадь
      • +
      +
    • +
    +

    Решение задачи:

    +

    Предполагается, что страница Реестра заявлений уже создана бизнес-аналитиком, где имеется настроенная основная Таблица заявлений, в Граф сущностей которой добавлены все необходимые объекты базы данных (таблицы и представления) и в качестве Главной сущности задана таблица базы данных application, так как будет запоминаться идентификатор выбранной из неё записи(рис.1). Для добавления на страницу и настройки дополнительной, зависящей от главной, Таблицы необходимо сделать следующее:

    +
      + +
    • добавить внутрь Формы компоненту Таблица и в параметре “Зависит от” указать основную Таблицу с заявлениями (рис.2)
    • +
    +

    + +
    +
    рис.1 Граф сущностей главной Таблицы заявлений                         
    +рис.2 Добавление связи между Таблицами
    +
    + +
      + +
    • в настройках добавленной Таблицы перейти к разделу Таблица. Подгрузка данных - Источник данных - Граф сущностей и настроить его в соответствии с условием задачи (рис.3). Там же в свойстве “Колонка для режима Зависит от” необходимо указать колонку связи с основной таблицей, и данный идентификатор будет служить в качествепараметра, по которому будет подгружаться информация в зависимую Таблицу с объектами (рис.4)
    • +
    • Настройка_колонок_Таблицы в соответствии с условием задачи (рис.5) +

      рис.3 Настройка Графа сущностей Таблицы с объекта из заявления рис.4 Настройка колонки связи между Таблицами
      +рис.5 Настройка колонок Таблицы

    • +
    +

    Результат выполнения задачи:

    +

    После применения изменений на странице, в экранной форме пользовательского приложения, мы видим, что при выборе записи в главной Таблице, где находится информация о поступивших заявлениях, в зависимой Таблице, по идентификатору заявления из главной Таблицы, отображается информация об объектах, включенных в данное заявление (рис.6).

    + +
    +
    рис.6 Визуальное отображение выполнения условий задачи
    +
    +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/grids/Как_задействовать_компоненту_Древовидная_таблица_на_пользовательской_странице_.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/grids/Как_задействовать_компоненту_Древовидная_таблица_на_пользовательской_странице_.html new file mode 100644 index 0000000..b791b3b --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/grids/Как_задействовать_компоненту_Древовидная_таблица_на_пользовательской_странице_.html @@ -0,0 +1,158 @@ + + + + + + + + Web-BPM Docs – Как задействовать компоненту Древовидная таблица на пользовательской странице? + + + + + + +
    +
    + + + +
    +
    +

    Как задействовать компоненту Древовидная таблица на пользовательской странице?

    +

    Постановка задачи: на пользовательской странице Справочник видов продукции необходимо реализовать возможность отображения данных (наименований видов продукции) с использованием древовидной структуры в табличном виде, где в наборе элементов таблицы (записей) есть родительская запись Группа продукции и относящиеся к ней дочерние записи - Виды продукции. Помимо отображения данных в Древовидной таблице необходимо реализовать возможность добавления новой связанной дочерней записи к уже имеющейся ветви (записи) в таблице или родительскую запись, которая в последствии будет служить ветвью для добавления дочерних записей. При выборе записи в таблице по нажатию на кнопку Добавить (компонента Кнопка выбора) осуществляется переход по бизнес-процессу на страницу Добавления вида продукции, где помимо уже имеющихся полей на настроенной Форме для сохранения значений в таблицу базу данных - Код, Наименование продукции, Описание, Актуальность, необходимо добавить поле Родитель(компонентаПоле ввода с подбором значения), значение которого будет заполняться по умолчанию из переменной процесса значением (идентификатором) записи - parent_id, выбранной ранее с помощью кнопки Добавить в таблице Справочников видов продукции.

    +

    Последовательность действий пользователя, в данном случае, будет заключаться в следующем: в таблице Справочник видов продукции была выбрана родительская запись, например, Вина столовые фруктовые, которая является Группой продукции и уже включает в себя Виды продукции. К выбранной (строка окрашена в отличный от других строк цвет) Группе продукции (Вина столовые фруктовые) пользователю необходимо добавить новый вид продукции, для этого он нажимает на кнопку Добавить, после чего открывается страница Добавления вида продукции, где поле Родитель по умолчанию заполнилось значением - Вина столовые фруктовые и после сохранения к данной Группе продукции будет добавлена новая дочерняя запись Вид продукции, например, Сухие фруктовые вина.

    +

    В случае, когда пользователю будет необходимо добавить не дочернюю запись к уже существующей родительской записи, а самого родителя (ветвь) Группу продукции, которая в будущем будет объединять в себе Виды продукции, по нажатию на кнопку Добавить (без выбора записи в таблице) будет также осуществляться переход на страницу Добавления вида продукции, но поле Родитель будет оставаться пустым.

    +

    Источником для подгрузки данных в настраиваемой Древовидной таблице должна быть определена в качестве Главной сущности иерархическая таблица базы данных - Виды продукции, в структуре которойприсутствует внешний ключ(parent_id), ссылающийся на первичный ключ этой же таблицы базы данных. Для более детального отображения данных на странице Справочник видов продукции, в структуру сущностей компонентыДревовидная таблицанеобходимо также включить таблицы базы данных, которые будут ссылаться по ключу на Главную сущность - Справочник ЛКВП (локальный вид кода продукции) и Справочник кодов ФСРАР (классификатор видов продукции), значениями из которых будут заполняться колонки ЛКВП и Код ФСРАР в настраиваемой таблице.

    +

    Решение задачи: предполагается, что бизнес-аналитиком уже создана страница Справочник видов продукции, где необходимо расположить элемент Древовидная таблица,также создана страницаДобавление вида продукции, где помимо уже имеющихся на Формеэлементов страницы, необходимо разместить поле Родитель, значение которого будет подгружаться из уже созданной переменной процесса-parent_id и будет равно значению идентификаторазаписи выбранной в настраиваемой Древовидной таблице с помощью компоненты Кнопка выбора - Добавить.

    +

    Для добавления на страницу компоненты Древовидная таблица, которая будет отображать Справочник видов продукции в виде дерева, необходимо сделать следующее:

    +
      + +
    • добавить на страницу элемент из раздела Компоненты - Таблицы - Древовидная таблица (рис.1)
    • +
    • в свойстве компоненты Древовидная таблица. Подгрузка данных настроить Граф сущностей, где в Редакторе структуры сущностей необходимо включить таблицы базы данных Справочник видов продукции (иерархическая таблица - Главная сущность), Справочник ЛКВП (ссылается на первичный ключ Главной сущности) и Справочник кодов ФСРАР (связан с Главной сущностью через таблицу связи), которые будут служить в качестве источника данных для подгрузки значений в настраиваемую Таблицу (рис.2)
    • +
    +

    + +
    +
    рис.1 Добавление компоненты Древовидная таблица на страницу                         
    +рис.2 Настройка Графа сущностей Древовидной таблицы
    +
    + +
      + +
    • после заполнения Графа сущностей компоненты в свойстве Древовидная таблица. Подгрузка данных необходимо в качестве Колонки, указывающей на родительский элемент указать колонку Главной сущности (иерархической таблицы базы данных Справочник видов продукции) - parent_id, которая является внешним ключом, ссылающимся на первичный ключ этой же таблицы базы данных (рис.3). Указание данной колонки и использование иерархической таблицы базы данных в качестве Главной сущности позволит выстроить древовидную структуру таблицы с ветвями (родителями) и относящимися к ним дочерними записями.
    • +
    • в параметре Таблица. Настроить колонки таблицы необходимо включить элементы, которые будут отображать значения колонок из трёх ранее добавленных в Граф сущностей таблиц базы данных -Справочник видов продукции (иерархическая таблица -Главная сущность),Справочник ЛКВП и Справочник кодов ФСРАР (рис.4)
    • +
    • на этой же странице Справочник видов продукции для того чтобы реализовать возможность добавления новой записи в таблицу с переходом на страницу Добавления вида продукции необходимо добавить элемент Кнопка выбора,в свойствах которого настраиваются следующие параметры (рис.5): +
        + +
      • в качестве Компоненты для выбора записи указываем настраиваемую Древовидную в таблицу
      • +
      • в свойстве элемента Таблица. Получить идентификатор выбранной в таблице записи и сохранить в переменную процесса в параметре Сохранить идентификатор в…указываем уже созданную переменную процесса parent_id
      • +
      • по нажатию на кнопку Добавить скрипт необходимо выбрать из открывшегося списка доступную для компоненты функцию Управление навигацией и в её настройках указать значение переменной навигации add_vid_prod, по которому будет осуществляться переход по бизнес-процессу на страницу Добавление вида продукции
      • +
      +

      рис.3 Настройка свойства Подгрузка данных
      +рис.4 Настройка колонок Таблицы
      +рис.5 Настройка Кнопки выбора записи в таблице

      +
    • +
    +

    Согласно условию задачи, в случае, когда пользователю необходимо добавить новую запись (родительскую или дочернюю) в таблицу осуществляется переход по бизнес-процессу на страницу Добавления вида продукции по нажатию на кнопку Добавить. На открывшейся странице должно быть поле Родитель, которое будет заполнено из переменной процесса значением (идентификатором) выбранной ранее записи в таблице, в случае, если происходит добавление дочерней записи к уже существующей ветви (родителю). Если переход на страницу был осуществлен без выбора записи в Таблице, то есть пользователю необходимо добавить родительскую запись, на странице Добавления вида продукции поле Родитель будет пустым.

    +

    Для того чтобы добавитьполе Родитель(компонентаПоле ввода с подбором значения)на страницу Добавления вида продукции необходимо сделать следующее:

    +
      + +
    • добавить элемент из раздела **Компоненты – Поля – Поле ввода с подбором значения (с возможностью сохранения)**внутрь компоненты Формана странице(рис.6)
    • +
    • в свойстве компоненты Поле ввода с подбором значения. Подгрузка данных настроить Граф сущностей, где в Редакторе структуры сущностей необходимо включить в качестве Главной сущности таблицу базы данных -Справочник видов продукции (рис.7)
    • +
    +

    + +
    +
    рис.6 Добавление компоненты Поле ввода с подбором значения (с возможностью сохранения)     
    +рис.7 Настройка Графа сущностей Поля ввода с подбором значения
    +
    + +
      + +
    • после заполнения Графа сущностей компоненты в свойствеПоле ввода с подбором значения. Подгрузка данныхнеобходимо дополнительно настроить два параметра (рис.8): +
        + +
      • в параметре Сортировать поуказываем колонку Название (name)таблицы базы данных Справочник видов продукции, включенной в Граф сущностей компоненты.
      • +
      • в параметреПоказывать пользователюуказываем колонку Название (name)таблицы базы данных Справочник видов продукции, включенной в Граф сущностей компоненты.
      • +
      +
    • +
    • для того, чтобы полученное значение из элемента Родитель сохранялось в базу данных, необходимо настроить свойствоПоле ввода с подбором значения. Сохранения значения, где мы указываем таблицу базы данных и колонку, в которую будет происходить сохранение значения на странице (рис.9)
    • +
    • согласно поставленной задаче, описанной выше, значение поля Родитель на странице должно подгружаться из переменнойпроцесса - parent_id, что можно настроить перейдя к свойству компоненты Заполнить значением из переменной процесса (рис.9) +

      рис.8 Настройка Подгрузки данныхПоля ввода с подбором значения рис.9 Настройки свойств сохранения и заполнения значения из переменной

    • +
    +

    Результат выполнения задачи:

    +

    После применения изменений на странице, в экранной форме пользовательского приложения, мы видим, что на страницеСправочник видов продукции есть Древовидная таблица, в которой записи отображаются в виде дерева, где видно основную ветвь (родительскую запись) - Группу продукции, и ответвляющиеся от неё дочерние записи - Виды продукции (рис.10). Для того, чтобы добавить новую запись в Таблицу (дочернюю к уже имеющейся записи) на странице размещена кнопка Добавить (рис.10). По нажатию на кнопку происходит запись идентификатора выбранной строки-родителя, к которой пользовательхочет добавить дочернюю запись, в переменную процесса и переход по бизнес-процессу на страницу Добавления вида продукции (рис.11). После открытия страницы в поле Родитель отображается значение ранее выбранное в Древовидной таблице на странице Справочник видов продукции (рис.12, рис.13). В случае, если пользователь добавляет саму ветвь (родителя), то он не выбирает запись в таблице, а сразу нажимает на кнопку Добавить, и значение поля Родитель у добавляемой записи остается пустым (рис.13).

    +

    + +
    +
    рис.10 Отображение Древовидной таблицы на странице 
    +рис.11 Выбор родительской записи в таблице для добавления дочерней записи
    +
    + +

    + +
    +
    рис.12 Отображение значения в поле Родитель   
    +рис.13 Последовательность двух вариантов действия: добавление родительской и дочерней записи
    +
    + +
    +
    +

    Attachments:

    +
    + +
    + +

    image2019-4-12_14-27-47.png (image/png)
    + image2019-4-12_14-27-55.png (image/png)
    + Screenshot_2.png (image/png)
    + Screenshot_8.png (image/png)
    + Screenshot_9.png (image/png)
    + Screenshot_9.png (image/png)
    + image2019-4-12_15-13-14.png (image/png)
    + Screenshot_10.png (image/png)
    + Screenshot_11.png (image/png)
    + image2019-4-16_15-40-30.png (image/png)
    + Screenshot_12.png (image/png)
    + Screenshot_151.png (image/png)
    + Screenshot_15.png (image/png)
    + Screenshot_15.png (image/png)
    + Screenshot_15.png (image/png)
    + image2019-4-17_10-42-16.png (image/png)
    + image2019-4-17_10-48-37.png (image/png)
    + image2019-4-17_10-50-29.png (image/png)
    + image2019-4-17_10-51-29.png (image/png)
    + image2019-4-17_10-55-32.png (image/png)
    + Запись_2019_04_17_11_02_28_197.gif (image/gif)
    + image2019-4-17_11-7-50.png (image/png)
    + image2019-4-17_11-12-45.png (image/png)

    +
    +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/grids/Как_сохранить_идентификатор_связанной_таблицы_используя_скрытое_числовое_поле_.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/grids/Как_сохранить_идентификатор_связанной_таблицы_используя_скрытое_числовое_поле_.html new file mode 100644 index 0000000..890ff3a --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/grids/Как_сохранить_идентификатор_связанной_таблицы_используя_скрытое_числовое_поле_.html @@ -0,0 +1,68 @@ + + + + + + + + Web-BPM Docs – Как сохранить идентификатор связанной таблицы используя скрытое числовое поле? + + + + + + +
    +
    + + + +
    +
    +

    Как сохранить идентификатор связанной таблицы используя скрытое числовое поле?

    +

    Постановка задачи: предполагается, что есть переменная процесса (employee_id), которая хранит в себе значение идентификатора текущего авторизованного пользователя изтаблицы с информацией о пользователях системы.Необходимо реализовать на странице скрытое Числовое поле, в которое будет записываться значение из переменной employee_id и сохраняться в базе данных в качестве идентификатора изменившего запись в таблицу Список задач (tasks) колонку updated_employee_id.

    +
      + +
    • поле должно быть невидимым пользователю
    • +
    • значение поля должно подлежать сохранению
    • +
    • сохранение значения должно осуществляться в базу данныхв таблицу Список задач (tasks) колонку updated_employee_id
    • +
    • значение поля должно заполняться из переменной employee_id
    • +
    +

    Решение задачи:

    +

    Предполагается, что страница уже создана бизнес-аналитиком, где имеется ***основная компонента Форма***, в структуру сущностей которой включена необходимая, в данном случае,таблица Список задач (tasks), в которую будет сохраняться полученноезначение. Для добавления на страницу и настройки числового поля необходимо сделать следующее:

    +
      + +
    • добавить внутрь Формы компоненту Числовое поле с возможностью сохранения
    • +
    • произвести настройки согласно условию задачи
    • +
    +

    +

    Результат выполнения задачи:

    +

    Так как поле должно быть невидимым, на странице приложения оно не отобразится. При нажатии на кнопку сохранения, значение из поля будет записано в таблицу Список задач (tasks) колонку updated_employee_id.

    +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/grids/Настройка_колонок_Таблицы.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/grids/Настройка_колонок_Таблицы.html new file mode 100644 index 0000000..aa34611 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/grids/Настройка_колонок_Таблицы.html @@ -0,0 +1,100 @@ + + + + + + + + Web-BPM Docs – Настройка колонок Таблицы + + + + + + +
    +
    + + + +
    +
    +

    Настройка колонок Таблицы

    +

    Для того, чтобы приступить к настройке колонок отображаемой в приложении Таблицы, необходимо предварительно заполнить Граф сущностей компоненты, где указываются объекты базы данных (таблицы и представления) с соответствующими условиямии связями, которые будут выступать в качестве источника данных для подгрузки значений.

    +

    После настройки Графа сущностей и сохранения внесённых изменений в его структуру*, во встроенных функциях элемента Таблица* необходимо перейти к разделу Таблица. Настроить колонки таблицы - Колонки и нажать на кнопку “Плюс” (рис.1). По нажатию на кнопку будет добавлен первый элемент (колонка), который имеет следующие настройки:

    +
      + +
    • Колонка - позволяет указать конкретную таблицу или представление базы данных, предварительно включенную в Граф сущностей, и колонку из этой таблицы, значения из которой будут отображаться на странице;
    • +
    • Наименование - это свойство, которое**позволяет задать наименование колонки, которое будет отображаться в шапке Таблицы; если название колонки не задано, то по умолчанию будет отображаться название таблицы и колонки в базе данных, откуда подгружаются значения
    • +
    • Ширина - свойство, которое**позволяет указать ширину (по умолчанию в пикселях) отображаемой колонки в Таблице;
    • +
    • Фиксированная ширина - данное условие выполняется только при заполненном выше значении Ширина и фиксирует размер колонки в Таблице;
    • +
    • Скрытое - данное свойство позволяет задать возможность скрытия столбца в Таблице. Применяется в том случае, когда необходимо настроить сортировку по содержимому колонки или использовать её в качестве входного параметра для кастомных (нестандартных) функций, но при этом отображать колонку в Таблице пользователю не нужно.
    • +
    • Агрегирующая функция - это функция, которая обрабатывает набор строк в указанной колонке для подсчета и возвращения одного обобщающего значения.Предусмотрено использование следующих агрегирующих функций: +
        + +
      • Сумма- возвращает сумму содержащихся в колонке значений, при этом указанная колонка из таблицы базы данных должна иметь числовой тип;
      • +
      • Максимум- возвращает максимальное значение из массива имеющихся значений в колонке, при этом указанная колонка из таблицы базы данных должна иметь числовой тип;
      • +
      • Минимум- возвращает минимальное значение из массива имеющихся значений в колонке,при этом указанная колонка из таблицы базы данных должна иметь числовой тип;
      • +
      • Среднее- возвращает среднее подсчитанное значение из массива имеющихся значений в колонке,при этом указанная колонка из таблицы базы данных должна иметь числовой тип;
      • +
      +

      Количество - возвращает общее количество записей в колонкеВ случае, когда свойство настроено у колонки, например, выбрана Агрегирующая функция Сумма, на странице пользовательского приложения вычисленное значение по колонке будет автоматически отображаться зафиксированной (положение не будет изменяться при прокрутке записей) результирующей строкой в Таблице (рис.3). При этом строка будет выделена отличным от других записей в таблице цветом и значение в результирующем поле будет динамически изменяться по мере заполнения колонки (выбранной в качестве источника данных) новыми значениями в таблице базы данных.

      +
    • +
    • Форматирование - данное свойство позволяет отобразить значение из колонки базы данных в необходимом формате на странице в приложении. Например, подгружаемое значение в колонку имеет тип данных Дата и Время (DateTime), но на странице пользовательского приложения необходимо отображать значение в колонке без Времени, только Дату. В таком случае, целесообразно использовать форматтер DateFormatter, который отобразит значение колонки в нужном виде. Но при этом предварительно необходимо применить к Таблице функцию Очистить форматирование колонок таблицы, указав наименование настраиваемой колонки.
    • +
    +

    Порядок и удаление колонки в Таблице можно регулировать нажав правой кнопкой мыши на надписи Элемент и выбрав один из трех вариантов Переместить наверх - Переместить вниз - Удалить элемент (рис.2).

    +

    +

    рис.1 Добавление колонок в Таблицу

    +

    +

    рис.2 Изменение элемента в Таблице (порядок или удаление)

    +

    +

    рис.3 Отображение колонок с Агрегирующими функциями

    +

    В случае, когда необходимо отобразить значение из нескольких колонок таблиц(ы) базы данных в одной колонке Таблицы на странице приложения используется свойство Составная колонка (рис.4).

    +
      + +
    • Составная колонка - это элемент Таблицы, который включает в себянесколько вложенных колонок из одной или разных таблиц базы данных с определяемым разделителем значений (точка, запятая, пробел и другие) и следующими настройками: +
        + +
      • префикс- символ или текст, который будет отображаться перед подгружаемым значением из колонки базы данных, например символ открывающейся скобки (;
      • +
      • постфикс - символ или текст, который будет отображаться после подгружаемого значения из колонки базы данных, например символ закрывающейся скобки ) ;
      • +
      • разделитель - символ или пробел, который будет разделять между собой значения из разных колонок таблиц (ы) приводимых в одну строку
      • +
      +
    • +
    +

    Для отображения записей в Таблице в определенном порядке используется Сортировка, которую можно настроить перейдя к разделу Таблица. Настроить колонки таблицы - Сортировкаи нажать на кнопку. Важно отметить, что колонка(и), по которым будет производитьсяСортировкадолжны быть включены в качестве элементов в Таблицу, либо включены, но скрыты, иначе при открытии страницы пользовательского приложения будет выведена ошибка. На языке SQL-запросовданное условие равно оператору ORDER BY, который можно применять как к числовым столбцам, так и к строковым (в последнем случае, сортировка будет происходить по алфавиту). По нажатию на кнопку будет добавлен элемент сортировки, который имеет следующие настройки:

    +
      + +
    • Колонка - позволяет указать конкретную таблицу или представление базы данных, предварительно включенную в Граф сущностей, и колонку из этой таблицы, по которой будут сортироваться записи в Таблице;
    • +
    • Порядок сортировки позволяет указать в каком порядке будет производиться сортировка По возрастанию или По убыванию (рис.5)
    • +
    +

    +

    рис.4 Добавление элемента Составная колонка

    +

    +

    рис.5 Добавление сортировки Таблиц по условию

    +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/grids/Очистить_форматирование_колонок_таблицы.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/grids/Очистить_форматирование_колонок_таблицы.html new file mode 100644 index 0000000..b148daa --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/grids/Очистить_форматирование_колонок_таблицы.html @@ -0,0 +1,77 @@ + + + + + + + + Web-BPM Docs – Очистить форматирование колонок таблицы + + + + + + +
    +
    + + + +
    +
    +

    Очистить форматирование колонок таблицы

    +

    Функция, которая в режиме исполнения приложения (runtime mode) очищает форматирование по умолчанию указанных в настройках функции колонок компоненты Таблица для возможности применения пользовательских параметров форматирования, указываемых в настройках колонок компоненты Таблица. Попытка выставления аналитиком пользовательских параметров форматирования в настройках колонок компоненты Таблица без совместного использования с функцией Очистить форматирование колонок таблицы не приведет к изменению форматирования и к колонкам компоненты Таблица по-прежнему будет применяться форматирование по умолчанию

    +

    Может быть активирована только на компоненте Таблица.

    +

    +

    Рис. 1 Внешний вид активированной функции

    +

    Параметры функции (табл.1)

    + + + + + + + + + + + + + + +
    Наименование свойства Назначение свойства Принимаемые значения
    Список колонок, обязательный позволяет сформировать список колонок компоненты Таблица, для которых система должна сбросить форматирование по умолчанию. Колонки для текущей функции идентифицируются по именам, присвоенным колонкам при настройке функции “Таблица”. Настроить колонки таблицы
    +

    Пример настройки и применения

    +

    +

    Рис.2 Активация функции на компоненте Таблица

    +

    +

    Рис. 3 Форматирование колонки без применения функции “Очистить форматирование колонок таблицы”

    +

    +

    Рис.4 Форматирование колонки после применения функции Очистить форматирование колонок таблицы

    +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/grids/Таблица.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/grids/Таблица.html new file mode 100644 index 0000000..8a00ca2 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/grids/Таблица.html @@ -0,0 +1,247 @@ + + + + + + + + Web-BPM Docs – Таблица + + + + + + +
    +
    + + + +
    +
    +

    Таблица

    +

    Назначение

    +

    Таблица - это компонента, которая используется для отображения информации из базы данных в табличном виде с возможностью сортировки записей в нужном порядке.

    +

    Компонента Таблица находится в разделе Компоненты - Таблицы - Таблица

    +

    Свойства

    +

    Компонента имеет набор общих свойств.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Наименование свойства Назначение свойства Принимаемые значения
    Зависит от позволяет указать объект (родителя), по идентификатору которого будут отображаться сведения в текущей Таблице; задаётся в случае необходимости связать Таблицу с другой компонентой, например, Выпадающий список или Таблицей
    Multiselectable позволяет задать возможность единовременного выбора одной или нескольких записей в Таблице; выбранные строки окрашиваются в отличный от других строк цвет +
      +
    • возможность выбора сразу нескольких или одной строки
    • +
    • возможность выбора одной строки - значение по умолчанию
    Checkbox Column позволяет поставить отметку в виде флажка на тех записях, которые выбраны пользователем в рамках работы с компонентой Таблица +
      +
    • значение не определено - по умолчанию
    • +
    • Активно - отображать колонку флагов
    • +
    • Не активно - не отображать колонку флагов
    Показывать номер строки позволяет задать автоматическую нумерацию строк +
      +
    • значение не определено - по умолчанию
    • +
    • Активно - отображать нумерацию строк
    • +
    • Не активно - не отображать нумерацию строк
    Pinned Bottom Row Label позволяет задать значение для названия итоговой строки таблицы (строки с агрегирующими значениями по колонкам таблицы) пример возможного значения: Итого
    Row click selection type позволяет задать поведение выбора строк при клике на строку Таблицы +
      +
    • SINGLE_SELECT_CLICK – при клике на строку предыдущие выбранные строки сбрасываются, если не была зажата клавиша Ctrl или Shift- данный метод выбран по умолчанию
    • +
    • MULTI_SELECT_CLICK -при каждом клике на строку, предыдущие выбранные строки не сбрасываются, т.е если кликнули на одну строку, а затем на другую, то первая строка останется выбранной. Клик по уже выбранной строке снимает с неё выделение. Использования данного метода допустимо, в случае, если в таблице доступен выбор нескольких строк (при значениисвойстваMultiselectable)
    • +
    • SUPPRESS_SELECT_CLICK – исключает возможность выбора (выделения) строки по клику. В данном случае, выбор строки представляется возможным только при использовании чекбоксов.
    Save Column State позволяет задать возможность сохранения пользовательских настроек в части состава и ширины колонок в таблице +
      +
    • значение не определено - по умолчанию
    • +
    • Активно - изменения пользователя в части отображаемых колонок в таблице (состав и ширина) будут сохраняться в локальном хранилище, т.е. если пользователь исключил для отображения конкретную колонку или изменил ширину столбца в таблице, то при повторном переходе на страницу эти изменения отобразятся
    • +
    • Не активно - не сохранять изменения пользователя в части отображаемых колонокв таблице (состав и ширина), т.е. если пользователь исключил для отображения конкретную колонку или изменил ширину столбца в таблице, то при повторном переходе на страницу эти изменения не отобразятся и таблица будет иметь исходный вид по умолчанию
    Loading Overlay Type позволяет выбрать вид прелоадера при подгрузке данных в таблицу Доступны следующие виды настройки: +
      +
    • TEXT_OVERLAY - отображает текст в центре таблицы при подгрузке данных, задаваемый в свойствах: No Rows Overlay Message и Loading Overlay Message
    • +
    • PROGRESS_BAR - отображает прогресс-бар при подгрузке данных в таблицу
    No Rows Overlay Message позволяет указать текст для отображения пользователю в таблице в случае, если результат запроса не вернул ни одной строки, например, Данные отсутствуют (доступно для настройки при Loading Overlay Type - TEXT_OVERLAY) пример возможного значения: Данные отсутствуют
    Loading overlay message позволяет указать текст для отображения пользователю в процессе подгрузки данных в таблицу, например, Загрузка данных, пожалуйста, подождите.( доступно для настройки при Loading Overlay Type - TEXT_OVERLAY) пример возможного значения: Загрузка данных, пожалуйста, подождите. Allow Context Menu With позволяет управлять отображением контекстного меню (список доступных для исполнения действий) при нажатии правой кнопкой мыши на ячейку внутри таблицы +
      +
    • значение не определено - по умолчанию
    • +
    • Активно - при нажатии правой кнопкой мыши на ячейку внутри таблицы отображается контекстное меню доступных действий, например, копирование значения ячейки
    • +
    • Не активно - исключает отображение контекстного меню при нажатии правой кнопкой мыши на ячейку внутри таблицы
    +

    Свойство компоненты: Таблица. Подгрузка данных

    +

    +

    Подгрузка данных - позволяет задать граф сущностей для подгрузки данных в Таблицу. Является обязательным к заполнению и настройке.

    +
      + +
    • + +

      Граф сущностей элемента настраивается в соответствии с п. Настройка Графа сущностей. Является обязательным к заполнению и настройке.

      +
    • +
    • + +

      Колонка для режима “Зависит от” - позволяет указать колонку настраиваемой Таблицы, которая обеспечивает связь текущей компоненты с компонентой заданной в параметре “Зависит от”

      +
    • +
    • + +

      Datasource Jndi Name -позволяет задать иной источник (базу данных) для выполнения запроса, заданного с помощью элементов базы данных в редакторе Графа сущностей элемента.

      +
    • +
    +

    Значение данного свойства может быть задано следующим образом: java:/webbpm/AppRepDS, а сам адрес базы данных, логин и пароль для подключения должен быть указан в файле standalone.xml (аналогично тому, как указывается, например, подключение к базе данных безопасности).

    +

    В случае, если данное свойство не заполнено, запрос выполняется в базе данных, указанной в конфигурации проекта (во вкладке База данных).

    +
      + +
    • Aggregation Header For Export - свойство в расширенных настройках, позволяющее задать заголовок для агрегационной строки при экспорте данных.
    • +
    +

    +

    Свойство компоненты: Таблица. Настроить колонки таблицы

    +

    +

    позволяет настроить отображаемые колонки в Таблице с сортировкой записей по конкретному порядку

    +

    с описанием настройки Колонок Таблицы можно ознакомиться в разделе: Настройка колонок Таблицы

    +

    Свойство компоненты: Таблица. Настроить динамическую подгрузку данных при просмотре страницы

    + + + + + + + + + + + + + + +
    Наименование свойства Назначение свойства Принимаемые значения
    Количество записей в блоке количество отображаемых записей в Таблице по умолчанию при каждой новой подгрузк пример возможного значения: 20 - значение по умолчанию
    +

    Функции

    +

    В ходе настройки свойств компоненты (заданных по умолчанию) может оказаться недостаточно для выполнения поставленной задачи и получения необходимого результата.

    +

    Для каждой компоненты предусмотрен перечень функций, расширяющих её базовую функциональность, которые можно добавить нажатием кнопки Добавить скрипт.

    +

    Вследствие технических особенностей реализации функций (функции, которые выполняются удаленно на сервере приложений, функции, которые выполняются в браузере пользователя), они имеют разные иконки, но это никак не влияет на их функциональность или предпочтительность использования.

    +

    Очистить форматирование колонок таблицы

    +

    Преобразовать в колонки со значениями-переходами

    +

    Определить права текущего пользователя

    +

    Определить роли текущего пользователя

    +

    Методические рекомендации по применению

    +

    Пошаговые инструкции по применению компонента в типовых задачах Вы можете найти в разделах:

    + +

    Часто задаваемые вопросы

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Вопрос Ответ
    Как задать ширину Таблицы? Для того, чтобы настроить ширину или высоту таблицы необходимо в Основных настройках - Расширенные настройки - Стили задать необходимые значения для настраиваемых параметров, например, Ширина 500px.
    Как задать ширину колонок в процентах? Для задания ширины колонок в процентах необходимо выставить нужный процент в поле width и поставить галочку “Автоматически выравнивать по ширине” (autoStretchColumns)
    Как скрыть колонку Таблицы? Для того, чтобы скрыть колонку таблицы можно снять флажок с параметра колонки “Скрытое” в Диспетчере компоненты, либо установить ширину колонки в значение 0px (параметр “Ширина” колонки в Диспетчере компоненты)
    Можно ли поменять порядок отображаемых колонок в Таблице? Для того, чтобы изменить порядок колонок в Таблице необходимо в свойстве Настроить колонки таблицы - Колонки нажать правой кнопкой мыши на «Элемент» и выбрать предложенные варианты: Переместить наверх - Переместить вниз - Удалить элемент
    Как изменить формат отображения данных в колонке Таблицы? В случае, если необходимо изменить формат отображения значений в колонке Таблицы необходимо при настройке колонки применить Форматтер. Например, подгружаемое значение в колонку имеет тип данных Дата и Время(DateTime), но на странице пользовательского приложения необходимо отображать значение в колонке без Времени, только Дату. В таком случае, целесообразно использовать форматтер DateFormatter, который отобразит значение колонки в нужном виде. Но при этом предварительно необходимо применить к Таблице функцию Очистить форматирование колонок таблицы, указав наименование настраиваемой колонки.
    Можно ли изменить цветовое оформление Таблицы? Да, можно. Цветовым оформлением Таблицы можно управлять с помощью CSS-стилей, задаваемых в Основных параметрах - Расширенные настройки - CSS классы
    Как автоматически вывести сумму значений по колонке в Таблицу? Для того, чтобы на странице отобразилась сумма значений по колонке, необходимо при настройке колонки выбрать Агрегирующую функцию - Сумма, после чего в Таблице автоматически отобразится зафиксированная (положение не будет изменяться при прокрутке записей) результирующая строка в Таблице. При этом строка будет выделена отличным от других записей в таблице цветом и значение в результирующем поле будет динамически изменяться по мере заполнения колонки (выбранной в качестве источника данных) новыми значениями в таблице базы данных. С описанием настройки колонок в Таблице можно ознакомиться в разделе: Настройка колонок Таблицы
    При выборе записи в основной Таблице в зависимой Таблице (с настроенным режимом «Зависит от»)**отображаются некорректные записи. В чем ошибка? В данном случае, некорректна указана колонка связи между зависимой и основной Таблицами. С описанием настройки связанных Таблиц можно ознакомиться в разделе: Как добавить связанные Таблицы на страницу?
    Как настроить возможность многострочного выбора записей в Таблице? Для того, чтобы настроить многострочный выбор (одновременный выбор нескольких) записей в Таблице необходимо в разделе Таблица. Задействовать режим выбора нескольких строк установить свойство Допустимо выбрать несколько строк в значение(истина).
    Можно ли задать автоматическую нумерацию строк (записей) в Таблице? Да, можно. Для этого необходимо в настраиваемых параметрах Таблицы перейти к свойству Таблица. Основные параметры - Показывать номер строки и привести его в значение(истина).
    Колонка в шапке таблицы имеет странное наименование. Как исправить? Такая ситуация возникает в том случае, если не было задано значение значение параметра “Наименование” в диспетчере компоненты при создании колонки и ей было присвоено название по умолчанию в формате “название таблицы:название колонки”.
    Как поменять порядок следования столбцов таблицы в диспетчере компоненты? Вызвать контекстное меню на надписи Элемент и выбрать соответствующий пункт.
    Как отобразить доступный для понимания вариант адреса, если в колонке базы данных он задан идентификатором guid_fias? Необходимо вручную настроить параметр “Форматирование” в Диспетчере компоненты.
    +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/grids/Таблица_с_постраничным_отображением.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/grids/Таблица_с_постраничным_отображением.html new file mode 100644 index 0000000..cbd952a --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/grids/Таблица_с_постраничным_отображением.html @@ -0,0 +1,187 @@ + + + + + + + + Web-BPM Docs – Таблица с постраничным отображением + + + + + + +
    +
    + + + +
    +
    +

    Таблица с постраничным отображением

    +

    Назначение

    +

    Таблица с постраничным отображением - это компонента, которая используется для отображения информации из базы данных в табличном виде с возможностью сортировки записей в нужном порядке и постраничным просмотром (переключением) записей.

    +

    Компонента Таблица с постраничным отображением находится в разделе Компоненты - Таблицы - Таблица с постраничным отображением (рис.1)

    +

    Свойства

    +

    Компонента имеет набор общих свойств.

    + + + + + + + + + + + + + + + + + + + + + + +
    Наименование свойства Назначение свойства Принимаемые значения
    Показывать номер строки позволяет задать автоматическую нумерацию строк +
      +
    • значение не определено - по умолчанию
    • +
    • Активно - отображать нумерацию строк
    • +
    • Не активно - не отображать нумерацию строк
    Зависит от позволяет указать объект (родителя), по идентификатору которого будут отображаться сведения в текущей Таблице; задаётся в случае необходимости связать Таблицу с другой компонентой, например, Выпадающий список или Таблицей
    Row click selection type позволяет задать поведение выбора строк при клике на строку Таблицы +
      +
    • SINGLE_SELECT_CLICK – при клике на строку предыдущие выбранные строки сбрасываются, если не была зажата клавиша Ctrl или Shift- данный метод выбран по умолчанию
    • +
    • MULTI_SELECT_CLICK– при каждом клике на строку не сбрасываются предыдущие выбранные строки. Например, если вы кликнули на одну строку, а затем на другую, то первая строка останется выбранной. В этом случае клик по уже выбранной строке снимает выделение (deselect). Эта настройка полезна для touch-устройств, у которых нет клавиш Ctrl или Shift.
    • +
    • SUPPRESS_SELECT_CLICK– сроки не будут выбираться при клике. Например, если вы хотите выбирать строки только при нажатии на чекбокс.
    +

    Свойство компоненты: Таблица. Задействовать режим выбора нескольких строк

    + + + + + + + + + + + + + + + + + + +
    Наименование свойства Назначение свойства Принимаемые значения
    Допустимо выбрать несколько строк позволяет задать возможность единовременного выбора одной или нескольких записей в Таблице; выбранные строки окрашиваются в отличный от других строк цвет +
      +
    • возможность выбора сразу нескольких или одной строки
    • +
    • возможность выбора одной строки - значение по умолчанию
    Колонка “Флагов” позволяет поставить отметку в виде флажка на тех записях, которые выбраны пользователем в рамках работы с компонентой Таблица +
      +
    • значение не определено - значение по умолчанию
    • +
    • Активно - отображать колонку флагов
    • +
    • Не активно - не отображать колонку флагов
    +

    Свойство компоненты: Таблица с постраничным отображением.

    + + + + + + + + + + + + + + + + + + +
    Наименование свойства Назначение свойства Принимаемые значения
    Показать строки по умолчанию позволяет задать количество записей отображаемых на каждой странице компоненты по умолчанию *пример возможного значения:*20 - значение по умолчанию
    Выдавать по <…> строк на странице список всех доступных пользователю вариантов количеств отображаемых строк на одной странице компоненты, которые он может выбрать в запущенном приложении пример возможного значения: 10, 20, 30 - значение по умолчанию
    +

    Свойство компоненты: Таблица с постраничным отображением. Подгрузка данных

    +

    +

    позволяет задать граф сущностей для подгрузки значений в Таблицу из базы данных. Является обязательным к заполнению и настройке.

    +

    Сущность - это объект с которым работают в графе. В качестве объекта могут быть: таблицы и представления (вью) из базы данных. Понятие сущности не равно понятию таблицы, поскольку одна таблица может быть добавлена в граф несколько раз.

    +

    с описанием настройки Графа сущностей для Таблицы можно ознакомиться в разделе: Настройка Графа сущностей

    +

    +

    позволяет указать колонку настраиваемой Таблицы, которая обеспечивает связь текущей компоненты с компонентой заданной в параметре “Зависит от”

    +

    Свойство компоненты: Таблица. Настроить колонки таблицы

    +

    +

    позволяет настроить отображаемые колонки в Таблице с сортировкой записей по конкретному порядку

    +

    с описанием настройки Колонок Таблицы можно ознакомиться в разделе: Настройка колонок Таблицы

    +

    Функции

    +

    В ходе настройки свойств компоненты (заданных по умолчанию) может оказаться недостаточно для выполнения поставленной задачи и получения необходимого результата.

    +

    Для каждой компоненты предусмотрен перечень функций, расширяющих её базовую функциональность, которые можно добавить нажатием кнопки Добавить скрипт.

    +

    Вследствие технических особенностей реализации функций (функции, которые выполняются удаленно на сервере приложений, функции, которые выполняются в браузере пользователя), они имеют разные иконки, но это никак не влияет на их функциональность или предпочтительность использования.

    +

    Определить роли текущего пользователя

    +

    Определить права текущего пользователя

    +

    Очистить форматирование колонок таблицы

    +

    Преобразовать в колонки со значениями-переходами

    +

    Методические рекомендации по применению

    +

    Пошаговые инструкции по применению компонента в типовых задачах Вы можете найти в разделах:

    + +

    Часто задаваемые вопросы

    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Вопрос Ответ
    В чем заключается различие между Таблицей с постраничным отображением и Единственное отличие заключается в том, что Таблица с постраничнымотображением функционально имеет возможность постраничного просмотра записей (с переключением).
    Можно ли изменить цветовое оформление Таблицы с постраничным отображением? Да. Цветовым оформлением Таблицы можно управлять с помощью CSS-стилей, задаваемых в **Основных параметрах - Расширенные настройки - CSS классы
    Как задать ширину или высоту Таблицы с постраничным отображением Для того, чтобы настроить ширину или высоту таблицы необходимо в Основных настройках - Расширенные настройки- Стили задать необходимые значения для настраиваемых параметров, например, Ширина 500px.
    Как изменить формат отображения данных в колонке Таблицы с постраничным отображением В случае, если необходимо изменить формат отображения значений в колонке Таблицы необходимо при настройке колонки применить Форматтер. Например, подгружаемое значение в колонку имеет тип данных Дата и Время(DateTime), но на странице пользовательского приложения необходимо отображать значение в колонке без Времени, только Дату. В таком случае, целесообразно использовать форматтер DateFormatter, который отобразит значение колонки в нужном виде. Но при этом предварительно необходимо применить к Таблице функцию Очистить форматирование колонок таблицы, указав наименование настраиваемой колонки.
    Можно ли поменять порядок отображаемых колонок в Таблице с постраничным отображением Для того, чтобы изменить порядок колонок в Таблице необходимо в свойствеНастроить колонки таблицы - Колонкинажать правой кнопкой мыши на«Элемент»ивыбрать предложенные варианты: Переместить наверх - Переместить вниз - Удалить элемент
    Как настроить возможность многострочного выбора записей в Таблице с постраничным отображением? Для того, чтобы настроить многострочный выбор (одновременный выбор нескольких) записей в Таблице необходимо в разделе Таблица. Задействовать режим выбора нескольких строкустановить свойство Допустимо выбрать несколько строкв значение
    +
    +
    +
    +
    +
    +
    +

    © 2022 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/grids/Таблицы.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/grids/Таблицы.html new file mode 100644 index 0000000..193ddf7 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/grids/Таблицы.html @@ -0,0 +1,53 @@ + + + + + + + + Web-BPM Docs – Таблицы + + + + + + + +
    +
    +
    +
    +

    © 2022 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/index.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/index.html new file mode 100644 index 0000000..f5ed4cb --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/index.html @@ -0,0 +1,104 @@ + + + + + + + + Web-BPM Docs – Базовая библиотека компонент + + + + + + +
    +
    + + + +
    +
    +

    Базовая библиотека компонент

    +
    +

    Функции

    +

    В ходе настройки свойств компоненты (заданных по умолчанию) может оказаться недостаточно для выполнения поставленной задачи и получения необходимого результата.

    +

    Для каждой компоненты предусмотрен перечень функций, расширяющих её базовую функциональность, которые можно добавить нажатием кнопки Добавить скрипт

    +

    Вследствие технических особенностей реализации функций (

    +

    - функции, которые выполняются удаленно на сервере приложений,

    +

    - функции, которые выполняются в браузере пользователя), они имеют разные иконки, но это никак не влияет на их функциональность или предпочтительность использования.

    +

    Рекурсивно копировать составные объекты сложных компонент

    +

    TODO: описать

    +

    Определить права текущего пользователя

    +

    Определить права текущего пользователя

    +

    Определить роли текущего пользователя

    +

    Определить роли текущего пользователя

    +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/uncategorized/AC._Методы-объектов-страницы.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/uncategorized/AC._Методы-объектов-страницы.html new file mode 100644 index 0000000..f53f80e --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/uncategorized/AC._Методы-объектов-страницы.html @@ -0,0 +1,83 @@ + + + + + + + + Web-BPM Docs – + + + + + + +
    +
    + + + +
    +
    +

    У каждого компонента есть набор методов, которые используются в ActionController.

    +

    Общие для всех компонентов методы представлены в следующей таблице:

    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Метод Значение
    setEnabled установить активность компонента
    isEnabled проверка на активность компонента
    setTooltip задать текст всплывающей подсказки
    getTooltip получить текст всплывающей подсказки
    setVisible установить видимость компонента
    isVisible проверка на видимость компонента
    +

    Также для каждого компонента существуют свои собственные, характерные только для него, методы.

    +

    Названия этих методов формируются по общему правилу:

    +

    метод называется set + свойство компонента. Например свойство значение (value), тогда для того, чтобы задать значение необходимо выбрать метод setValue.

    +

    Аналогично, с get методами.

    +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/uncategorized/ConditionOperation.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/uncategorized/ConditionOperation.html new file mode 100644 index 0000000..07b662f --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/uncategorized/ConditionOperation.html @@ -0,0 +1,108 @@ + + + + + + + + Web-BPM Docs – + + + + + + +
    +
    + + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OperationSimpleArray
    EQUALS SIMPLE.EQUALS(VALUE) ARRAY.EQUALS(VALUE) ALL ELEMENTS IN ARRAY
    NOT_EQUALS !SIMPLE.EQUALS(VALUE) !ARRAY.EQUALS(VALUE) ALL ELEMENTS IN ARRAY
    IS_EMPTY SIMPLE.IS_EMPTY() ARRAY.IS_EMPTY()
    IS_NOT_EMPTY !SIMPLE.IS_EMPTY() !ARRAY.IS_EMPTY()
    LESS_THAN SIMPLE.LESS_THAN(VALUE) ARRAY.LESS_THAN(VALUE) ALL ELEMENTS IN ARRAY
    LESS_THAN_OR_EQUAL LESS_THAN_OR_EQUAL(SIMPLE) LESS_THAN_OR_EQUAL(ARRAY) ALL ELEMENTS IN ARRAY
    GREATER_THAN SIMPLE.GREATER_THAN(VALUE) ARRAY.GREATER_THAN(VALUE) ALL ELEMENTS IN ARRAY
    GREATER_THAN_OR_EQUAL SIMPLE.GREATER_THAN_OR_EQUAL(VALUE) ARRAY.GREATER_THAN_OR_EQUAL(VALUE) ALL ELEMENTS IN ARRAY
    CONTAINS SIMPLE.CONTAINS(VALUE) ARRAY.CONTAINS(VALUE) === ELEMENT_X.EQUALS(VALUE)
    DOES_NOT_CONTAIN !SIMPLE.CONTAINS(VALUE) !ARRAY.CONTAINS(VALUE) === !ELEMENT_X.EQUALS(VALUE)
    STARTS_WITH SIMPLE.STARTS_WITH ARRAY.START_WITH(VALUE) ALL ELEMENTS IN ARRAY
    DOES_NOT_STARTS_WITH DOES_NOT_STARTS_WITH !ARRAY.START_WITH(VALUE) ALL ELEMENTS IN ARRAY
    +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/uncategorized/EventCalendar.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/uncategorized/EventCalendar.html new file mode 100644 index 0000000..b2d4290 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/uncategorized/EventCalendar.html @@ -0,0 +1,359 @@ + + + + + + + + Web-BPM Docs – EventCalendar + + + + + + +
    +
    + + + +
    +
    +

    EventCalendar

    +

    Назначение

    +

    Компонента позволяет размещать календарь на странице и отображать в нем события разных типов в виде цветных маркеров.

    +

    Описание

    +

    В календаре отображаются события разных типов в виде цветных точек, расположенных в ячейках дня в представлении по месяцам, или в виде списка в представлениях по дням или неделям.
    +При представлении в виде месяца, при клике на ячейку дня раскрывается список событий.
    +Для каждого типа событий аналитик может настроить идентификатор типа, его название, цвета отображения в календаре, конфигурацию поиска данных в базе данных.
    +Поиск событий может осуществляться 2-мя способами: - поиском по графу с заданием набора тип + колонки - поиском при помощи кастомных сервисов с указанием типа

    +

    Если типы событий не заданы, события выделяются цветом по умолчанию. Поиск при этом происходит по всем наборам.

    +

    Параметры настройки

    +

    В компоненте 2 основных скрипта: - EventCalendar.ts - EventCalendarRpcService.java

    +

    EventCalendar.ts

    +

    Унаследованные свойства компоненты: набор свойств Control.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Наименование Назначение Примечание
    1 Event Color Types Определять тип события, его название и цвета, которыми помечаются события в календаре. Необязательная настройка
    Типы событий
    1.1 Event Type Идентификатор типа подгружаемых событий. Задается аналитиком.
    тип события
    1.2 Type Label Название типа подгружаемых событий. Начало заголовка события. Задается аналитиком.
    название типа события Необязательная настройка.
    1.3 Delimiter Разделитель столбцов в заголовке события. По умолчанию: " : ". Необязательная настройка.
    разделитель По умолчанию: " : ".
    1.4 Primary Цвет маркера события. Обязательный цвет
    цвет маркера
    1.5 Secondary Цвет фона события. Обязательный цвет
    цвет фона
    1.6 Secondary Text Цвет шрифта фона события.
    цвет текста фона
    2 Day Clicked Listeners Возможность назначать скрипты, выполняющие действия по клику на ячейку дня в представлении месяца.
    Действия по клику на день
    3 Event Clicked Listeners Возможность назначать скрипты, выполняющие действия по клику на событиев списке событий.
    Действия по клику на событие Эти же действия будут выполнены по клику на цветной маркер события.
    4 Selected Event Types Возможность задать список типов событий, по которым будет происходить поиск событий для календаря.
    Выбранные типы событий
    +

    EventCalendarRpcService.java

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Наименование Назначение Примечание
    1 Script Сервис загружающий данные. Первоначально выбран сервис по умолчанию.
    Сервис загрузки
    2 Load Dao Класс, назначенный по умолчанию. В нем настраивается граф таблиц базы данных. Настройка графа обязательна.
    Источник данных
    3 User Id Column Столбец базы данных из графа, привязанный к id пользователя. Необязательная настройка.
    Id пользователя
    4 Event Sources Настройка источников событий разных типов.
    Источники событий
    4.1 Event Type Идентификатор типа подгружаемых событий. Задается аналитиком.
    тип события Необязательная настройка.
    4.2 Event Id Column Столбец идентификатора подгружаемых событий. Необязательная настройка.
    идентификатор события
    4.3 Start Date Column Столбец даты начала события. Обязательная настройка.
    начало события
    4.4 End Date Column Столбец даты крнца события. Необязательная настройка.
    конец события
    4.5 Title Columns Набор столбцов, из которых формируется заголовок события. Необязательная настройка.
    заголовок события
    5 Service Types Настройка сервисов для поиска событий разных типов. Необязательная настройка
    Настраиваемые сервисы Сервисы пишутся разработчиком.
    5.1 Event Type Идентификатор типа подгружаемых событий. Задается аналитиком.
    тип события Необязательная настройка.
    5.2 Event Service Подключаемый сервис. (Пишется разработчиком.)
    подключаемый сервис
    +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/uncategorized/HyperLink.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/uncategorized/HyperLink.html new file mode 100644 index 0000000..d53a518 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/uncategorized/HyperLink.html @@ -0,0 +1,80 @@ + + + + + + + + Web-BPM Docs – HyperLink + + + + + + +
    +
    + + + +
    +
    +

    HyperLink

    +

    Назначение

    +

    HyperLink - компонента для отображение ссылки.

    +

    Свойства

    +

    Компонента имеет набор общих свойств. Ниже отображены свойства, специфичные только для данной компоненты.

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    Наименование свойства Назначение свойства Принимаемые значения
    URL Ссылка. Может содержать выражения ${your-parameter}, которые будут заменяться. Для этого необходимо указать Parameter Providers.
    Text Текст ссылки
    Is Absolute Является ли ссылкой относительной или абсолютной
    Open In New Tab Открыть ссылку в отдельной вкладке
    Parameter providers Определяет ссылки на объекты и метод для получения значения.
    +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/uncategorized/IFrame.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/uncategorized/IFrame.html new file mode 100644 index 0000000..eb96fb6 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/uncategorized/IFrame.html @@ -0,0 +1,98 @@ + + + + + + + + Web-BPM Docs – IFrame + + + + + + +
    +
    + + + +
    +
    +

    IFrame

    +

    Назначение компонента

    +

    Компонент IFrame позволяет создавать ссылки на странице(page) во фрейме.

    +

    Настройка компонента

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Наименование Назначение Значение по умолчанию
    visible задаёт видимость компоненты true
    disabled задаёт редактируемость компоненты false
    tooltip задаёт текст всплывающей подсказки, которая появляется при наведении курсора на элемент
    cssClasses список CSS классов (см. раздел Дизайн)
    style список основных свойств: +
      +
    • padding (необходимо указывать единицы измерения)
    • +
    • margin (необходимо указывать единицы измерения). См. http://htmlbook.ru/css/margin. Например для задания отступа справа на 50px необходимо задать значение 0px 50px 0px 0px
    • +
    • border - задает размер, цвет и стиль рамки. Например “20px solid red”. Подробнее http://htmlbook.ru/css/border
    • +
    • height - задает высоту компонента
    • +
    • width - задает ширину компонента
    • +
    • minHeight - задает минимальную высоту компонента
    • +
    • minWidth - задает минимальную ширину компонента
    • +
    • maxHeight - задает максимальную высоту компонента
    • +
    • maxWidth - задает максимальную ширину компонента.
    source задает ссылку
    +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/uncategorized/InnerHtml.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/uncategorized/InnerHtml.html new file mode 100644 index 0000000..451c78a --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/uncategorized/InnerHtml.html @@ -0,0 +1,69 @@ + + + + + + + + Web-BPM Docs – InnerHtml + + + + + + +
    +
    + + + +
    +
    +

    InnerHtml

    +

    Назначение

    +

    InnerHtml - компонента для вставки HTML кода.

    +

    Свойства

    +

    Компонента имеет набор общих свойств. Ниже отображены свойства, специфичные только для данной компоненты.

    + + + + + + + + + + + + + + +
    Наименование свойства Назначение свойства Принимаемые значения
    htmlAsString HTML код
    +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/uncategorized/Menu.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/uncategorized/Menu.html new file mode 100644 index 0000000..4752453 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/uncategorized/Menu.html @@ -0,0 +1,100 @@ + + + + + + + + Web-BPM Docs – + + + + + + +
    +
    + + + +
    +
    +

    Компонент Menu предназначен для отображения иерархии элементов, навигации по процессам, расчету метрик по пунктам.

    +

    Настройка компоненты: * накидывается на каждую страницу, где должен отображаться * элементы добавляются/редактируются в разделе “Меню. Настройка элементов”

    +

    Описание элементов:

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Наименование Назначение Значение по умолчанию
    items Массив элементов 0
    Name Наименование элемента
    is Group Задать элемент группой, выделяется жирным шрифтом и не содержит метрику. false
    Has Metric Необходимость вычислить метрику для элемента false
    Business Process To Start Выбрать процесс, который нужно запустить при нажатии на соответствующий пункт меню
    Dao Выбрать граф сущностей для вычисления метрики
    Aggregation Column Выбор таблицы и колонки, по которой нужна агрегация
    Aggregation Function Выбор агрегирующей функции
    +
      + +
    • компонент отрисовывается в виде дерева с элементами
    • +
    • по нажатию на элемент, для которых задан Business Process To Start, происходит старт указанного процесса
    • +
    +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/uncategorized/MenuGroup.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/uncategorized/MenuGroup.html new file mode 100644 index 0000000..e3d7187 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/uncategorized/MenuGroup.html @@ -0,0 +1,75 @@ + + + + + + + + Web-BPM Docs – + + + + + + +
    +
    + + + +
    +
    +

    Компонент MenuGroup является контейнером предназначеным для отображения иерархии элементов, навигации по процессам, расчету метрик по пунктам.

    +

    Настройка компоненты: * накидывается на каждую страницу, где должен отображаться * внутрь этой компоненты добавляются MenuItem для отображения конечного пункта меню * для подгрупп можно добавить ещё один MenuGroup внутрь текущей

    +

    Описание элементов:

    + + + + + + + + + + + + + + + + + + + + + + +
    Наименование Назначение Значение по умолчанию
    Name Наименование для заголовка группы
    Show Empty Metric Флаг, для отображения суммы метрик по элементам. Если задано false - то в случае если сумма равна нулю - метрика не будет показана false
    Subsidiary Aggregation Флаг для отображения суммы метрик, если false - то сумма по дочерним элементам высчитываться не будет false
    +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/uncategorized/MenuItem.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/uncategorized/MenuItem.html new file mode 100644 index 0000000..5e3291c --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/uncategorized/MenuItem.html @@ -0,0 +1,119 @@ + + + + + + + + Web-BPM Docs – + + + + + + +
    +
    + + + +
    +
    +

    Компонент MenuItem предназначен для отображения конечного элемента в меню, навигации по процессам, расчету метрик по пунктам.

    +

    Настройка компоненты: * накидывается на строго на компоненту MenuGroup * элементы добавляются/редактируются в разделе “Меню.Настройка элементов”

    +

    Описание элементов:

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Наименование Назначение Значение по умолчанию
    Name Наименование элемента
    Has Metric Необходимость вычислить метрику для элемента false
    Custom Load Флаг для подгрузки метрики из кастомного запроса false
    Custom Dao Заполнение кастомного запроса с возможностью выбора переменных процесса
    Business Process To Start Выбрать процесс, который нужно запустить при нажатии на соответствующий пункт меню
    Dao Выбрать граф сущностей для вычисления метрики
    Aggregation Column Выбор таблицы и колонки, по которой нужна агрегация
    Aggregation Function Выбор агрегирующей функции
    Static Url Флаг для действия элемента, если true - открывает статичный URL false
    Process With Variables Выбор процесса для перехода
    Url URL для перехода
    Visible By Roles Список ролей который могут запустить процесс
    Advanced Properties - Additional Variables Здесь можно указать переменную процесса, значением которой будет значение выбранного объекта на форме. Эту переменную можно использовать в блоке Process with variables - Variables.
    +
      + +
    • по нажатию на элемент, для которых задан Business Process To Start, происходит старт указанного процесса
    • +
    +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/uncategorized/ValidationController.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/uncategorized/ValidationController.html new file mode 100644 index 0000000..d090e87 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/uncategorized/ValidationController.html @@ -0,0 +1,138 @@ + + + + + + + + Web-BPM Docs – ValidationController + + + + + + +
    +
    + + + +
    +
    +

    ValidationController

    +

    Назначение компонента

    +

    ValidationController – инструмент для построения проверок перед сохранением.

    +

    ValidationController срабатывает только в момент сохранения (по кнопке SaveButton на Form.

    +

    Настройка компонента

    +

    Настройка ValidationController включает в себя настройку следующих разделов:

    +
      + +
    • ЕСЛИ условия.
    • +
    • Уведомить реакция системы на выполнение всех условий из ЕСЛИ.
    • +
    +

    +

    Рассмотрим настройку каждого раздела:

    +

    ЕСЛИ

    +

    Этот раздел задает условия(проверки), при выполнении которых будет выполняться раздел Уведомить.

    +

    Условие задается:

    +
      + +
    • ссылкой на объект (на который мы накладываем наше условие):
    • +
    • проверка.
    • +
    +

    Есть возможность создавать группы условий, объединенных логическими операциями “И”, “ИЛИ”.

    +

    Уведомить

    +

    Этот раздел задает реакцию системы, в случае если условия из раздела ЕСЛИ выполнились:

    +

    Есть два типа уведомлений:

    +
      + +
    • + +

      **SYSTEM **– стандартное уведомление, с заданным текстом;

      +

      +
    • +
    • + +

      **CUSTOM **– уведомление, которое будет выведено в заданный компонент. Для примера, будем использовать вывод уведомления в компонент TextArea. Такой вывод происходит в два этапа:

      +
    • +
    • +
        + +
      • + +

        действие до – предварительные действия.
        +В нашем примере, компонент TextArea, в который будет выведено уведомление, необходимо предварительно очистить (присвоить пустое значение):
        +

        +
      • +
      • + +

        действие _–****_ действия, непосредственно связанные с выводом.
        +Осуществим вывод в TextArea:
        +

        +
      • +
      +
    • +
    +

    Пример настройки

    +

    Задача: На странице имеются два поля (ComboBox) и кнопка сохранения. Необходимо проверить на заполненность этих полей при сохранении.

    +

    +
      + +
    1. + +

      Добавляем все необходимые компоненты на страницу:

      +

      +

      Замечание

      +

      Обратите внимание, поля расположены в Form.

      +

      ValidationController расположен в Form.

      +
    2. +
    3. + +

      Настраиваем компонент Form (см. Настройка Grid), компоненты ComboBox, SaveButton.

      +
    4. +
    5. Настраиваем ValidationController: +
        + +
      1. Создаем Условие (ЕСЛИ), нажатием на кнопку . Условия в этом примере связаны логической операцией ИЛИ, т.к. необходимо проверить оба поля на пустоту (если поставим И - будет выдаваться сообщение только если оба поля будут пустыми).
      2. +
      3. К Условию привязываем объект для валидации - PersistingComboBox_country (необходимо проверять ComboBox, содержащий страны, на пустоту): +

      4. +
      5. Задаем проверку на пустоту (Если значение ComboBox пусто):
        +
      6. +
      7. Тоже самое для второго ComboBox, содержащего города:
        +
      8. +
      9. Задаем реакцию на выполненные условия (Уведомить):
        +из выпадающего списка выбираем SYSTEM - вывод простого системного сообщения:
        +
      10. +
      11. Зададим сообщение:
        +
      12. +
      +
    6. +
    +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/uncategorized/index.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/uncategorized/index.html new file mode 100644 index 0000000..e96ef8b --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/uncategorized/index.html @@ -0,0 +1,52 @@ + + + + + + + + Web-BPM Docs – Компоненты без категории + + + + + + +
    +
    + + + +
    +
    +

    Компоненты без категории

    +

    Компоненты - TODO Calendar - IFrame - ValidationController - Диаграмма - Диаграмма Гантта (Календарный план) - Календарь - Меню. Группа - Меню. Элемент - Обработка событий - HyperLink - InnerHtml

    +

    Функции - AC. Методы объектов страницы - Condition Operation

    +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/uncategorized/Диаграмма.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/uncategorized/Диаграмма.html new file mode 100644 index 0000000..059669b --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/uncategorized/Диаграмма.html @@ -0,0 +1,160 @@ + + + + + + + + Web-BPM Docs – Диаграмма + + + + + + +
    +
    + + + +
    +
    +

    Диаграмма

    +

    Диаграмма - это компонента, которая используется для визуализации агрегированных аналитических показателей, полученных в результате выполнения запроса к базе данных.

    +

    Представляет возможность графического отображения на web-странице предусмотренных аналитиком значений мер (measures) в виде диаграмм известных и наиболее распространенных типов на шкале измерений (dimensions). Предоставляет функциональность выбора типа диаграммы, ее легенды, отображения динамичных контекстных подсказок показателей, управление видимостью показателей из легенды.

    +

    Компонента Диаграмма находится в разделе Компоненты - Без категории - Диаграмма (рис.1)

    +

    Свойства

    +

    Компонента имеет набор общих свойств. Ниже отображены свойства, специфичные только для данной компоненты.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Наименование свойства Назначение свойства Принимаемые значения
    Тип диаграммы позволяет выбрать один из распространенных типов диаграммы
    Допустим выбор типа диаграммы определяет возможность изменения типа диаграммы пользователем “на-лету” во время работы на web-странице в запущенном приложении +
      +
    • значение не определено- по умолчанию
    • +
    • изменение типа диаграммы “на-лету” разрешено
    • +
    • изменение типа диаграммы “на-лету” запрещено
    Легенда предписывает компоненте отображать или скрывать легенду диаграммына web-странице в запущенном приложении +
      +
    • значение не определено- по умолчанию
    • +
    • отображение легенды диаграммы разрешено
    • +
    • отображение легенды диаграммы запрещено
    Позиционирование легенды устанавливает месторасположение легенды диаграммы
    Поле ограничения подгрузки позволяется указать числовое поле, значение которого будет ограничивать число загружаемых данных в диаграмме
    Показывать все значения по оси Х предписывает компоненте отображать все без исключения значения “измерений”, даже если “мера” под такое значение шкалы измерителя отсутствует (не может быть подсчитана). +
      +
    • значение не определено- по умолчанию
    • +
    • отображать все значения “измерений”
    • +
    • отображать только те значения “измерений”, для которых существует (может быть подсчитано) значение “меры”
    +

    Свойство компоненты: Диаграмма. Подгрузка данных

    +

    +

    позволяет задать *Граф сущностей *и взаимосвязи колонок для подгрузки данных в Диаграмму Является обязательным к заполнению и настройке.

    +

    Сущность - это объект с которым работают в графе. В качестве объекта могут быть: таблицы и представления (вью) из базы данных. Понятие сущности не равно понятию таблицы, поскольку одна таблица может быть добавлена в граф несколько раз.

    +

    Скрипт - указывается модуль, реализующий логику построения диаграммы. Установлен по умолчанию, внесение изменений аналитиком не требует

    +

    С описанием настройки Графа сущностей можно ознакомиться в разделе: Настройка Графа сущностей.

    +

    Свойство компоненты: Диаграмма. Настройка

    +

    +

    позволяет настроить отображаемые показатели в Диаграмме.

    +

    Формирование набора этих параметров вкупе со структуройсущности предписывают компоненте автоматически сформировать аналитический агрегирующий запрос, в котором определяется шкала измерений и перечисляются все меры и способ их подсчета.

    +

    Метка - показатель (таблица и колонка из структуры сущности), который будет выступать “измерением” (dimension) в Диаграмме.

    +

    Следует быть уверенным (убедиться), что в колонке значений, которые будут представлены на шкале в качестве измерений, нет ячеек с пустым значением

    +

    Метод агрегирования - не используется

    +

    Наборы данных - формируемый аналитиком список “мер” (measures)и способ их подсчета для отображения по шкале измерений.

    +

    Метка - наименование “меры”, которое будет отображаться во всплывающей подсказке в Диаграмме

    +

    Колонка - таблица и колонка, значения из которой будут обрабатываться в качестве “меры”

    +

    Метод агрегирования - операция по вычислению агрегата над значениями “меры”

    +

    +

    +

    Одним из результатов работы компоненты в приведенной конфигурации будет корректный sql-запрос вида:

    +

    {select “Проекты”.“name”, max(“Список задач”.“task_id”) as “Список задач.task_id”, sum(“Список задач”.“task_id”) as “Список задач.task_id”, count(“Список задач”.“task_id”) as “Список задач.task_id” from “public”.“projects” as “Проекты” left outer join “public”.“tasks” as “Список задач” on “Список задач”.“project_id” = “Проекты”.“project_id” group by “Проекты”.“name”}

    +

    что позволит визуализирвоать , например, столбчатую диаграмму в таком виде:

    +

    +

    на горизонтальной оси размещены “измерения” (наименования проектов), по вертикальной оси в виде столбиков откладываются 3 “меры” (показатели: сумма идентификаторов задач, количество идентификаторов задач, максимальное значение идентификатора задачи).

    +

    При наведении мыши на столбик отображается контекстная подсказка с указанием конкретного “измерения” и отображаемой “меры”, соответствующей высоте столбика.

    +

    Функции

    +

    Настройка фильтрации в таблице и графике для компоненты Диаграмма

    +

    Определить_роли_текущего_пользователя

    +

    Определить права текущего пользователя

    +

    Методические рекомендации по применению

    +

    Пошаговые инструкции по применению компонента в типовых задачах Вы можете найти в разделах:

    + +

    Часто задаваемые вопросы

    + + + + + + + + + + + + + + + + + + + + + +
    Вопрос Ответ
    Как сортируются “измерения” и “меры” в Диаграмме? Можно ли изменить порядок сортировки и следования внутри шкалы измерений и мер? В произвольном порядке. Изменить порядок сортировки (следования) нельзя.
    Можно ли вывести легенду? Да, можно.
    Можно ли после отрисовки страницы с диаграммой в приложении поменять ее тип? Да, можно, в специально предназначенном для этого элементе управления Диаграммой.
    Можно ли скрывать значения и визуальное представление “мер” на Диаграмме ? Да, можно. Клик мыши по наименованию “меры” в легенде диаграммы скрывает визуализацию этой “меры” на Диаграмме.
    +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/uncategorized/Диаграмма_chart-v2.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/uncategorized/Диаграмма_chart-v2.html new file mode 100644 index 0000000..7a6bc4b --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/uncategorized/Диаграмма_chart-v2.html @@ -0,0 +1,257 @@ + + + + + + + + Web-BPM Docs – Chart v2 + + + + + + +
    +
    + + + +
    +
    +

    Chart v2

    +

    Назначение

    +

    Chart v2 - отображение графиков.

    +

    Свойства

    +

    Компонента имеет набор общих свойств. Ниже отображены свойства, специфичные только для данной компоненты.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Наименование свойства Назначение свойства Принимаемые значения
    legendPosition Расположение описания графика. Если не задано, то описание не отображается ‘top’, ‘left’, ‘bottom’, ‘right’
    legendAlign Выравнивание описания графика ‘start’, ‘center’, ‘end’. По умолчанию ‘center’
    loadOnStart Загружать данные при инициализации true, false. По умолчанию - true
    chartType Тип графика. Для типов графиков LINE, BAR, HORIZONTAL_BAR задаётся dataSetServices, для типов PIE, DOUGHNUT задаётся dataSetService LINE, PIE, DOUGHNUT, BAR, HORIZONTAL_BAR
    datasetType Тип подгрузки данных: с агрегацией (AGGREGATION) или нет (STATIC) STATIC, AGGREGATION
    chartType Подтип графика. Сценарий использования - необходимо отобразить столбчатую диаграмму внутри линейной. Основной тип - линейная, подтип - столбчатая LINE, BAR, HORIZONTAL_BAR
    scales Шкалы. По умолчанию шкала по Х и шкала по У создаётся автоматически. Необходимо задавать, если нужно отобразить более 1 шкалы.
    Scale.ScaleId Идентификатор шкалы
    Scale.Position Расположение шкалы
    Scale.Display Отображать или нет шкалу
    Scale.Type TODO:
    Scale.BeginAtZero TODO:
    Scale.Stacked TODO:
    Scale.GridSettings.DrawOnChartArea TODO:
    Scale.TickFormatter Форматирование шкалы TickFormatter
    dataLabel
    dataColumn Колонка с данными
    dataColumnFormatter Тип форматирование данных
    labelColumn Колонка с подписью данных
    labelColumnFormatter Тип форматирование подписи
    backgroundColor Цвет фона
    borderColor Цвет границы
    xAxesId идентификатор шкалы Х. Идентификаторы задаются в scales
    yAxesId идентификатор шкалы У. Идентификаторы задаются в scales
    tension Сглаживание данных. 0 - без сглаживания
    columnSorts Колонки для сортировки данных
    aggregationDataSet.aggregationFunction Функция агрегации. Задаётся только в aggregationDataSet MIN, MAX, AVG, COUNT, SUM
    aggregationDataSet.groupByColumns Колонки группировки. Задаётся только в aggregationDataSet
    hoverRadius Размер точки при наведении
    hoverBackgroundColor Цвет точки при наведении
    noDataText Текст для вывода сообщения на графике при отсутствии данных ‘Нет данных для отображения’
    noDataFont Шрифт текста сообщения ‘20px Arial’
    noDataStyle Стиль текста сообщения ‘rgb(100,100,100)’
    +

    TickFormatter

    +

    Назначение

    +

    Для настройки шкал в ChartV2 есть возможность выбрать TickFormatter, с помощью которого на клиентской части можно настраивать отображение данных в шкале.

    +

    Свойства

    + + + + + + + + + + + + + + +
    Наименование свойства Назначение свойства Принимаемые значения
    Script Форматирование исходных данных для корректного отображения. Форматирование будет применяться к значению шкалы. Принимает один из возможных форматеров (см. раздел Tick Formatters ниже).
    +

    Tick Formatters

    + + + + + + + + + + + + + + + + + + +
    Наименование форматера Назначение форматера Настраиваемые значения
    SuffixFormatter Добавляет до и после значения заданные префикс и суффикс. Prefix, Postfix.
    NumberSuffixFormatter Добавляет до и после значения заданные префикс и суффикс, форматирует число по заданным критериям. Prefix, Postfix, Decimal Delimiter, Decimal Length, Sections Delimiter, Sections Length.
    +

    ChartV2AdditionalElementProvider

    +

    В компоненту ChartV2 есть возможность добавить скрипт, который будет отрисовывать на графике любые дополнительные элементы (напр. количество скрытых дней при нажатии на кнопку “скрыть все”).

    +

    Для того чтобы создать скрипт, необходимо отнаследоваться от класса ChartV2AdditionalElementProvider и реализовать метод addAdditionalElement();

    +

    Прим. реализации, которая добавляет надпись.

    + +
    +
    addAdditionalElement(chartV2: ChartV2): void {
    +  let chart = chartV2.chart;
    +  let ctx = chart.ctx;
    +  let width = chart.width;
    +  let height = chart.height;
    +  ctx.textAlign = "center";
    +  ctx.textBaseline = "middle";
    +  ctx.font = this.font;
    +  ctx.fillStyle = this.style;
    +  ctx.fillText("Some text", width / 2, height / 2);
    +  ctx.restore();
    +  }
    +}
    +
    +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/uncategorized/Диаграмма_Гантта_Календарный_план_.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/uncategorized/Диаграмма_Гантта_Календарный_план_.html new file mode 100644 index 0000000..b76ad2c --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/uncategorized/Диаграмма_Гантта_Календарный_план_.html @@ -0,0 +1,152 @@ + + + + + + + + Web-BPM Docs – Диаграмма Гантта (Календарный план) + + + + + + +
    +
    + + + +
    +
    +

    Диаграмма Гантта (Календарный план)

    +

    Диаграмма Гантта (Календарный план) - это компонента, которая используется для иллюстрации плана, графика работ по проекту, визуально показывая пользователю состав работ по проекту, их взаимосвязь и расположение по шкале времени (также известна под названием Диаграммы Гантта)

    +

    Представляет собой отрезки, размещенные на горизонтальной шкале времени. Каждый отрезок соответствует какой-либо задаче. Список задач, составляющих такой план, размещаются по вертикальной шкале. Начало, конец и ширина отрезка на шкале времени соответствуют началу, концу и длительности задачи.

    +

    Компонента Календарный график находится в разделе Компоненты - Без категории - Диаграмма Гантта (рис.1)

    +

    Свойства

    +

    Компонента имеет набор общих свойств.

    +

    Свойство компоненты: Диаграмма Гантта. Подгрузка данных

    +

    +

    позволяет задать Граф сущностей и взаимосвязи колонок для подгрузки данных в Диаграмму Гантта

    +

    Является обязательным к заполнению и настройке.

    +

    Сущность - это объект с которым работают в графе. В качестве объекта могут быть: таблицы и представления (вью) из базы данных. Понятие сущности не равно понятию таблицы, поскольку одна таблица может быть добавлена в граф несколько раз.

    +
      + +
    • + +

      Скрипт - указывается модуль, реализующий логику построения календарного графика. Установлен по умолчанию, внесение изменений аналитиком не требует

      +
    • +
    • + +

      Колонка с идентификатором задач - это колонка главной сущности графа, которая содержит первичный ключ (как правило, идентификатор задачи)

      +
    • +
    • + +

      Колонка с наименованием задач - это колонка той сущности графа, которая содержит наименование задачи для отображения пользователю (как правило, в колонке должно находиться текстовое значение)

      +
    • +
    • + +

      Колонка с датой старта задач - это колонка той сущности графа, которая содержит дату, в которую запланирован старт задачи

      +
    • +
    • + +

      Колонка с датой завершения задач - это колонка той сущности графа, которая содержит дату, в которую запланировано завершение работ по задаче

      +
    • +
    • + +

      Колонка гл. сущн. с идентификатором родительской задачи - это колонка главной сущности графа, которая содержит значение первичного ключа родительской задачи

      +
    • +
    • + +

      Колонка линк. табл. с идентификатором осн. задачи - это колонка линковой таблицы графа сущности, которая содержит значение первичного ключа основной задачи

      +
    • +
    • + +

      Колонка линк. табл. с идентификаторами зависимых задач - это колонка линковой таблицы графа сущности, которая содержит значения первичных ключей тех задач, которые зависят от основной

      +
    • +
    • + +

      Колонка co статусом задач - это колонка той сущности графа, которая содержит формализованное значение статуса задачи:

      +
    • +
    • + +

      “ASSIGNED” - Назначена (заливка бирюзовым цветом)

      +
    • +
    • + +

      “CHECKING” - Требует контроля (заливка желтым цветом)

      +
    • +
    • + +

      “COMPLETED” - Завершена (заливка зеленым цветом)

      +
    • +
    • + +

      “ARCHIVED” - Перемещена в архив (заливка серым цветом)

      +
    • +
    +

    с описанием настройки Графа сущностей можно ознакомиться в разделе: Настройка Графа сущностей

    +

    Свойство компоненты: Диаграмма Гантта. Настройка колонок

    +

    +

    позволяет настроить отображаемые колонки в Диаграмме Гантта с сортировкой данных по конкретному порядку

    +

    с описанием настройки Колонок Таблицы можно ознакомиться в разделе: Настройка колонок Таблицы

    +

    Функции

    +

    Определить_роли_текущего_пользователя

    +

    Определить права текущего пользователя

    +

    Методические рекомендации по применению

    +

    Пошаговые инструкции по применению компонента в типовых задачах Вы можете найти в разделах:

    + +

    Часто задаваемые вопросы

    + + + + + + + + + + + + + + + + + + + + + +
    Вопрос Ответ
    Как сортируются задачи в Диаграмме Гантта? Задачи сортируются по возрастанию значений колонки дата завершения (от самых близких по сроку завершения к самым дальним). Изменить порядок сортировки нельзя.
    Можно ли вывести легенду цветовой дифференциации задач? Нет, нельзя.
    Можно ли на самой диаграмме Гантта изменять продолжительность задачи (сдвигать моменты начала и/или конца) ? Нет, нельзя.
    Можно ли на самой диаграмме Гантта сдвинуть задачу целиком по оси времени, не меняя продолжительности задачи (перетянуть как объект)? Нет, нельзя.
    +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/uncategorized/Как_задействовать_компоненту_Диаграмма_Гантта_Календарный_план_на_странице_.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/uncategorized/Как_задействовать_компоненту_Диаграмма_Гантта_Календарный_план_на_странице_.html new file mode 100644 index 0000000..db61391 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/uncategorized/Как_задействовать_компоненту_Диаграмма_Гантта_Календарный_план_на_странице_.html @@ -0,0 +1,141 @@ + + + + + + + + Web-BPM Docs – Как задействовать компоненту Диаграмма Гантта (Календарный план) на странице? + + + + + + +
    +
    + + + +
    +
    +

    Как задействовать компоненту “Диаграмма Гантта (Календарный план)” на странице?

    +

    Постановка задачи: на пользовательской странице Реестр задач необходимо визуализировать список задач по проекту в виде Календарного плана (Диаграммы Гантта).

    +

    Страница “Реестр задач” должна иметь следующие настройки:

    +
      + +
    • основным элементом страницы должна быть компонента “Диаграмма Гантта (Календарный план)”, в главной сущностью которойдолжна быть назначена таблица “Список задач” (tasks).
    • +
    • необходимо задействовать компоненту Набор фильтров с включенной “живой фильтрацией” и с вложенной в Набор фильтров дочерней компонентой “Фильтр по полю ввода с подбором значения” для указания проекта , по которому следует осуществить отбор записей из списка задач.
    • +
    +

    Решение задачи:

    +

    Предполагается, что страница Реестр задач уже создана бизнес-аналитиком, расположена в проекте и связана с Пользовательской задачей на BPMN-схеме процесса . Для решения поставленной задачи необходимо произвести следующие действия:

    +
      + +
    • добавить внутрь страницы компоненту “Диаграмма Гантта”
    • +
    • в настройках добавленной компоненты перейти к разделу Диаграмма Гантта. Подгрузка данных основная - Источник данных - Граф сущностей и настроить его (рис. 1, рис. 2).
    • +
    +

    Для этого сформировать пул таблиц, колонки из которых будут использоваться при настройке отображаемой в Диаграмме Гантта информации и указать связи между ними.

    +

    + +
    +
    рис.1 Настройка Графа сущностей компоненты
    +
    + +

    Настроить прочие параметры компоненты"Диаграмма Гантта", указав на сущности и колонки, содержащие требуемую информацию.

    +

    + +
    +
    рис.2 Настройка компоненты
    +
    + +
      + +
    • добавить компоненту Набор фильтров с включенной “живой фильтрацией” (рис.4)
    • +
    +

    + +
    +
    рис.4 Добавление Компонента Набор фильтра и его связь с компонентой Диаграмма Гантта
    +
    + +
      + +
    • добавить компоненту Фильтр по полю ввода с подбором значения (рис.5) +

      рис. 5а Настройка компоненты Фильтр по полю ввода с подбором значения

    • +
    +

    + +
    +
    Рис. 5б Настройка компоненты Фильтр по полю ввода с подбором
    +значения
    +
    + +

    + +
    +
    рис. 5в Настройка компоненты Фильтр по полю ввода с подбором значения
    +
    + +

    На этом настройка компоненты закончена, запускаем приложение.

    +

    Результат выполнения задачи:

    +

    После применения изменений на странице, в экранной форме пользовательского приложения, мы видим, что условия задачи соблюдены (рис. 6)

    +

    +

    Для большей детализации компонент дает возможность изменить масштаб временного промежутка в котором отображается длительность задачи :

    +

    +

    рис.6. Визуальное отображение выполнения условий задачи

    + +
    +
    +

    Attachments:

    +
    + + +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/uncategorized/Как_задействовать_компоненту_Диаграмма_на_странице_.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/uncategorized/Как_задействовать_компоненту_Диаграмма_на_странице_.html new file mode 100644 index 0000000..064d911 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/uncategorized/Как_задействовать_компоненту_Диаграмма_на_странице_.html @@ -0,0 +1,163 @@ + + + + + + + + Web-BPM Docs – Как задействовать компоненту Диаграмма на странице? + + + + + + +
    +
    + + + +
    +
    +

    Как задействовать компоненту “Диаграмма” на странице?

    +

    Постановка задачи: на пользовательской странице Реестр задач необходимо визуализировать количество задач по каждому из проектов в виде Диаграммы, вид которой можно менять динамически .

    +

    Страница “Реестр задач” должна иметь следующие настройки:

    +
      + +
    • основным элементом страницы должна быть компонента “Диаграмма”, главной сущностьюкоторойдолжна быть назначена таблица “Список задач” (tasks).
    • +
    • необходимо задействовать компоненту Набор фильтров с включенной “живой фильтрацией” и с вложенной в Набор фильтров дочерней компонентой “Фильтр по полю ввода с подбором значения” для указания проекта , по которому следует осуществить отбор записей из списка задач.
    • +
    +

    Решение задачи:

    +

    Предполагается, что страница Реестр задач уже создана бизнес-аналитиком, расположена в проекте и связана с Пользовательской задачей на BPMN-схеме процесса . Для решения поставленной задачи необходимо произвести следующие действия:

    +
      + +
    • добавить внутрь страницы компоненту"Диаграмма"
    • +
    • в настройках добавленнойкомпонентыперейти к раздел у Диаграмма .Подгрузка данных - Источник данных - Граф сущностей и настроить его (рис. 1, рис. 2).
    • +
    +

    Для этого сформировать пул таблиц, колонки из которых будут использоваться при настройке отображаемой в Диаграмме информации и указать связи между ними.

    + +
    +
    рис.1 Настройка Графа сущностей компоненты
    +
    + +

    Настроить прочие параметры компоненты"Диаграмма", указав на сущности и колонки, содержащие требуемую информацию.

    + +
    +
    рис.2 Настройка компоненты
    +
    + +
      + +
    • + +

      добавить компоненту Набор фильтровс включенной “живой фильтрацией” (рис.4)

      +

      рис.4 Добавление Компонента Набор фильтра и его связь с компонентой Диаграмма

      +
    • +
    • + +

      добавить 2 компоненты Фильтр по полю ввода с подбором значения для фильтрации по проекту и по исполнителю задачи (рис.5)

      +
    • +
    + +
    + +
    + +

    Фильтр по полю ввода с подбором значения “Фильтр по проекту”

    +
    +
    + +

    Фильтр по полю ввода с подбором значения “Фильтр по исполнителю”

    +

    +

    + +
    +
    рис. 5 Настройка компонент Фильтр по полю ввода с подбором значения
    +
    + +
      + +
    • настроить добавленные компоненты Фильтр по полю ввода с подбором значения для фильтрации (рис.6)
    • +
    + +
    + +

    Фильтр по полю ввода с подбором значения “Фильтр по проекту”

    +
    + +

    Фильтр по полю ввода с подбором значения “Фильтр по исполнителю”

    + +
    +
    + +

    + +
    +
    + +

    +

    Рис. 6 Настройка компонент Фильтр по полю ввода с подбором значения

    +

    На этом настройка компоненты закончена, запускаем приложение.

    +

    Результат выполнения задачи:

    +

    После применения изменений на странице, в экранной форме пользовательского приложения, мы видим, что условия задачи соблюдены (рис. 7)

    +

    +

    Сузим массив показателей для формирования визуального представления на Диаграмме :

    +

    + +
    +
    +

    Attachments:

    +
    + + +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/uncategorized/Как_задействовать_компоненту_Обработка_событий_на_странице_.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/uncategorized/Как_задействовать_компоненту_Обработка_событий_на_странице_.html new file mode 100644 index 0000000..f199c17 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/uncategorized/Как_задействовать_компоненту_Обработка_событий_на_странице_.html @@ -0,0 +1,239 @@ + + + + + + + + Web-BPM Docs – Как задействовать компоненту Обработка событий на странице? + + + + + + +
    +
    + + + +
    +
    +

    Как задействовать компоненту “Обработка событий” на странице?

    +

    Постановказадачи: на пользовательской странице Карточка задачи необходимо обеспечить сравнение двух полей с датами (начала и окончания работ) в момент события изменения значения одного из них. Если дата старта окажется больше, чем дата завершения, то вывести диалог с предупреждением, что дата начала выполнения задачи позже даты ее завершения, что само по себе является ошибочным обстоятельством. Если даты заданы верно, то рядом с полями дат вывести в поле с проставленным флагом, что все введено корректно.

    +

    Страница "Карточка задачи " должна иметь следующие настройки:

    +
      + +
    • на странице должны быть размещены 2компоненты Дата без возможности сохранения, компонента Диалог для отображения сообщения о некорректном вводе с компонентой-кнопкой “Ок” и компонента Флаг без возможности сохранения
    • +
    • Компонента Обработка событий, которая реализует алгоритм обработки, описанный в постановке задачи
    • +
    • с базой данных и источниками данных в этом кейсе работать не предполагается,поэтому компоненты с графами сущностей задействованы не будут.
    • +
    +

    Решение задачи:

    +
      + +
    • Добавить на страницу и настроить компоненту Дата для ввода даты начала работ по задаче (рис.1)
    • +
    +

    +

    рис.1 Добавление компоненты Дата и настройка ее основных параметров (дата начала работ по задаче)

    +
      + +
    • Добавить на страницу и настроить компоненту Дата для ввода даты окончания работ по задаче(рис.2)
    • +
    +

    +

    рис.2 Добавлениекомпоненты Датаи настройка ее основных параметров (дата окончания работ по задаче)

    +
      + +
    • Добавить на страницу и настроить компоненту Флаг (рис. 3)
    • +
    +

    +

    рис.3 Добавлениекомпоненты Флаги настройка ее основных параметров (отметка о корректности ввода значений)

    +
      + +
    • Добавить компоненту Диалог и внутрь нее добавить компоненты Text (для описания ошибки) и Кнопка (для закрытия Диалога после ознакомления с ошибкой) (рис.4)
    • +
    +


    +

    +

    рис.4 Добавление компоненты Диалог, Text и Кнопка

    +
      + +
    • Добавить первую компоненту Обработка событий1 и настроить алгоритм проверки дат (рис.5)
    • +
    +

    +

    рис.5 Настройка компоненты Обработка события для выявления ситуации, когда обе даты введены пользователем и при этом расположены в ошибочном порядке

    +

    (с компоненты Флаг снимается галочка, она превращается в невидимую компоненту, пользователю выводится компонента Диалог)

    +
      + +
    • Добавить вторую компоненту Обработка событий2 и настроить алгоритм проверки дат (рис.6)
    • +
    +

    +

    рис.6 Настройка компоненты Обработка события для выявления ситуации, когда обе даты явно введены и при этом расположены в верном порядке

    +

    (выводится компонента Флаг с помеченной галочкой внутри)

    +
      + +
    • Добавить компоненту Обработка событий и настроить реакцию на нажатие кнопки “Ок” в Диалоге, заключающуюся в очищении полей с неправильными значениями дат (рис.7)
    • +
    +

    +

    рис.7 Настройка компоненты Обработка события для выявления ситуации, когда нажата кнопка “Ок” в Диалоге

    +

    (компонента Диалог закрывается,с компоненты Флаг снимается галочка, она превращается в невидимую компоненту, поля с датами очищаются)

    +

    На этом настройка страницы закончена, можно собрать приложение и проверить работу компоненты.

    +

    Результат выполнения задачи:

    +

    После применения изменений на странице, в экранной форме пользовательского приложения, мы видим, что на странице отображаются таблица и блок фильтрации с компонентой “Фильтр по полю ввода с подбором значения” (рис.8 - рис.11)

    + +
    + + + + + + + + + + + + + + + + + + +
    +
    + +

    +
    +
    + +

    +
    +

    рис.8 Открытие страницы.

    + +

    Заполняем первое поле с датой.

    + +

    Ничего не происходит, потому что не выполнены условия ни одной из компонент Обработка событий (видно из анализа Консоли браузера)

    +

    рис. 9 Заполняем второе поле с датой. Порядок дат верный (начало периода раньше, чем окончание)

    + +

    Система помечает флажком компоненту Флаг и переводит ее в видимое состояние, поскольку обнаружено событие изменения второй даты и условия, при которых произошло это событие, выполнены.

    + +

    Консоль браузера сообщает об обнаружении заложенной в Систему аналитиком ситуации и производит соответствующие манипуляции с визуальными компонентами на странице.

    +
    + +
    + + + + + + + + + + + + + + + + + + +
    +
    + +

    +
    +
    + +

    +
    +

    рис.10 Меняем дату во втором поле ввода таким образом, чтобы порядок дат стал ошибочным (начало периода позже , чем окончание).

    + +

    Данное событие и условия, в которых оно возникло, обнаруживается компонентом Обработка событий ,поэтому Система выдает сообщение об ошибочном вводе посредством отображения компоненты Диалог в модальном режиме (весь экранный интерфейс, кроме она диалога, блокируется для пользователя) и ожидает дальнейших действий пользователя.

    + +

    На заднем плане видно, что выставленный на предыдущем этапе флажок корректного ввода пропал с экрана.

    + +

    Консоль браузера подсказывает, что изменения произошли потому, что исполнился заложенный в Систему аналитиком на этапе разработкиалгоритм, который предусматривает вывод диалогового окна, скрытие компоненты, показывающей факт корректного ввода и сброс ее значения в состояние "не отмечено".

    +

    рис.11 Нажали кнопку "Ок" в компоненте Диалог.

    + +

    Данное событие обнаруживается компонентом Обработка событий, поэтому Система скрывает компоненту Диалог, снимает блокировку с экранного интерфейса и очищает обе даты, которые заполнены в ошибочном порядке .

    + +

    Консоль браузера подсказывает, что изменения произошли потому, что исполнился заложенный в Систему аналитиком на этапе разработкиалгоритм, который предусматривает скрытие диалогового окна, скрытие компоненты, показывающей факт корректного ввода и сброс ее значения в состояние "не отмечено", а также очищение значений в полях ввода дат.

    +
    + +
    +
    +

    Attachments:

    +
    + +
    + +

    image2019-4-10_15-37-9.png (image/png)
    + image2019-4-10_15-41-23.png (image/png)
    + image2019-4-10_16-39-56.png (image/png)
    + image2019-4-11_15-37-26.png (image/png)
    + image2019-4-11_15-38-18.png (image/png)
    + image2019-4-10_18-20-12.png (image/png)
    + image2019-4-10_18-22-13.png (image/png)
    + image2019-4-10_18-49-15.png (image/png)
    + image2019-4-10_18-47-41.png (image/png)
    + image2019-4-10_18-48-6.png (image/png)
    + image2019-4-10_18-48-28.png (image/png)
    + image2019-4-10_18-48-42.png (image/png)
    + image2019-4-11_10-34-31.png (image/png)
    + image2019-4-12_17-18-58.png (image/png)
    + image2019-4-12_17-19-53.png (image/png)
    + image2019-4-12_17-21-32.png (image/png)
    + image2019-4-12_17-31-51.png (image/png)
    + image2019-4-12_17-44-33.png (image/png)
    + image2019-4-12_17-45-10.png (image/png)
    + image2019-4-12_17-48-29.png (image/png)
    + image2019-4-12_17-50-13.png (image/png)
    + image2019-4-12_17-50-42.png (image/png)
    + image2019-4-12_18-0-57.png (image/png)
    + image2019-4-12_18-23-10.png (image/png)
    + image2019-4-12_18-23-58.png (image/png)
    + image2019-4-12_18-25-26.png (image/png)
    + image2019-4-12_18-26-42.png (image/png)
    + image2019-4-12_18-33-7.png (image/png)
    + image2019-4-12_18-34-16.png (image/png)
    + image2019-4-12_18-35-29.png (image/png)
    + image2019-4-12_18-35-48.png (image/png)
    + image2019-4-12_18-36-13.png (image/png)
    + image2019-4-17_12-1-35.png (image/png)
    + image2019-4-17_12-4-17.png (image/png)
    + image2019-4-17_12-9-33.png (image/png)
    + image2019-4-17_12-10-16.png (image/png)
    + image2019-4-17_12-16-38.png (image/png)
    + image2019-4-17_12-23-13.png (image/png)
    + image2019-4-17_12-38-33.png (image/png)
    + image2019-4-17_12-56-24.png (image/png)

    +
    +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/uncategorized/Настройка_фильтрации_в_таблице_и_графике_для_компоненты_Диаграмма.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/uncategorized/Настройка_фильтрации_в_таблице_и_графике_для_компоненты_Диаграмма.html new file mode 100644 index 0000000..8766d6c --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/uncategorized/Настройка_фильтрации_в_таблице_и_графике_для_компоненты_Диаграмма.html @@ -0,0 +1,54 @@ + + + + + + + + Web-BPM Docs – Настройка фильтрации в таблице и графике для компоненты Диаграмма + + + + + + +
    +
    + + + +
    +
    +

    Настройка фильтрации в таблице и графике для компоненты Диаграмма

    +

    в таблице для возможности строить запросы с агрегацией используется GridService → GridServiceWithAggregationColumnsImpl

    +

    В FilterGroup накидывается Grid, в Chart добавляется скрипт FilterDelegate.ts, в FilterDelegate.ts накидываем Grid

    +

    при активации фильтрации она будет произведена и в Таблице, и в Графике

    +

    Внимание! часть структуры по которой фильтруется Таблица и часть структуры по которой фильтруется График должны совпадать (название фильтруемой таблицы и колонки)

    +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/uncategorized/Обработка_событий.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/uncategorized/Обработка_событий.html new file mode 100644 index 0000000..587bdc2 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/uncategorized/Обработка_событий.html @@ -0,0 +1,148 @@ + + + + + + + + Web-BPM Docs – Обработка событий + + + + + + +
    +
    + + + +
    +
    +

    Обработка событий

    +

    Назначение

    +

    Обработка событий - это невидимый для пользователя на web странице компонент, представляющий собой визуальный инструмент для аналитика, с помощью которого аналитик выстаивает алгоритм динамического управления функционированием web-страницы, основанный на отслеживании событий, происходящих на ней во время взаимодействия с пользователем в режиме исполнения (runtime mode). Динамическое управление подразумевает анализ вариантов возможных событий и действий пользователя с интерфейсом Системы, проверка условий, в которых происходят эти события и действия, предварительное составление последовательности необходимых манипуляций, которые должна предпринять Система в ответ на каждое из возможных воздействий пользователя.

    +

    Аналитик, используя компонент Обработка событий при проектировании web-страницы, получает в свое распоряжение рычаги управления свойствами, параметрами и настройками, а также значениями визуальных компонент, которые первоначально задаются в Инспекторе редактора страниц. Кроме того, компонент позволяет использовать скрытые в Инспекторе методы управления компонентами.

    +

    Компонента может располагаться в любом удобном для аналитика месте в составе дерева компонентов web странице.

    +

    Компонента Обработка событий находится в разделе Компоненты - Без категории - Обработка событий.

    +

    Свойства

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Наименование свойства Назначение свойства Принимаемые значения
    Когда Позволяет указать событие (перечень событий) которые нужно отследить Системе на экранной форме. +

    Добавление каждого из возможных событий осуществляется нажатием на кнопку и перетаскиваем соответствующего визуального компонента из иерархии страницы в появившееся поле. Так происходит связывание процесса ожидания события с конкретной компонентой, от которой это событие ожидается.

    +

    После указания субъекта события (компоненты из структуры страницы), следует указать какое именно событие от выбранной компоненты следует ожидать Системе - в следующем открывшемся поле выбрать это событие из списка всех возможных событий этой компоненты. Если добавлено несколько событий, то они автоматически соединяются между собой оператором ИЛИ (то есть система отслеживает появление хотя бы одного из них) и поменять этот оператор соединения событий нельзя.

    Если Позволяет задать условия, которые необходимо проверить системе при срабатывании механизма слежения за предписанным в предыдущем пункте событием. +

    Принцип формирования каждого конкретного условия идентичен принципу формирования события, описанному в предыдущем пункте. Также появляется поле для перетаскивания из дерева компонент страницы той компоненты, условие по которой требует проверки, а затем в следующем окне из предустановленного списка выбирается настройка, параметр, свойство или значение компоненты, которые необходимо проверить.

    +

    Поскольку каждое условие чаще всего задается для сравнения текущего состояния компоненты с каким то заранее продуманным значением, то конструктор условий позволяет задать значение для сравнения либо явно (числом, строкой и т.д.), либо сослаться на значение другой компоненты на странице, для чего снова показывает поле, в которое можно перетащить из дерева другой интересующий компонент и так же воспользоваться методом для получения уже его значения для сравнения.

    +

    Как правило, для получения значений текущей настройки, параметра, свойства или фактического значения используются методы компонент, которые перечисляются в предлагаемом списке.

    При визуальном формировании условия Система позволяет указать оператор сравнения между двумя значениями, при этом предлагаются операторы сравнения, релевантные используемым типам данных. Значение, с которым происходит сравнивание, может быть выбрано одним из трех типов: +
      +
    • статичное (аналитик сам указывает точное значение)
    • +
    • объект (аналитик накидывает дополнительно компоненту и метод, из которого будет получено это значение)
    • +
    • переменная процесса (аналитик дополнительно указывает переменную процесса, из которой будет получено это значение)
    +

    Визуальный конструктор позволяет аналитику выстраивать условия любой сложности и вложенности, разделять условия проверок на отдельные группы и явно выбирать оператор соединения как групп между собой, так и отдельных условий в каждой группе.

    +

    Формирование условий может и не выполняться при настройке, тогда Система при обнаружении события сразу перейдет в секции “Тогда” визуального конструктора алгоритма.

    Тогда +

    позволяет задать последовательность действий с одной или несколькими компонентами в случае, когда случилось отслеживаемое событие и выполнены заданные выше условия проверки вмомент происхождения события.

    +

    Если условия проверки не заданы, то Система сразу после обнаружения факта совершения ожидаемого события выполняет действия, описанные в этом пункте.

    +

    Принцип формирования каждого конкретного действия в списке действий идентичен принципу формирования события, описанному в первом пункте. Также появляется поле для перетаскивания из дерева компонент страницы той компоненты, над которой следует провести определенную операцию, а затем в следующем окне из предустановленного списка выбирается метод, который необходимо применить к компоненте и значение, которое является входящим аргументом для этого метода.Значение, которое передается в выбранный метод, может быть выбрано одним из трех типов:

    +
      +
    • статичное (аналитик сам указывает точное значение)
    • +
    • объект (аналитик накидывает дополнительно компоненту и метод, из которого будет получено это значение)
    • +
    • переменная процесса (аналитик дополнительно указывает переменную процесса, из которой будет получено это значение)
    +

    Все перечисленные в списке этого пункта действия выполняются через оператор "И", то есть выполняется каждое из заложенных действий. Изменить этот оператор соединения действий нельзя.

    +

    Например, “Числовое поле”. “Задать видимость” == “True”

    +

    Последовательность исполнения Системой инструкций в данном разделе не всегда соответствует порядку их расположения в конструкторе. В общем случае, порядок выполнения инструкций выбирается браузером произвольно.

    Иначе +

    позволяет задать последовательность действий с одной или несколькими компонентами в случае, когда случилось отслеживаемое событие, а набор условий, заданных выше, в момент происхождения события не является истинным.

    +

    Принцип формирования каждого конкретного действия в списке действий идентичен принципу формирования события, описанному в предыдущем пункте. Также появляется поле для перетаскивания из дерева компонент страницы той компоненты, над которой следует провести определенную операцию, а затем в следующем окне из предустановленного списка выбирается метод, который необходимо применить к компоненте и значение, которое является входящим аргументом для этого метода.Значение, которое передается в выбранный метод, может быть выбрано одним из трех типов:

    +
      +
    • статичное (аналитик сам указывает точное значение)
    • +
    • объект (аналитик накидывает дополнительно компоненту и метод, из которого будет получено это значение)
    • +
    • переменная процесса (аналитик дополнительно указывает переменную процесса, из которой будет получено это значение)
    +

    Все перечисленные в списке этого пункта действия выполняются через оператор “И”, то есть выполняется каждое из заложенных действий. Изменить этот оператор соединения действий нельзя.

    +

    Последовательность исполнения Системой инструкций в данном разделе не всегда соответствует порядку их расположения в конструкторе. В общем случае, порядок выполнения инструкций выбирается браузером произвольно.

    +

    Функции

    +

    Определить роли текущего пользователя

    +

    Определить права текущего пользователя

    +

    Методические рекомендации по применению

    +

    Пошаговые инструкции по применению компонента в типовых задачах Вы можете найти в разделах:

    + +

    Другое

    +

    Для включения логирования ActionController в prod сборке приложения необходимо выполнить команду в консоли браузера

    +

    window.dev_mode=true;

    +

    Часто задаваемые вопросы

    + + + + + + + + + + + + + + + + + + + + + +
    Вопрос Ответ
    В чем преимущества и гибкость компоненты Обработка событий? С использованием совокупности компонент Обработка событий, расположенных на странице,страница сама по себе может стать самостоятельной микросистемой (подмодулем) со своей логикой работы, встраивающейся в общую логику всей системы. Визуальное представление возможности строить алгоритмы посредством нескольких кликов манипулятором “мышь” и перетаскиванием нужных компонентов из иерархии страницы позволяет аналитику избежать необходимости привлечения писателей программного кода для “оживления” страницы. После сборки и запуска приложения платформа самапревратит заданные визуально алгоритмы в соответствующий код, который будет исполняться браузером пользователя.
    Существует ли возможность задать порядок рассмотрения и исполнения Системой алгоритмов из разных компонентов Обработка событий между собой? Нет, нельзя.
    Можно ли поставить рассмотрение и исполнение алгоритма из одного компонента Обработка событий в зависимость от алгоритма из другого компонента Обработка событий? Нет, нельзя.
    Как отследить исполнение и понять какие компоненты Обработка событий сработали на странице и по какому алгоритму они сработали Следует открыть в браузере “Инструменты разработчика” (обычно клавиша F12), перейти на вкладку “Консоль” и изучить расположенные там записи.В консоль выводятся информация ТОЛЬКО ОБ ОТРАБОТАВШИХ компонентах Обработка событий (Условия из раздела ЕСЛИ выполнились). Соответственно, выводится Satisfied condition for ActionController если выполнился раздел ТОГДА и Not satisfied condition for ActionController если раздел ИНАЧЕ.
    +

    +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/uncategorized/Разные_компоненты.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/uncategorized/Разные_компоненты.html new file mode 100644 index 0000000..da1097b --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/uncategorized/Разные_компоненты.html @@ -0,0 +1,52 @@ + + + + + + + + Web-BPM Docs – Таблицы + + + + + + + +
    +
    +
    +
    +

    © 2022 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Включить_вычисление_математических_операций.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Включить_вычисление_математических_операций.html new file mode 100644 index 0000000..28e10e3 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Включить_вычисление_математических_операций.html @@ -0,0 +1,63 @@ + + + + + + + + Web-BPM Docs – Включить вычисление математических операций + + + + + + +
    +
    + + + +
    +
    +

    Включить вычисление математических операций

    +

    Функция, которая не имеет настраиваемых аналитиком параметров, но будучи задействованной, позволяет осуществить одну из математических операций (сложение, вычитание, умножение, деление) во время работы приложения (in runtime mode). Применима к компонентам, оперирующим числами - Числовое поле, Денежное поле. Результат вычисления помещает в тот компонент, на который была добавлена, замещая находившее там прежде значение. Математические действия возможны только с 2 аргументами.

    +

    Она относится к той группе функций, чья функциональность применяетсяи может быть полезной не сразу после добавленияв исходную компоненту, а только при последующем использовании в компоненте “Обработка событий”, когда у исходной компоненты появляется нескольконовых доступных методов при конструировании алгоритма обработки событий на web-странице. Например, для такого паттерна обработки: ‘ЕСЛИ значение в одном из числовых полей изменилось ТО к значению во втором числовом поле прибавить измененное значение из первого числового поля’

    +

    +

    Рис.1 Активация функции на компоненте с первым аргументом

    +

    +

    Рис.2 Второй аргумент

    +

    +

    Рис. 3 Пример обработки события изменения значения второго аргумента, в результате которого вычисляется сумма аргументов (появился новый метод Сложить; у исходной компоненты, доступны также методы Вычесть, Умножить, Разделить )

    +

    После запуска web-приложения (in runtime mode) вносим значение в поле “Аргумент 1”, затем в момент внесения значения в поле “Аргумент 2” , значение в поле"Аргумент 1" изменяется на значение суммы (“Аргумент 1” + “Аргумент 2”), в консоли браузера можно наблюдать сообщение о срабатывании компоненты Обработка событий, которое показывает выполненное функцией действие.

    +

    +

    Рис 4. Вносим значение в поле Аргумент 1

    +

    +

    Рис.5 Функция рассчитывает сумму аргументов

    +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Добавить_строку_к_значению_в_текущем_поле.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Добавить_строку_к_значению_в_текущем_поле.html new file mode 100644 index 0000000..1787182 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Добавить_строку_к_значению_в_текущем_поле.html @@ -0,0 +1,63 @@ + + + + + + + + Web-BPM Docs – Добавить строку к значению в текущем поле + + + + + + +
    +
    + + + +
    +
    +

    Добавить строку к значению в текущем поле

    +

    Функция, которая не имеет настраиваемых аналитиком параметров, но будучи задействованной, позволяет дописать в конец текстового значения одной компоненты текстовое значение другой компоненты во время работы приложения (in runtime mode). Применима к компоненте, оперирующей строками, - Текстовое поле. Результат объединения строк помещает в тот компонент, на который была добавлена, замещая находившее там прежде значение. Функция добавления строки к значению в текущем поле может оперировать только с 2 аргументами.

    +

    Она относится к той группе функций, чья функциональность применяется и может быть полезной не сразу после добавленияв исходную компоненту, а только при последующем использовании в компоненте “Обработка событий”, когда у исходной компоненты появляется нескольконовых доступных методов при конструировании алгоритма обработки событий на web-странице. Например, для такого паттерна обработки: ’ЕСЛИ значение в одном из текстовых полей изменилось ТО в конец значения во втором текстовом поле добавить строковое значение из первого числового поля.

    +

    +

    Рис.1 Активация функции на компоненте с первой строкой

    +

    +

    Рис.2 Второе строковое значение

    +

    +

    Рис. 3 Пример обработки события изменения значения string2, в результате которого формируется строка конкатенацией строк string1 и string2 (появился новый метод Добавить строку у исходной компоненты)

    +

    После запуска web-приложения (in runtime mode) вносим значение в поле “Строка 1”, затем в момент внесения значения в поле “Строка 2”, значение в поле"Строка 1" изменяется на конкатенированное значение полей (“Строка 1” + “Строка 2”), в консоли браузера можно наблюдать сообщение о срабатывании компоненты Обработка событий, которое показывает выполненное функцией действие.

    +

    +

    Рис 4. Вносим значение в поле “Строка 1”;

    +

    +

    Рис.5 Функция соединяется строки

    +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Заполнить_значением_из_переменной_процесса.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Заполнить_значением_из_переменной_процесса.html new file mode 100644 index 0000000..ca8a540 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Заполнить_значением_из_переменной_процесса.html @@ -0,0 +1,78 @@ + + + + + + + + Web-BPM Docs – Заполнить значением из переменной процесса + + + + + + +
    +
    + + + +
    +
    +

    Заполнить значением из переменной процесса

    +

    Назначение

    +

    Функция, которая позволяет получить значение из указанной аналитиком переменной процесса и заполнить визуальный компонент ‘значением по умолчанию’.

    +

    В платформе существуютследующие возможные способы работы со значениями по умолчанию:

    +
      + +
    1. из колонки таблицы, указанной в структуре сущности родительской (по отношению к текущему) компоненты-контейнера (например, компоненты Форма, параметр Подгрузка данных по умолчанию)
    2. +
    3. из колонки таблицы, указанной в собственной, индивидуальной, структуре сущностей, принадлежащей текущей компоненте.
    4. +
    5. из переменной процесса (для этого следует воспользоваться обособленной функцией Заполнить значением из переменной процесса, которая и добавляется в компоненту и конфигурируется отдельно).
    6. +
    7. заполнить атрибут ‘Значение по умолчанию’ в основных параметрах любого визуального компонента.
    8. +
    +

    Функция Заполнить значением из переменной процесса позволяет оперировать алгоритмом из п.3

    +

    +

    Настройка

    + + + + + + + + + + + + + + +
    Наименование свойства Назначение свойства Принимаемые значения
    Заполнить значением из переменной процесса Формирует список всех переменных процесса и выводит в виде выпадающего списка для выбора аналитиком. В процессе работы приложения заполняет значением выбранной переменной ту визуальную компоненту, для которой функция была активирована
    +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Заполнить_значением_по_умолчанию.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Заполнить_значением_по_умолчанию.html new file mode 100644 index 0000000..784c873 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Заполнить_значением_по_умолчанию.html @@ -0,0 +1,115 @@ + + + + + + + + Web-BPM Docs – Заполнить значением по умолчанию + + + + + + +
    +
    + + + +
    +
    +

    Заполнить значением по умолчанию

    +

    Назначение

    +

    Функция, которая позволяет настроить параметры и осуществить запрос данных для заполнения компоненты значением по умолчанию.

    +

    В платформе существуютследующие возможные способы работы со значениями по умолчанию:

    +
      + +
    1. из колонки таблицы, указанной в структуре сущности родительской (по отношению к текущему) компоненты-контейнера (например, компоненты Форма, параметр Подгрузка данных по умолчанию)
    2. +
    3. из колонки таблицы, указанной в собственной, индивидуальной, структуре сущностей, принадлежащей текущей компоненте.
    4. +
    5. из переменной процесса (для этого следует воспользоваться обособленной функцией Заполнить значением из переменной процесса, которая и добавляется в компоненту и конфигурируется отдельно).
    6. +
    7. заполнить атрибут ‘Значение по умолчанию’ в основных параметрах любого визуального компонента.
    8. +
    +

    Функция Заполнить значением по умолчанию позволяет оперировать алгоритмами из пп.1 и 2.

    +

    +

    При выборе варианта “Из колонки” подгрузка значения по умолчанию осуществляется по алгоритму из п.1

    +

    При выборе варианта “Из сервиса” подгрузка значения по умолчанию осуществляется по алгоритму из п.2

    +

    Настройка

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Тип подгрузки Наименование параметра Назначение параметра Принимаемые значения
    Из колонки Колонка Позволяет указать таблицу и колонку ‘структуры сущности по умолчанию’ родительской компоненты-контейнера, из которой следует взять значение для текущей компоненты ‘Таблица1’ в этом случае является элементом ‘структуры сущностей по умолчанию’ графа (параметр Подгрузка данных по умолчанию) родительской компоненты Форма
    Из сервиса Сервис Описывает запрос к базе данных, результаты которого позволяют наполнить вложенные видимые компоненты’значениями по умолчанию’из базы данных при открытии веб-страницы приложения. +
      +
    • с помощью визуального конструктора запросов позволяет задать Граф сущностей, т.е. указать объекты базы данных и взаимосвязи между ними для получения и отображенияна веб-странице информации по умолчанию, но не ее сохранения.
    • +
    • с помощью параметра Переменная процесса с идентификатором позволяет ограничить результаты полученного запроса единственным идентификатором смысловой единицы создаваемого интерфейса.
    Сервис Скрипт Скрипт автоматически выставляется по умолчанию, указывает платформе, что ‘значение по умолчанию’ для текущей компоненты следует получить из собственного запроса к базе данных
    Источник данных Скрипт предписывает использовать визуальный конструктор для построения запроса Единственный возможный вариант, выставлен по умолчанию
    Граф сущностей Граф сущностей позволяет с помощью визуального конструктора сформировать набор объектов базы данных, указать взаимосвязи между ними и\или дополнительные условия, тем самым подготовить запрос в базу данных. При подгрузке данных сформированный запрос отрабатывает как Select-запрос. ‘Таблица2’ в этом случае является элементом собственной структуры сущностей графа текущей компоненты
    Заполнить из колонки Позволяет указать таблицу и колонку собственной структуры сущности текущей компоненты, из которой следует взять ‘значение по умолчанию’
    Переменная процесса с идентификатором Позволяет выбрать из списка переменную процесса, содержащую в себе идентификатор сущности. Список формируется автоматически из всех переменных используемых в BPMN-процессе. Является ограничивающим значением запроса (в секции WHERE primary_id = ), построенного в визуальном конструкторе параметра Граф сущностей. Благодаря этому ограничению, источник данных выбирает атрибуты единственной смысловой сущности создаваемого интерфейса. task_id
    +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Заполнить_значением_по_умолчанию_Пополняемый_список_зависимых_записей.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Заполнить_значением_по_умолчанию_Пополняемый_список_зависимых_записей.html new file mode 100644 index 0000000..4e129cc --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Заполнить_значением_по_умолчанию_Пополняемый_список_зависимых_записей.html @@ -0,0 +1,83 @@ + + + + + + + + Web-BPM Docs – Заполнить значением по умолчанию. Пополняемый список зависимых записей + + + + + + +
    +
    + + + +
    +
    +

    Заполнить значением по умолчанию. Пополняемый список зависимых записей

    +

    Назначение

    +

    Функция, которая позволяет настроить параметры и осуществить запрос данных для заполнения значениями по умолчанию полей компоненты Пополняемый список зависимых записей.

    +

    Функция Заполнить значением по умолчанию должна быть задействована и настроенана компоненте “Редактируемая таблица”, входящей в состав сложнойкомпоненты Пополняемый список зависимых записей. При этом, на вышележащей компоненте Форма скрипт Подгрузка значений по умолчанию должен быть активирован (но может быть не настроен).

    +

    Результатом исполнения функции Заполнить значением по умолчанию является одно или несколько значений, которыми предзаполняется компонента “Редактируемая таблица”, входящая в состав сложной компоненты Пополняемый список зависимых записей, и отображающая список тех строк, которыми будет пополнена связанная с основной таблицей компоненты Форма таблица.

    +

    В этом основное отличие этой функции от аналогичной функции, используемой для запроса ‘значений по умолчанию’ обычных визуальных компонентов, но оперирующей только одним значением.

    +

    Настройка

    + + + + + + + + + + + + + + + + + + + + + + +
    Наименование свойства Назначение свойства Принимаемые значения
    Тип подгрузки единственное возможное значение, выставляется по умолчанию. Описывает запрос к базе данных, результаты которого позволяют наполнить компоненту Редактируемая таблица ’значениями по умолчанию’из базы данных при открытии веб-страницы приложения. С помощью визуального конструктора запросов позволяет задать Граф сущностей т.е. указать объекты базы данных и взаимосвязи между ними для получения и отображенияна веб-странице информации по умолчанию но не ее сохранения
    Скрипт Скрипт автоматически выставляется по умолчанию, указывает платформе, что ‘значение по умолчанию’ для текущей компоненты следует получить из собственного запроса к базе данных
    Граф сущностей позволяет с помощью визуального конструктора сформировать набор объектов базы данных, указать взаимосвязи между ними и\или дополнительные условия, тем самым подготовить запрос в базу данных. При подгрузке данных сформированный запрос отрабатывает как Select-запрос. +
      +
    1. Переносим манипулятором Мышь таблицу, которая предоставит строки для подгрузки ‘значений по умолчанию’ в поле графа сущности.
    2. +
    3. Переименовываем (не обязательно, но для понимания) в сущность с именем test_default_eotm. Наименование сущности в этом пункте должно строго соответствовать наименованию этой же сущности в графе сущности функции Подгрузка данных компоненты “Редактируемая таблица”;, входящей в состав сложной компоненты Пополняемый список зависимых записей
    4. +
    5. В настройках фильтрации сущности test_default_eotm формируем условие, ограничивающее то количество выбираемых из сущности записей, которое мы хотим увидеть в ‘значениях, подгруженных по умолчанию’. В примере на скриншоте ограничение наложено на поле с первичным ключом ID (для очевидности), а в реальной жизни, как правило, ограничения накладываются, исходя из сопоставления значений переменной процесса и одной из колонок. Таким образом, из всех возможных записей в сущности test_default_eotm, система отберет в качестве ‘значений по умолчанию’ только те записи, id которых меньше числа 5.
    +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Заполнить_значением_по_умолчанию_Список_зависимых_записей.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Заполнить_значением_по_умолчанию_Список_зависимых_записей.html new file mode 100644 index 0000000..622dad7 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Заполнить_значением_по_умолчанию_Список_зависимых_записей.html @@ -0,0 +1,93 @@ + + + + + + + + Web-BPM Docs – Заполнить значением по умолчанию. Список зависимых записей + + + + + + +
    +
    + + + +
    +
    +

    Заполнить значением по умолчанию. Список зависимых записей

    +

    Назначение

    +

    Функция, которая позволяет настроить параметры и осуществить запрос данных для заполнения значениями по умолчанию полей компоненты Список зависимых записей.

    +

    Функция Заполнить значением по умолчанию должна быть задействована на обоих компонентах “Связанная таблица”, а настроена только на основной компоненте “Связанная таблица”, входящей в состав сложной компоненты Список зависимых записей.

    +

    +

    Активация и настройка функции на первой компоненте “Связанная таблица”

    +

    +

    Активация без настройки функции на второй компоненте “Связанная таблица”

    +

    При этом, на вышележащей компоненте Форма функция Подгрузка значений по умолчанию должна быть активирована (но может быть не настроена).

    +

    +

    Результатом исполнения функции Заполнить значением по умолчанию является одно или несколько значений, которыми предзаполняются основная компонента “Связанная таблица”, входящая в состав сложной компоненты Список зависимых записей, и отображающая список только тех строк из списка всех доступных строк, которые выбраны пользователем .

    +

    В этом основное отличие этой функции от аналогичной функции, используемой для запроса ‘значений по умолчанию’ обычных визуальных компонентов, но оперирующей только одним значением.

    +

    Настройка

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Наименование свойства Назначение свойства Принимаемые значения
    Тип подгрузки единственное возможное значение, выставляется по умолчанию Описывает запрос к базе данных, результаты которого позволяют наполнить компоненту Связанная таблица ’значениями по умолчанию’из базы данных при открытии веб-страницы приложения. С помощью визуального конструктора запросов позволяет задать Граф сущностей, т.е. указать объекты базы данных и взаимосвязи между ними для получения и отображенияна веб-странице информации по умолчанию, но не ее сохранения.
    Скрипт Скрипт автоматически выставляется по умолчанию, указывает платформе, что ‘значение по умолчанию’ для текущей компоненты следует получить из собственного запроса к базе данных
    Граф сущностей позволяет с помощью визуального конструктора сформировать набор объектов базы данных, указать взаимосвязи между ними и\или дополнительные условия, тем самым подготовить запрос в базу данных. При подгрузке данных сформированный запрос отрабатывает как Select-запрос. +
      +
    1. Переносим манипулятором Мышь ‘таблицу с доступными записями’ в поле структуры сущности
    2. +
    3. Переименовываем (не обязательно, но для понимания) в сущность с именем default_for_mtm
    4. +
    5. В настройках фильтрации сущности default_for_mtm формируем условие, ограничивающее то количество предустановленных записей, которое мы хотим увидеть в ‘значениях, подгруженных по умолчанию’. В примере на скриншоте ограничение наложено на поле с первичным ключом ID (для очевидности), а в реальной жизни, как правило, ограничения накладываются, исходя из сопоставления значений переменной процесса и одной из колонок.Таким образом, из всех доступных записей в таблице сотрудников, система отберет в качестве ‘значений по умолчанию’ только те записи, id которых меньше числа 20.
    Первичный ключ таблицы доступных значений Позволяет указать таблицу доступных записей (справочник) и её колонку с первичным ключом, по которым будут отобраны записи, удовлетворяющие условию в структуре сущности для предзаполнения по ним ‘значений по умолчанию’ таблицы выбранных записей
    +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Значение_по_умолчанию_Пополняемый_список_зависимых_записей.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Значение_по_умолчанию_Пополняемый_список_зависимых_записей.html new file mode 100644 index 0000000..0ce0544 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Значение_по_умолчанию_Пополняемый_список_зависимых_записей.html @@ -0,0 +1,83 @@ + + + + + + + + Web-BPM Docs – Заполнить значением по умолчанию. Пополняемый список зависимых записей + + + + + + +
    +
    + + + +
    +
    +

    Заполнить значением по умолчанию. Пополняемый список зависимых записей

    +

    Назначение

    +

    Функция, которая позволяет настроить параметры и осуществить запрос данных для заполнения значениями по умолчанию полей компоненты Пополняемый список зависимых записей.

    +

    Функция Заполнить значением по умолчанию должна быть задействована и настроенана компоненте “Редактируемая таблица”, входящей в состав сложнойкомпоненты Пополняемый список зависимых записей. При этом, на вышележащей компоненте Форма скрипт Подгрузка значений по умолчанию должен быть активирован (но может быть не настроен).

    +

    Результатом исполнения функции Заполнить значением по умолчанию является одно или несколько значений, которыми предзаполняется компонента “Редактируемая таблица”, входящая в состав сложной компоненты Пополняемый список зависимых записей, и отображающая список тех строк, которыми будет пополнена связанная с основной таблицей компоненты Форма таблица.

    +

    В этом основное отличие этой функции от аналогичной функции, используемой для запроса ‘значений по умолчанию’ обычных визуальных компонентов, но оперирующей только одним значением.

    +

    Настройка

    + + + + + + + + + + + + + + + + + + + + + + +
    Наименование свойства Назначение свойства Принимаемые значения
    Тип подгрузки единственное возможное значение, выставляется по умолчанию. Описывает запрос к базе данных, результаты которого позволяют наполнить компоненту Редактируемая таблица ’значениями по умолчанию’из базы данных при открытии веб-страницы приложения. С помощью визуального конструктора запросов позволяет задать Граф сущностей т.е. указать объекты базы данных и взаимосвязи между ними для получения и отображенияна веб-странице информации по умолчанию но не ее сохранения
    Скрипт Скрипт автоматически выставляется по умолчанию, указывает платформе, что ‘значение по умолчанию’ для текущей компоненты следует получить из собственного запроса к базе данных
    Граф сущностей позволяет с помощью визуального конструктора сформировать набор объектов базы данных, указать взаимосвязи между ними и\или дополнительные условия, тем самым подготовить запрос в базу данных. При подгрузке данных сформированный запрос отрабатывает как Select-запрос. +
      +
    1. Переносим манипулятором Мышь таблицу, которая предоставит строки для подгрузки ‘значений по умолчанию’ в поле графа сущности.
    2. +
    3. Переименовываем (не обязательно, но для понимания) в сущность с именем test_default_eotm. Наименование сущности в этом пункте должно строго соответствовать наименованию этой же сущности в графе сущности функции Подгрузка данных компоненты “Редактируемая таблица”;, входящей в состав сложной компоненты Пополняемый список зависимых записей
    4. +
    5. В настройках фильтрации сущности test_default_eotm формируем условие, ограничивающее то количество выбираемых из сущности записей, которое мы хотим увидеть в ‘значениях, подгруженных по умолчанию’. В примере на скриншоте ограничение наложено на поле с первичным ключом ID (для очевидности), а в реальной жизни, как правило, ограничения накладываются, исходя из сопоставления значений переменной процесса и одной из колонок. Таким образом, из всех возможных записей в сущности test_default_eotm, система отберет в качестве ‘значений по умолчанию’ только те записи, id которых меньше числа 5.
    +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Как-добавить-шрифты-в-модуль-печати-JasperReports.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Как-добавить-шрифты-в-модуль-печати-JasperReports.html new file mode 100644 index 0000000..1afaaaa --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Как-добавить-шрифты-в-модуль-печати-JasperReports.html @@ -0,0 +1,56 @@ + + + + + + + + Web-BPM Docs – + + + + + + +
    +
    + + + +
    +
    +

    Если при разработке шаблона использовались шрифты, которых нет в ОС сервера приложений, то при формировании печатной формы будет возникать ошибка. Чтобы этого избежать необходимо выполнить шаги:

    +
      + +
    1. Экспортировать шрифт по инструкции. На выходе будет файл с расширением jar.
    2. +
    3. Скопировать полученный файл в папку проекта: $project\extensions\jasper-fonts\src\main\resources\font\.
    4. +
    5. Собрать и запустить приложение.
    6. +
    +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Настройка_Графа_сущностей.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Настройка_Графа_сущностей.html new file mode 100644 index 0000000..244d9c0 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Настройка_Графа_сущностей.html @@ -0,0 +1,144 @@ + + + + + + + + Web-BPM Docs – Настройка Графа сущностей + + + + + + +
    +
    + + + +
    +
    +

    Настройка Графа сущностей

    +

    Назначение

    +

    Граф сущностей - это визуальный конструктор запросов, с помощью которого бизнес-аналитик имеет возможность указать объекты базы данных, условия и взаимосвязи между ними для получения и отображения информации на странице пользовательского приложения, и/или её сохранения.

    +

    В качестве сущностей, заданных в графе, могут выступать таблицы и представления (view) базы данных. Важно отметить, что понятие сущности не равно понятию таблицы, поскольку одна таблица может быть добавлена в граф сущностей несколько раз.

    +

    Необходимость настройки Графа сущностей возникает при использовании компонент, логика работы которых предусматривает формирование источника данных в виде SQL-запроса, например, Таблица, Форма и другие.

    +

    В зависимости от используемой компоненты и логики её работы, Граф сущностей использует три типа оператора SQL-запросов к базе данных:

    +
      + +
    • SELECT- оператор запроса,который возвращает набор данных (выборку) из базы данных;
    • +
    • INSERT- оператор запроса, который осуществляет добавление новых записей в таблицу базы данных;
    • +
    • UPDATE- оператор запроса, который изменяет имеющиеся данные в таблице базы данных
    • +
    +

    Свойства

    +

    Для того, чтобы перейти к заполнению Графа сущностей настраиваемой компоненты, необходимо во встроенных функциях элемента перейти к разделу Подгрузка данных - Источник данных - Граф сущностей и нажать на кнопку (три точки). По нажатию на кнопку отобразится окно Редактор структуры сущностей, в котором происходит дальнейшее добавление необходимых объектов базы данных (таблиц или представлений) с соответствующими связями.

    +

    Редактор структуры сущностей включает в себя следующие области:

    +
      + +
    • Дерево БД (базы данных), где отображаются выбранные при сохранении БД схемы вместе с объектами (таблицы и представления)
    • +
    • Поиск, с помощью которого можно найти таблицу БД по её названию; по мере ввода символов будет отображаться список таблиц, содержащих в названии набранные символы (рис.4)
    • +
    +

    +

    рис.3 Редактор структуры сущностей

    +

    +

    рис.4 Область поиска

    +
      + +
    • + +

      вкладка Структура, которая в зависимости от решаемой задачи позволяет задать условия или группу условий , по которому(ым) будут ограничиваться (фильтроваться) подгружаемые данные по Графу сущностей. Для фильтрации записей больше, чем по одному условию используются операторы:

      +
        + +
      • AND - оператор, который отображает только те записи, когда первое и второе условие является истина/true;
      • +
      • OR- оператор, который отображает только те записи, когда хотя бы одно из двух или каждое из условий является истина/true;
      • +
      • AND_NOT - оператор, который отображает только те записи, когда хотя бы одно из условий является ложью/false;
      • +
      • OR_NOT - оператор, который отображает только те записи, когда все из условий являются ложью/false.
      • +
      +

      При добавлении условия (фильтра), значение из колонки таблицы или представления можно приравнять к четырем типам значений: Переменная процесса, Константа, Переменная времени выполнения, Другая колонка. В случае использования Переменной процесса, значение, к которому приравниваются данные из указанной колонки, могут динамически изменяться, в зависимости от того, какое значение содержится в переменной процесса в конкретный момент времени (рис.4). Применение заданного условия (фильтра), в котором используется переменная процесса, можно ограничить указав: Игнорировать фильтр, если переменная не задана или Не игнорировать фильтр, если переменная не задана. При указании типа Другая колонка, значение указанное в колонке сравнивается со значением другой колонки идентичной таблицы. При указании типа Переменная времени выполнения, значение из выбранной колонки сравнивается с runtime переменными. При указании типа Константа, подгружаемые данные по Графу сущностей будут фильтроваться по заданному статичному значению (рис.5). На языке SQL-запросов заданное условие (рис.5) будет иметь вид: SELECT … FROM public. Конференции AS Конференции WHERE Конференции. Описание (description) = ‘RU’

      +

      +

      рис.4 Применение фильтра с использованием Переменной процесса

      +

      +

      рис.5 Применение фильтра с использованием Константы

      +
    • +
    • + +

      вкладка Элемент, становится активна после добавления и выбора объекта базы данных:таблицы или представления(рис.6). К нередактируемым свойствам элемента относится: Схема базы данных, к которой относится объект и название Таблицы в базе данных. К настраиваемым свойствам элемента относится:

      +
        + +
      • Имя сущности, которое будет отображаться в Редакторе структуры сущностей;
      • +
      • Главная сущность - в каждом Графе должна быть задана Главная сущность, с которой начинается подгрузка и сохранение данных на странице; Главная сущность в Графе выделена желтой рамкой, все последующие сущности имеют синюю рамку.
      • +
      • Действие при сохранении: Удалить (значение по умолчанию).
      • +
      • Сохранить - Удалить если все значения FK. Добавление и возможность настройки данного свойства было обусловлено тем, что в некоторых случаях, при сохранении в сущность (таблицу) приходят пустые данные. В зависимости от того, необходимо ли сохранять пустые данные в таблицу или необходимо удалять старую запись в таблице, если пришли пустые данные, выбирается один из трех доступных вариантов действий. Как и в случае со Структурой *всего Графа сущностей, к Элементу можно применить условия (фильтрацию) для подгрузки значения. После того, как условие будет задано, в редакторе сущностей элемент будет отображаться со знаком фильтра .
      • +
      +
    • +
    +

    Добавление связей сущностей

    +

    Граф сущностей позволяет добавить сразу несколько объектов базы данных (таблиц и представлений) с соответствующими связями между собой. Одновременное использование нескольких таблиц позволяет получить достаточный и необходимый объем информации для вывода из базы данных с помощью SQL-запроса, формируемого Графом сущностей и отображения пользователю на странице с помощью компонент, например, Таблица, Форма и другие. Добавление связей возможно между объектами базы данных, которые либо явно ссылаются друг на друга по ключу, либо связь подразумевается, но внешними ключами не оформлена.

    +

    Для того, чтобы указать связь между сущностями (объектами базы данных) в Редакторе структуры сущностей, необходимо добавить элементы (таблицы или представления базы данных) и от таблицы, которая будет ссылаться на другую таблицу протянуть стрелку, нажав на указатель . Направление стрелки должно быть определено от вторичного ключа к первичному ключу. После добавления связи, необходимо выделить элемент и указать колонки, по которым будут связаны сущностиво вкладке Элемент: Исходящая колонка и Входящая колонка.

    +

    На языке SQL-запросов заданная связь (рис.8) будет иметь вид: LEFT OUTER JOIN public. Конференции AS Конференции ON Список сотрудников.employee_id = Конференции.updated_employee_id

    +

    При настройке и выборе элемента связи сущностей (стрелки ) становится активна вкладка Элемент, где помимо указания колонок связи сущностей (Исходящая и Входящая колонка), есть возможность задать следующие свойства (рис.9):

    +
      + +
    • Связь обязательна означает, что при построении SQL-запроса к базе данных по данной связи будет использоваться оператор INNER JOIN, который возвращает только совпадающие данные из двух объединяемых таблиц. В случае, когда обязательность связи не проставлена, используется оператор LEFT OUTER JOIN, который возвращаетвсе строки из внешней левой таблицы, даже если в правой таблице нет совпадений.
    • +
    • Связь только для сохранения означает, что связь будет использована только для сохранения данных, при подгрузке данных она будет игнорироваться. В случае выбора данного свойства, в Редакторе структуры сущностей стрелка,связывающая объекты, принимает вид
    • +
    • Условие или Группа условий - как и в случае с общей Структурой Графа сущностей и отдельной сущности, имеется возможность добавить к связи условия (фильтры), ограничивающие значения подгружаемых данных.После того, как условие будет задано, вредакторе сущностей элемент стрелка будет отображаться со знаком фильтра(рис.10).
    • +
    +

    На языке SQL-запросов заданное условие (рис.10) будет иметь вид: LEFT OUTER JOIN public. Конференции AS Конференции ON Список сотрудников.employee_id=Конференции.updated_employee_id AND Список сотрудников.legal_entity_id IS NOT NULL

    +

    +

    рис.8 Добавление связи между сущностями

    +

    +

    рис.9 Свойства элемента связи (стрелки)

    +

    +

    рис.10 Применение условия к элементу связи

    +

    Часто задаваемые вопросы

    + + + + + + + + + + + + + + + + + + + + + +
    Вопрос Ответ
    Чем отличается условие заданное через вкладку Структура на весь Граф сущностей и условие заданное на конкретную сущность во вкладке Элемент Заданные условия ничем не отличаются между собой, допустимо использование обоих вариантов указания условий, результат выполнения их будет одинаков.
    После сохранения Графа сущностей, одна из заданных в нём таблиц была удалена или переименована в базе данных. Как это повлияет на структуру сущностей? В данном случае, при открытии Редактора структуры сущностей будет выведено окно с предупреждением. Граф сущностей необходимо будет перерисовать в соответствии с новой структурой базы данных.
    В сохраненную базу данных была добавлена новая таблица, но она не отображается в Дереве БД Редактора структуры сущностей? После внесения изменений в структуру базы данных (новая таблица или представление, новая колонка в таблице) необходимо во вкладке База данных нажать на кнопку Обновить, дождаться завершения обновления, после чего внесенные изменения должны будут отобразиться.
    Для чего необходима Главная сущность? Для компонент, требующих задания структуры сущностей, в Графе сущностей обязательно должна быть выделена Главная сущность, с которой начинаетсяподгрузка и сохранение данных на странице. Например, при работе с Таблицейи привязанной к ней Кнопкой выбора записи, запоминается идентификатор записи Главной сущности.
    +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Общие-стили.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Общие-стили.html new file mode 100644 index 0000000..30aeb0f --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Общие-стили.html @@ -0,0 +1,65 @@ + + + + + + + + Web-BPM Docs – + + + + + + +
    +
    + + + +
    +
    + + + + + + + + + + + + + + + +
    Название класса css Описание
    pull-right прижать объект к правому краю (если что-то съехало относительно данного объекта, положите его в дополнительный контейнер)
    align-center выравнивание объекта по центру по горизонтали (если что-то съехало относительно данного объекта, положите его в дополнительный контейнер)
    +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Общие_свойства_компонент.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Общие_свойства_компонент.html new file mode 100644 index 0000000..67e40dd --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Общие_свойства_компонент.html @@ -0,0 +1,177 @@ + + + + + + + + Web-BPM Docs – Общие свойства компонент + + + + + + +
    +
    + + + +
    +
    +

    Общие свойства компонент

    +

    Подраздел основных параметров: Расширенные настройки

    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +

    +
    +
    + +
      + +
    • внутренний отступ (необходимо указывать единицы измерения)
    • + +
    • внешний отступ (необходимо указывать единицы измерения)
    • + +
    • граница (необходимо указывать единицы измерения)
    • + +
    • stretch: позволяет управлять возможностью автоматического расширения (растягивания) элемента на свободную область
    • +
    + +

    - значение не определено - по умолчанию

    + +

    - элемент будет автоматически занимать всю доступную область

    + +

    - элемент не будет автоматическизанимать всю доступную область

    + +
      + +
    • высота (необходимо указывать единицы измерения, например, 20px): позволяет указать высоту элемента
    • + +
    • ширина (необходимо указывать единицы измерения, например, 40px) : позволяет указать ширину элемента
    • + +
    • минимальная высота (необходимо указывать единицы измерения, например, 20px): позволяет указать минимальную высоту элемента
    • + +
    • минимальная ширина (необходимо указывать единицы измерения, например, 40px) : позволяет указать минимальную ширину элемента
    • + +
    • максимальная высота (необходимо указывать единицы измерения, например, 20px): позволяет указать максимальную высоту элемента
    • + +
    • максимальная ширина (необходимо указывать единицы измерения, например, 40px) : позволяет указать максимальную ширину элемента
    • +
    +

    +
    +
    + +

    +
    +

    позволяет указать список CSS-классов, которые необходимо применить к элементу

    +
    + +

    по умолчанию в ряде компонент указан CSS-класс long-value-input

    + +

    + +

    Данный CSS-класспозволяет сокращать отображаемое значение в поле тремя точками, если значение не умещается по ширине поля:

    + +


    +

    + +

    Если удалить данный CSS-класс в стилях элемента, то отображение значения, не соответствующего ширине поля, имеет следующий вид:

    +
    +
    + +

    +
    позволяет наследовать (или игнорировать наследование) свойства видимости, доступности, обязательности и возможности сохранения от компоненты-контейнера, внутри которого расположен элемент (родителя) +
    + +

    - значение не определено - по умолчанию

    + +

    - наследовать свойства от компоненты-контейнера, внутри которого расположен элемент

    + +

    - не наследовать свойства от компоненты-контейнера, внутри которого расположен элемент

    + +

    например, если перевестив состояниезначение данного свойства у элемента, находящегосявнутри контейнера, у которого включено свойство Недоступно для управления, то поле проигнорирует это свойство от родителя и будет доступно для управления на странице.

    +
    +
    + +
    +
    +

    Attachments:

    +
    + + +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Определить_права_текущего_пользователя.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Определить_права_текущего_пользователя.html new file mode 100644 index 0000000..6b7353d --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Определить_права_текущего_пользователя.html @@ -0,0 +1,57 @@ + + + + + + + + Web-BPM Docs – Определить права текущего пользователя + + + + + + +
    +
    + + + +
    +
    +

    Определить права текущего пользователя

    +

    Функция, которая не имеет настраиваемых аналитиком параметров, но будучи задействованной, позволяет проверить наличие интересующих прав (меток безопасности) у текущего пользователя при выполнении приложения.

    +

    Она относится к той группе функций, чья функциональность применяется и может быть полезной не сразу после добавленияв исходную компоненту, а только при последующем использовании в компоненте “Обработка событий”, когда у исходной компоненты появляется несколько новых доступных методов при конструировании алгоритма обработки событий на web-странице. Например, для такого паттерна обработки: ‘ЕСЛИ данные загружены на форму И (текущий пользователь имеет права (метку безопасности) “WRITE” ИЛИ текущий пользователь имеет права (метку безопасности) “LIST”) ТО кнопку “Сохранить” сделать видимой идоступной для нажатия’

    +

    +

    Рис.1 Активация функции

    +

    +

    Рис.2 Использование функции в компоненте Обработка Событий (появился новый метод “Обладает правами” у компоненты Форма).

    +

    Наименования прав (меток безопасности) в условиях сравнения в компоненте Обработка событий должны соответствовать меткам безопасности, существующим в платформе и отслеживаемым с использованием Инструмента администрирования платформы.

    +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Определить_роли_текущего_пользователя.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Определить_роли_текущего_пользователя.html new file mode 100644 index 0000000..42d6e37 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Определить_роли_текущего_пользователя.html @@ -0,0 +1,57 @@ + + + + + + + + Web-BPM Docs – Определить роли текущего пользователя + + + + + + +
    +
    + + + +
    +
    +

    Определить роли текущего пользователя

    +

    Функция, которая не имеет настраиваемых аналитиком параметров, но будучи задействованной, позволяет проверить наличие интересующей роли у текущего пользователя при выполнении приложения.

    +

    Она относится к той группе функций, чья функциональность применяется и может быть полезной не сразу после добавленияв исходную компоненту, а только при последующем использовании в компоненте “Обработка событий”, когда у исходной компоненты появляется несколько новых доступных методов при конструировании алгоритма обработки событий на web-странице. Например, для такого паттерна обработки: ‘ЕСЛИ данные загружены на форму И (текущий пользователь имеет роль “Администратор” ИЛИ текущий пользователь имеет роль “Руководитель”) ТО кнопку “Сохранить” сделать видимой идоступной для нажатия’

    +

    +

    Рис.1 Активация функции

    +

    +

    Рис.2 Использование функции в компоненте Обработка Событий (появился новый метод “Обладает ролью” у компоненты Форма)

    +

    Наименования ролей в условиях сравнения в компоненте Обработка событий должны соответствовать ролям, существующим в платформе и созданным с использованием Инструмента администрирования платформы.

    +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Определить_текущую_дату_и_сместить_её_вперед_или_назад_на_заданный_период.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Определить_текущую_дату_и_сместить_её_вперед_или_назад_на_заданный_период.html new file mode 100644 index 0000000..8e8ae10 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Определить_текущую_дату_и_сместить_её_вперед_или_назад_на_заданный_период.html @@ -0,0 +1,104 @@ + + + + + + + + Web-BPM Docs – Определить текущую дату и сместить её вперед или назад на заданный период + + + + + + +
    +
    + + + +
    +
    +

    Определить текущую дату и сместить её вперед или назад на заданный период

    +

    Функция, которая в режиме исполнения приложения (runtime mode) определяет текущую дату хоста, на котором работает браузер пользователя, и выставляет ее значением для компоненты Дата. При соответствующих настройках, может на лету сдвигать текущую дату на указанный период (год, месяц, день) в будущее или прошлое и отображать в компоненте Дата уже не текущую дату, а дату, передвинутую на указанный период. Используется для выставления в полях экранного интерфейса значения текущей даты по умолчанию, либо сдвига даты на заранее известный период времени (например, дату открытия наследства). Может быть активирована только на компоненте Дата.

    +

    Особенности функции:

    +
      + +
    • в запущенном приложении исполняется явно (не требует использования компоненты “Обработка событий” и формирования алгоритма работы с задействованием вновь предоставлямых методов)
    • +
    • записывает текущую (или дату со сдвигом) в тот компонент Дата, в котором функция активирована
    • +
    • имеет параметры для настройки аналитиком
    • +
    +

    Рис. 1 Внешний вид активированной функции

    +

    Параметры функции (табл.1)

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Наименование свойства Назначение свойства Пример заполнения
    Количество лет, необязательный позволяет указать количество лет, на которые нужно сдвинуть текущую дату
    Количество месяцев, необязательный позволяет указать количество месяцев, на которые нужно сдвинуть текущую дату
    Количество дней, необязательный позволяет указать количество дней, на которые нужно сдвинуть текущую дату
    В будущее, необязательный позволяет указать направление сдвига заданного периода - в будущее или в прошлое +
      +
    • значение не определено - текущую дату никуда не сдвигать - по умолчанию
    • +
    • Активно - сдвинуть текущую дату на указанный период в будущее
    • +
    • Не активно - сдвинуть текущую дату на указанный период в прошлое
    +

    Пример настройки и применения

    +

    +

    Рис.1 Активация функции на компоненте Дата без сдвига на период

    +

    +

    Рис.2 Активация функции на компоненте Дата со сдвигом на период в прошлое

    +

    Рис.3 Активация функции на компоненте Дата со сдвигом на период в будущее

    +

    Результат работы функции с разными параметрами настройки

    +

    +

    Рис. 4 Открытие web - страницы работающего приложения с полем Дата мероприятия без сдвига

    +

    +

    Рис. 5 Открытие web - страницы работающего приложения с полем Дата мероприятия со сдвигом в прошлое

    +

    +

    Рис. 6 Открытие web - страницы работающего приложения с полем Дата мероприятия со сдвигом в будущее

    +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Подгрузка_данных.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Подгрузка_данных.html new file mode 100644 index 0000000..cd82533 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Подгрузка_данных.html @@ -0,0 +1,105 @@ + + + + + + + + Web-BPM Docs – Подгрузка данных + + + + + + +
    +
    + + + +
    +
    +

    Подгрузка данных

    +

    Назначение

    +

    Функция, которая исполняет сформированный пользователем визуально или явно SQL-запрос на базе данных для одной из операций: INSERT, UPDATE, SELECT. Является строго обязательным для настройки. Попытка сборки и запуска системы в несконфигурированномсостоянии функции приводит к ошибке.

    +

    Вид операции определяется либо инициализацией (открытием) самой web-страницы - тогда выполняется SELECT, либо событием управляющего воздействия пользователя на web-страницу (напр, нажатие кнопки “Сохранение”) - тогда выполняется INSERT или UPDATE.

    +

    Выполнение операции INSERT или UPDATE зависит от значения Переменной процесса с идентификатором: если переменная пуста, то выполняетсяINSERT - запрос, если содержит значение, то выполняется UPDATE - запрос.

    +

    Результатом воздействия запроса любого типа должна служить толькоединственная запись смысловой сущности создаваемого интерфейса (не касается связанных и\или линковых таблиц), в противном случае функция генерирует ошибку и не исполняется.

    +

    Настройка

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Наименование параметра Обязательность Назначение параметра Принимаемые значения
    Скрипт Обязательный позволяет указать один из вариантов реализации скрипта +
      +
    • FormServiceImpl - значение, выставляемое платформой по умолчанию. Обеспечивает сохранение и считывание значения любого визуального компонента, входящего в компоненту Форма, в/из базы данных.
    • +
    • VariableFormService - обеспечивает считывание и/или сохранение значения любого визуального компонента, входящего в компоненту Форма, только из/в переменную процесса (не из/в базу данных).
    Переменная процесса с идентификатором Обязательный позволяет выбрать из списка переменную процесса, содержащую в себе идентификатор смысловой единицы, которой посвящена компонента Форма (и web-страница приложения) Список формируется автоматически из всех переменных используемых в BPMN-процессе. Является ограничивающим значением запроса (в секции WHERE primary_id = ), построенного в визуальном конструкторе параметра Граф сущностей. Благодаря этому ограничению компонента Форма как источник данных выбирает атрибуты единственной смысловой сущности создаваемого интерфейса. Указанная переменная процесса может не содержать значения, и это означает, что web - страница открыта для создания новой записи в базе данных и после нажатия на кнопку сохранения будет выполнен оператор INSERT. Указанная переменная процесса может содержать значение идентификатора, и это означает, что web - страница открыта для отображения текущих атрибутов одной существующей записи, в нее могут быть внесены изменения, и после нажатия на кнопку сохранения будет выполнен оператор UPDATE.
    Источник данных. Скрипт Обязательный позволяет выбрать способ построения запроса - либо визуальный конструктор, либо кастомный SQL запрос +
      +
    • FormDaoImpl - Запрос формируется визуальным конструктором, значение по умолчанию
    • +
    • CustomSqlFormDao - запрос может быть сформирован вручную в отдельном окне
    • +
    • EditableOneToManyDaoImpl
    Граф сущностей Обязательный позволяет с помощью визуального конструктора сформировать набор объектов базы данных, указать взаимосвязи между ними и\или дополнительные условия, тем самым подготовить запрос в базу данных. При подгрузке данных сформированный запрос отрабатывает как Select-запрос, при сохранении новой информации как Insert-запрос, при внесении изменений как Update-запрос.
    Скрипты валидации формы Не обязательный Сценарии проверки валидности данных на форме, которые выполняются при сохранении формы (например, проверка уникальности сохраняемой улицы (что в базе ее действительно пока еще нет, или проверка правильности соотнесения значений сразу нескольких полей и т.п.).Если валидация не прошла, то выдается ошибка и сохранение формы прекращается. В базовой конфигурации сценарии не поставляются, они создаются дополнительно разработчиками под конкретные запросы пользователей. После подготовки программного кода такого скрипта и интеграции в платформу, его можно выбрать в этом пункте настроек по имени из выпадающего списка.
    Скрипты, выполняемые после сохранения формы Не обязательный Вызов обработчиков после сохранения данных. В качестве обработчиков могут выступать сценарии манипулирования данными на языке SQL с входными и выходными параметрами.
    +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Подгрузка_данных_по_умолчанию.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Подгрузка_данных_по_умолчанию.html new file mode 100644 index 0000000..e06782c --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Подгрузка_данных_по_умолчанию.html @@ -0,0 +1,105 @@ + + + + + + + + Web-BPM Docs – Подгрузка данных по умолчанию + + + + + + +
    +
    + + + +
    +
    +

    Подгрузка данных по умолчанию

    +

    Назначение

    +

    Функция, которая может быть активирована на любой компоненте-контейнере (как правило, на компоненте Форма), и которая исполняет сформированный пользователем визуально SQL-SELECT запрос на базе данных. Полученные в результате исполнения запроса значения могут быть переданы в дочерние визуальные компоненты текущего контейнера для заполнения этих визуальных компонентов значениями по умолчанию. Результатом запроса должна служить толькоединственная запись смысловой единицы создаваемого интерфейса , в противном случае скрипт генерирует ошибку и не исполняется.

    +

    Функция не является обязательной для настройки, но должна присутствовать на компонентах - контейнерах в любом случае (совсем удалять функцию с компоненты нельзя). Функция активирована по умолчанию на компонентах-контейнерах Форма и Набор фильтров.

    +

    Для остальных компонент - контейнеров требует активации вручную при необходимости. Активация происходит выставлением флажка рядом с наименованием функции:

    +

    - активированное состояние функции

    +

    - не активированное состояние функции

    +

    Настройка

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Наименование параметра Назначение параметра Принимаемые значения
    Скрипт Единственный возможный вариант, выставлен по умолчанию
    Источник данных. Скрипт предписывает использовать визуальный конструктор для построения запроса DefaultLoadDao - Запрос формируется визуальным конструктором.
    Граф сущностей Граф сущностей позволяет с помощью визуального конструктора сформировать набор объектов базы данных, указать взаимосвязи между ними и\или дополнительные условия, тем самым подготовить запрос в базу данных. При подгрузке данных сформированный запрос отрабатывает как Select-запрос.
    Переменная процесса с идентификатором позволяет выбрать из списка переменную процесса, содержащую в себе идентификатор смысловой единицы, для которой подгружаются ‘значения по умолчанию’ на web-странице приложения. Список формируется автоматически из всех переменных, используемых в BPMN-процессе. Является ограничивающим значением запроса (в секции WHERE primary_id = ), построенного в визуальном конструкторе параметра Граф сущностей. Благодаря этому ограничению источник данных выбирает атрибуты единственной смысловой единицы создаваемого интерфейса. указанная переменная процесса может не содержать в себе значения, и это означает, что никаких значений по умолчанию подгружено не будет.
    uniqueResult позволяет при выполнении запроса исключить повторяющиеся строки из результата.
    +

    Если одна компонента-контейнер вложена в другую (например, в компоненту Форма вложена компонента Горизонтальный контейнер, а в нее - Вертикальный контейнер), то следует учитывать особенности взаимодействия функций Подгрузка данных по умолчанию из компонент-контейнеров разных уровней:

    + + + + + + + + + + + + + + +
    Компонента ‘Форма 1’ - родительский контейнер Компонента ‘Горизонтальный контейнер ( а )’ является дочерней для компоненты ‘Форма 1’. Компонента ‘Вертикальный контейнер ( I )’ является дочерней для компоненты ‘Горизонтальный контейнер ( а )’.
    В нем активирована функция Подгрузка данных по умолчанию. Внутри расположен Горизонтальный контейнер и на одном уровне с ним - визуальные компоненты. Компоненты ‘Текстовое поле 1’ и ‘Числовое поле 1’, расположенные внутри компоненты ‘Форма 1’, могут получать ‘значения по умолчанию’ только из таблиц и колонок структуры сущности, заданной в функции Подгрузка данных по умолчанию компоненты ‘Форма 1’ Компонента ‘Горизонтальный контейнер ( а )’ является дочерней для компоненты ‘Форма 1’. В компоненте ‘Горизонтальный контейнер ( а )’ не активирована функция Подгрузка данных по умолчанию, но в родительской компоненте ‘Форма 1’ одноименная функция активирована. Внутри компоненты ‘Горизонтальный контейнер ( а )’ расположен Вертикальный контейнер и на одном уровне с ним - визуальные компоненты. Компоненты ‘Дата ( а )’ и ‘Статичный выпадающий список ( а )’, расположенные внутри компоненты ‘Горизонтальный контейнер ( а )’, могут получать ‘значения по умолчанию’ только из таблиц и колонок структуры сущности, заданной в функции Подгрузка данных по умолчанию компоненты ‘Форма 1’, поскольку у их прямого родительского компонента ‘Горизонтальный контейнер ( а )’ эта функция не активирована, но зато они являются наследниками компоненты-контейнера ‘Форма 1’. Таким образом, визуальные компоненты игнорируют те уровни, на которых функция не активирована и тянуться вверх по дереву до того уровня, пока не найдут первую настроенную и активированную функцию Подгрузка данных по умолчанию. Компонента ‘Вертикальный контейнер ( I )’ является дочерней для компоненты ‘Горизонтальный контейнер ( а )’. В компоненте ‘Вертикальный контейнер ( I )’ активирована функция Подгрузка данных по умолчанию. Внутри компоненты ‘Вертикальный контейнер ( I )’ расположены только визуальные компоненты. Компоненты ‘ФИАС ( I )’ и ‘Поле многострочного ввода ( I )’, расположенные внутри компоненты Вертикальный контейнер ( I )’, могут получать ‘значения по умолчанию’ только из таблиц и колонок структуры сущности, заданной в функции Подгрузка данных по умолчанию компоненты ‘Вертикальный контейнер ( I )’
    +

    Функция Подгрузка данных по умолчанию позволяет только сформировать и исполнить запрос для получения определенных сведений из базы данных, последующее указание аналитика платформе на то, каким значением из какой таблицы и какой визуальный компонент следует заполнить происходит в настройках функции Заполнить значением по умолчаниюлюбого визуального компонента (параметр Тип подгрузки - > Из колонки)

    +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Преобразование_текущей_даты.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Преобразование_текущей_даты.html new file mode 100644 index 0000000..753f8f2 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Преобразование_текущей_даты.html @@ -0,0 +1,104 @@ + + + + + + + + Web-BPM Docs – Определить текущую дату и сместить её вперед или назад на заданный период + + + + + + +
    +
    + + + +
    +
    +

    Определить текущую дату и сместить её вперед или назад на заданный период

    +

    Функция, которая в режиме исполнения приложения (runtime mode) определяет текущую дату хоста, на котором работает браузер пользователя, и выставляет ее значением для компоненты Дата. При соответствующих настройках, может на лету сдвигать текущую дату на указанный период (год, месяц, день) в будущее или прошлое и отображать в компоненте Дата уже не текущую дату, а дату, передвинутую на указанный период. Используется для выставления в полях экранного интерфейса значения текущей даты по умолчанию, либо сдвига даты на заранее известный период времени (например, дату открытия наследства). Может быть активирована только на компоненте Дата.

    +

    Особенности функции:

    +
      + +
    • в запущенном приложении исполняется явно (не требует использования компоненты “Обработка событий” и формирования алгоритма работы с задействованием вновь предоставлямых методов)
    • +
    • записывает текущую (или дату со сдвигом) в тот компонент Дата, в котором функция активирована
    • +
    • имеет параметры для настройки аналитиком
    • +
    +

    Рис. 1 Внешний вид активированной функции

    +

    Параметры функции (табл.1)

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Наименование свойства Назначение свойства Пример заполнения
    Количество лет, необязательный позволяет указать количество лет, на которые нужно сдвинуть текущую дату
    Количество месяцев, необязательный позволяет указать количество месяцев, на которые нужно сдвинуть текущую дату
    Количество дней, необязательный позволяет указать количество дней, на которые нужно сдвинуть текущую дату
    В будущее, необязательный позволяет указать направление сдвига заданного периода - в будущее или в прошлое +
      +
    • значение не определено - текущую дату никуда не сдвигать - по умолчанию
    • +
    • Активно - сдвинуть текущую дату на указанный период в будущее
    • +
    • Не активно - сдвинуть текущую дату на указанный период в прошлое
    +

    Пример настройки и применения

    +

    +

    Рис.1 Активация функции на компоненте Дата без сдвига на период

    +

    +

    Рис.2 Активация функции на компоненте Дата со сдвигом на период в прошлое

    +

    Рис.3 Активация функции на компоненте Дата со сдвигом на период в будущее

    +

    Результат работы функции с разными параметрами настройки

    +

    +

    Рис. 4 Открытие web - страницы работающего приложения с полем Дата мероприятия без сдвига

    +

    +

    Рис. 5 Открытие web - страницы работающего приложения с полем Дата мероприятия со сдвигом в прошлое

    +

    +

    Рис. 6 Открытие web - страницы работающего приложения с полем Дата мероприятия со сдвигом в будущее

    +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Преобразовать_в_колонки_со_значениями-переходами.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Преобразовать_в_колонки_со_значениями-переходами.html new file mode 100644 index 0000000..6da7a83 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Преобразовать_в_колонки_со_значениями-переходами.html @@ -0,0 +1,96 @@ + + + + + + + + Web-BPM Docs – Преобразовать в колонки со значениями-переходами + + + + + + +
    +
    + + + +
    +
    +

    Преобразовать в колонки со значениями-переходами

    +

    Назначение

    +
    + +

    Внимание: данный скрипт помечен как устаревший. Вместо него необходимо использовать либо NavigateOnGridCellOrRow (для всех таблиц, в т.ч. GridV2), либо ColumnNavigationRenderer (для таблиц GridV2, настройка без индексов).

    +
    +

    Функцию Преобразовать в колонки со значениями-переходами допустимо использовать при настройке компоненты Таблица (по кнопке Добавить функцию) и расширяет её базовые возможности. Добавление данного функционала в настройку компоненты Таблицы (рис.1) позволяет отображать значение в конкретной колонке (указанной в настройке функции) в виде гиперссылки, по нажатию на которую на странице приложения возможен следующий переходпо процессу (например, открытие страницы) по определённому значению переменной навигации.

    +

    +

    рис.1 Добавление функции Преобразовать в колонки со значениями-переходами

    +

    Настройка

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Наименование свойства Назначение свойства Принимаемые значения
    Сохранить идентификатор позволяет указать переменную процесса, в которую система сохранит идентификатор строки (значение идентификатора главной сущности в Графе сущностей компоненты Таблицы либо идентификатор из конкретной колонки)
    Значение для навигации позволяет задать значение, которое будет записано в переменную навигации данного процесса (по данному значению будет осуществляться переход при нажатие на колонку-гиперссылку)
    Переходить собственному позволяет указать колонку, значение из которой будет записано в переменную процесса, указанную в свойстве Сохранить идентификатор строки в Активно - будет взято значение самого идентификатора строки(значение идентификатора главной сущности в Графе сущностей компоненты). Не активно - позволяет указать порядковый номер колонки, содержащую в себе значение идентификатора, которое необходимо сохранить в переменную процесса
    Номер колонки позволяет указать номер колонки (в порядке следования в таблице), которая будет преобразована колонку перехода пример возможного значения: 3
    Номер колонки из которого позволяет указать номер колонки (в порядке следования в таблице) значение из которой будет взято для сохранения в переменную процесса, указанную в свойстве Сохранить идентификатор строки в (доступно для настройки при значении свойстваПереходить по собственному идентификатору) пример возможного значения: 6
    +

    Пример настройки

    +

    В настройке функции Преобразовать в колонки со значениями-переходами (рис.1) в качестве колонки-перехода укажем значение колонки Неделя (порядковый номер - 3), которая на странице приложения отображается как ссылка (рис.2), по нажатию на которую будет происходить дальнейший переход по процессу. Свойства функции настроены в соответствии с необходимой логикой.

    +

    +

    рис.1 Пример настройки функции

    +

    +

    рис.2 Отображение колонки-перехода на странице приложения

    +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Склеить_несколько_значений.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Склеить_несколько_значений.html new file mode 100644 index 0000000..0c61b89 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Склеить_несколько_значений.html @@ -0,0 +1,112 @@ + + + + + + + + Web-BPM Docs – Склеить несколько значений + + + + + + +
    +
    + + + +
    +
    +

    Склеить несколько значений

    +

    Функция, которая принимает на вход массив значений из любых визуальных компонентов, конвертирует эти значения на лету в строковый тип и на выходе формирует в значении отдельного компонента цельную единую строку, являющуюся результатом конкатенации значений компонент, принятых на входе. Может быть активирована на компонентах, работающих со строковыми типами данных: Текстовое поле, Текст, Поле многострочного ввода.

    +

    В отличие от функции “Добавить строку к значению в текущем поле”:

    +
      + +
    • в запущенном приложении исполняется явно (не требует использования компоненты “Обработка событий” и формирования алгоритма работы с задействованием вновь предоставлямых методов)
    • +
    • работает с неограниченным количеством визуальных компонент
    • +
    • позволяет задавать префиксы и постфиксы для соединяемых значений
    • +
    • не перезаписываетновообразованной строкой ранее находившееся в одной из склеиваемых компонент значение
    • +
    • имеет параметры для настройки аналитиком
    • +
    • работает с любыми типами данных и при необходимости может служить сама по себе конвертером значений любых типов из других компонент в строковый тип данных
    • +
    +

    +

    Рис. 1 Внешний вид активированной функции

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Наименование свойства Назначение свойства Принимаемые значения
    Массив склеиваемых значений Позволяет сформировать список компонент на странице, значения которых будут участвовать в конкатенации. Каждый последующий элемент списка добавляется с помощью кнопки
    Элемент, обязательный позволяет настроить один из элементов списка
    Префикс, необязательный позволяет задать набор символов, которые будут добавлены в результирующую строку перед фактическим значением склеиваемой компоненты
    Значение, обязательный позволяет указать компонент, значение которого будет склеиваться функцией
    Постфикс, необязательный позволяет задать набор символов, которые будут добавлены в результирующую строку после фактического значения склеиваемой компоненты
    Склеивать значения через подстроку, обязательный позволяет задать набор символов, который будет разделять склеиваемые значения разных компонент Чаще всего заполняется пробелом
    +

    Пример настройки и применения

    +

    +

    Рис.2 Активация функции на компоненте Многострочный ввод текста.

    + +

    Заполнение параметров Значениев массиве склеиваемых значений происходит путем перетаскивания манипулятором мышь соответствующих компонентов из дерева структуры страницы в окно параметра Значение каждого из элементов массива склеиваемых значений (как показано стрелками на скриншоте).

    + +

    Также существует удобная функциональность обратного быстрого перехода по дереву структуры страницы к задействованной компоненте посредством клика на параметреЗначение, когда есть необходимость уточнить, на какую именно компоненту в дереве ссылается интересующий параметр.

    + +

    +

    Рис. 3 Открытие web - страницы работающего приложения в момент когда склеиваемые поля еще не заполнены

    +

    +

    Рис.4 Работа с web страницей. Часть склеиваемых полей уже заполнено, отработали префиксы и постфиксы из настроек

    +

    +

    Рис.5 Завершение работы с группой полей, участвующих в объединении значений. В итогом поле получили соединенный текст с учетом префиксов и постфиксов соединяемых значений

    +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Сконвертировать_значение_в_целочисленный_тип.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Сконвертировать_значение_в_целочисленный_тип.html new file mode 100644 index 0000000..0610a3d --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Сконвертировать_значение_в_целочисленный_тип.html @@ -0,0 +1,65 @@ + + + + + + + + Web-BPM Docs – Сконвертировать значение в целочисленный тип + + + + + + +
    +
    + + + +
    +
    +

    Сконвертировать значение в целочисленный тип

    +

    Функция, которая не имеет настраиваемых аналитиком параметров, но будучи задействованной, позволяет осуществить преобразование значения в исходном компоненте из текущего типа (чаще всего, в компоненте Поле ввода с подбором значенияиз типа данных ANY) в целочисленный тип данных.

    +

    Она относится к той группе функций, чья функциональность применяется и может быть полезной не сразу после добавленияв исходную компоненту, а только при последующем использовании в компоненте “Обработка событий”, когда у исходной компоненты появляется нескольконовых доступных методов при конструировании алгоритма обработки событий на web-странице. Например, для такого паттерна обработки: ‘ЕСЛИ в компоненте Поле ввода с подбором значения выбрано(изменилось) значение, ТО в компоненту числовое поле вывести идентификатор(первичный ключ) этого значения’

    +

    +

    Рис.1 Активация функции на компоненте Поле ввода с подбором значения

    +

    +

    Рис.2 Числовое поле, в которое будем записывать идентификатор значения из компонента Поле ввода с подбором значения

    +

    +

    Рис. 3 Пример алгоритма заполнения числового поля идентификатором значения, выбранного в поле с Постановщиком задачи, при условии расширения функциональности исходной компоненты Поле ввода с подбором значения функцией “Сконвертировать значение в целочисленный тип” (появился новый метод “Сконвертировать в число” у исходной компоненты )

    +

    +

    Рис.4 Пример невозможности построения алгоритма из-за отсутствия необходимого метода “Сконвертировать в число”, вследствие удаления функции “Сконвертировать значение в целочисленный тип” из исходной компоненты Поле ввода с подбором значения “Постановщик задачи” (пропал метод “Сконвертировать в число” у исходной компоненты)

    +

    После запуска web-приложения (in runtime mode) выбираем в компоненте Список с поиском одно из значений (например, постановщика задачи с фамилией Дякин), после этого значение идентификатора (первичный ключ сотрудника по фамилии Дякин в справочнике) переносится в поле"Идентификатор постановщика", а в консоли браузера можно наблюдать сообщение о срабатывании компоненты Обработка событий, которое показывает выполненное функцией действие.

    +

    +

    Рис 5.Выбираем Постановщика задачи

    +

    +

    Рис.6 Функция заполняет числовое поле идентификатором

    +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Сместить_дату_из_поля_на_период_вперед_или_назад.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Сместить_дату_из_поля_на_период_вперед_или_назад.html new file mode 100644 index 0000000..a4517d3 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Сместить_дату_из_поля_на_период_вперед_или_назад.html @@ -0,0 +1,97 @@ + + + + + + + + Web-BPM Docs – Сместить дату из поля на период вперед или назад + + + + + + +
    +
    + + + +
    +
    +

    Сместить дату из поля на период вперед или назад

    +

    Функция, которая в режиме исполнения приложения (runtime mode) может на лету считывать исходное значение даты из одной компоненты Дата и отображать в другой компоненте Дата исходное значение даты, смещенное на определенный период (или годы, или месяцы, или дни) в будущее или прошлое. Используется для выставления в полях экранного интерфейса значения даты со сдвигом на заранее заданный период времени. Может быть активирована только на компоненте Дата.

    +

    Она относится к той группе функций, чья функциональность применяется и может быть полезной не сразу после добавленияв исходную компоненту, а только при последующем использовании в компоненте “Обработка событий”, когда у исходной компоненты появляется нескольконовых доступных методов при конструировании алгоритма обработки событий на web-странице. Например, для такого паттерна обработки: ‘ЕСЛИ в исходном компоненте Дата выбрано(изменилось) значение, ТО в другую компоненту Дата вывести значение из исходного, но на заранее заданный период (или годы, или месяцы, или дни) в будущее или прошлое’.

    +

    Функция имеет параметры, позволяющие аналитику задать направление и величину сдвига во времени.

    +

    Параметры функции (табл.1)

    + + + + + + + + + + + + + + + + + + +
    Наименование свойства Назначение свойства Принимаемые значения
    Величина периода, обязательный позволяет указать величину временных периодов, на которую будет смещена исходная дата Пример возможного занчения: 2
    Единица измерения периода, обязательный позволяет указать размерность временного периода, в которых измеряется сдвиг Дни, месяцы, годы
    +

    +

    Рис.1 Активация функции на поле “Исходная дата”

    +

    +

    Рис.2 Поле “Дата после применения функции”, в которое будем записывать значение исходной даты, сдвинутое на заданный промежуток времени - 2 года

    +

    +

    Рис. 3 Пример алгоритма заполнения поля “Дата после применения функции” значением поля “Исходная дата”, сдвинутым на 2 года в прошлое (появилось 2 новых метода “Сдвинуть на период в будущее”; и “Сдвинуть на период в прошлое” у компоненты Дата)

    +

    Для применения функции Сместить дату из поля на период вперед или назад следует использоваться связку методов компоненты Дата:

    +
      + +
    • + +

      Задать значение как дату для поля-приемника измененной даты

      +
    • +
    • + +

      Сдвинуть на период в прошлое (будущее) для источника исходной даты

      +
    • +
    +

    Использование в поле-приемнике похожего метода компоненты Дата “Задать значение” приведет к невозможности использования метода “Сдвинуть на период в прошлое (будущее)” для источника даты при формировании алгоритма обработки события.

    +

    После запуска web-приложения (in runtime mode) выбираем дату в компоненте Исходная Дата (например,01.03.2019), после этого значение даты в поле Дата после применения функции изменится на 01.03.2017 г., а в консоли браузера можно наблюдать сообщение о срабатывании компоненты Обработка событий, которое показывает выполненное функцией действие.

    +

    +

    Рис 5.Состояние интерфейса до изменения поля Исходная дата

    +

    +

    Рис.6 Функция заполняет поле Дата после применения функции

    +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Сохранение_заголовка_выбранной_вкладки_в_переменную_процесса.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Сохранение_заголовка_выбранной_вкладки_в_переменную_процесса.html new file mode 100644 index 0000000..0e3f116 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Сохранение_заголовка_выбранной_вкладки_в_переменную_процесса.html @@ -0,0 +1,54 @@ + + + + + + + + Web-BPM Docs – Сохранение заголовка выбранной вкладки в переменную процесса + + + + + + +
    +
    + + + +
    +
    +

    Сохранение заголовка выбранной вкладки в переменную процесса

    +

    Используется для возврата на нужную вкладку после выхода с формы.

    +

    На TabContainer ts\custom\tab\TabContainerState.ts, java\custom\tab\TabContainerStateRpcService.java и внутрь последнего java\custom\tab\TabContainerStateVariableService.java

    +

    Далее нужно в TabContainerStateVariableService выбрать переменную процесса (тип - строка), в которую будет сохраняться заголовок выбранного таба.

    +

    Если после каких-то манипуляций не нужно восстанавливать открытый таб, то нужно использовать обработчик, очищающий переменную.

    +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Сохранить_значение_в_переменную_процесса.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Сохранить_значение_в_переменную_процесса.html new file mode 100644 index 0000000..e779164 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Сохранить_значение_в_переменную_процесса.html @@ -0,0 +1,58 @@ + + + + + + + + Web-BPM Docs – Сохранить значение в переменную процесса + + + + + + +
    +
    + + + +
    +
    +

    Сохранить значение в переменную процесса

    +

    Назначение

    +

    Сохранить значение в переменную процесса любого типа - эта функция позволяет задать переменную процесса, в которую будет сохраняться введенное значение, которое в последствии может передаваться на другие страницы приложения в зависимости от решаемой задачи.

    +

    Настройка

    +

    Для добавления функции в логику работы компоненты необходимо нажать на кнопку Добавить скрипт - Выбрать из спискафункцию, если она предусмотрена для использования с компонентой (рис.1) - Указать переменную, в которую будет сохраняться значение из поля (рис.2)

    +

    +

    рис.1. Добавление функции

    +

    +

    рис.2. Настройка функции

    +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Управление_навигацией.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Управление_навигацией.html new file mode 100644 index 0000000..a6a6bd4 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Управление_навигацией.html @@ -0,0 +1,72 @@ + + + + + + + + Web-BPM Docs – Управление навигацией + + + + + + +
    +
    + + + +
    +
    +

    Управление навигацией

    +

    Функция, которая в режиме исполнения приложения (runtime mode) закрывает текущую web-страницу (завершает пользовательскую BPMN задачу), сохраняет предопределенное в настройках функции значение в переменную процесса navigation и отправляет маркер процесса к следующему узлу схемы процесса (чаще всего, к исключающему шлюзу, в котором на основании значения переменной navigation осуществляется выбор одного из возможных дальнейших маршрутов).

    +

    Может быть активирована только на компонентах Кнопка сохранения, Кнопка Выбора, Кнопка Отмены семейства компонент Кнопка.

    +

    Параметры функции (табл.1)

    + + + + + + + + + + + + + + +
    Наименование свойства Назначение свойства Принимаемые значения
    Значение переменной навигации, обязательный позволяет указать значение, которое будет сохранено в переменную процесса navigation Возможное значение например: edit
    +

    Объявление навигационной переменной с именем navigation и типом String является обязательным требованием при создании любого BPMN процесса в редакторе бизнес процессов:

    +

    +

    Обычной практикой является оперирование этой переменной при определении условий в исключающих шлюзах при разработке бизнес-процессов и анализ значения этой переменной в компоненте Обработка событий на странице в редакторе интерфейса. Некоторая часть дополнительных функций визуальных компонентов по умолчанию ссылается в своих настройках на эту переменную.

    +

    +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Функции.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Функции.html new file mode 100644 index 0000000..973c17b --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/Функции.html @@ -0,0 +1,77 @@ + + + + + + + + Web-BPM Docs – Функции + + + + + + +
    +
    + + + +
    +
    +

    Функции

    +

    Полный справочник функций, доступных для всех компонент:

    + +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/css/apache-maven-fluido-1.9.min.css b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/css/apache-maven-fluido-1.9.min.css new file mode 100644 index 0000000..0bafa30 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/css/apache-maven-fluido-1.9.min.css @@ -0,0 +1,17 @@ +/*! + * Bootstrap v2.3.2 + * + * Copyright 2013 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world by @mdo and @fat. + */.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;line-height:0;content:""}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}a:hover,a:active{outline:0}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{width:auto\9;height:auto;max-width:100%;vertical-align:middle;border:0;-ms-interpolation-mode:bicubic}#map_canvas img,.google-maps img{max-width:none}button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle}button,input{*overflow:visible;line-height:normal}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}button,html input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button}label,select,button,input[type="button"],input[type="reset"],input[type="submit"],input[type="radio"],input[type="checkbox"]{cursor:pointer}input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none}textarea{overflow:auto;vertical-align:top}@media print{*{color:#000 !important;text-shadow:none !important;background:transparent !important;box-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}@page{margin:.5cm}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}}body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:20px;color:#333;background-color:#fff}a{color:#08c;text-decoration:none}a:hover,a:focus{color:#005580;text-decoration:underline}.img-rounded{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.img-polaroid{padding:4px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.1);-moz-box-shadow:0 1px 3px rgba(0,0,0,0.1);box-shadow:0 1px 3px rgba(0,0,0,0.1)}.img-circle{-webkit-border-radius:500px;-moz-border-radius:500px;border-radius:500px}.row{margin-left:-20px;*zoom:1}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;min-height:1px;margin-left:20px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px}.span12{width:940px}.span11{width:860px}.span10{width:780px}.span9{width:700px}.span8{width:620px}.span7{width:540px}.span6{width:460px}.span5{width:380px}.span4{width:300px}.span3{width:220px}.span2{width:140px}.span1{width:60px}.offset12{margin-left:980px}.offset11{margin-left:900px}.offset10{margin-left:820px}.offset9{margin-left:740px}.offset8{margin-left:660px}.offset7{margin-left:580px}.offset6{margin-left:500px}.offset5{margin-left:420px}.offset4{margin-left:340px}.offset3{margin-left:260px}.offset2{margin-left:180px}.offset1{margin-left:100px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.127659574468085%;*margin-left:2.074468085106383%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.127659574468085%}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.48936170212765%;*width:91.43617021276594%}.row-fluid .span10{width:82.97872340425532%;*width:82.92553191489361%}.row-fluid .span9{width:74.46808510638297%;*width:74.41489361702126%}.row-fluid .span8{width:65.95744680851064%;*width:65.90425531914893%}.row-fluid .span7{width:57.44680851063829%;*width:57.39361702127659%}.row-fluid .span6{width:48.93617021276595%;*width:48.88297872340425%}.row-fluid .span5{width:40.42553191489362%;*width:40.37234042553192%}.row-fluid .span4{width:31.914893617021278%;*width:31.861702127659576%}.row-fluid .span3{width:23.404255319148934%;*width:23.351063829787233%}.row-fluid .span2{width:14.893617021276595%;*width:14.840425531914894%}.row-fluid .span1{width:6.382978723404255%;*width:6.329787234042553%}.row-fluid .offset12{margin-left:104.25531914893617%;*margin-left:104.14893617021275%}.row-fluid .offset12:first-child{margin-left:102.12765957446808%;*margin-left:102.02127659574467%}.row-fluid .offset11{margin-left:95.74468085106382%;*margin-left:95.6382978723404%}.row-fluid .offset11:first-child{margin-left:93.61702127659574%;*margin-left:93.51063829787232%}.row-fluid .offset10{margin-left:87.23404255319149%;*margin-left:87.12765957446807%}.row-fluid .offset10:first-child{margin-left:85.1063829787234%;*margin-left:84.99999999999999%}.row-fluid .offset9{margin-left:78.72340425531914%;*margin-left:78.61702127659572%}.row-fluid .offset9:first-child{margin-left:76.59574468085106%;*margin-left:76.48936170212764%}.row-fluid .offset8{margin-left:70.2127659574468%;*margin-left:70.10638297872339%}.row-fluid .offset8:first-child{margin-left:68.08510638297872%;*margin-left:67.9787234042553%}.row-fluid .offset7{margin-left:61.70212765957446%;*margin-left:61.59574468085106%}.row-fluid .offset7:first-child{margin-left:59.574468085106375%;*margin-left:59.46808510638297%}.row-fluid .offset6{margin-left:53.191489361702125%;*margin-left:53.085106382978715%}.row-fluid .offset6:first-child{margin-left:51.063829787234035%;*margin-left:50.95744680851063%}.row-fluid .offset5{margin-left:44.68085106382979%;*margin-left:44.57446808510638%}.row-fluid .offset5:first-child{margin-left:42.5531914893617%;*margin-left:42.4468085106383%}.row-fluid .offset4{margin-left:36.170212765957444%;*margin-left:36.06382978723405%}.row-fluid .offset4:first-child{margin-left:34.04255319148936%;*margin-left:33.93617021276596%}.row-fluid .offset3{margin-left:27.659574468085104%;*margin-left:27.5531914893617%}.row-fluid .offset3:first-child{margin-left:25.53191489361702%;*margin-left:25.425531914893618%}.row-fluid .offset2{margin-left:19.148936170212764%;*margin-left:19.04255319148936%}.row-fluid .offset2:first-child{margin-left:17.02127659574468%;*margin-left:16.914893617021278%}.row-fluid .offset1{margin-left:10.638297872340425%;*margin-left:10.53191489361702%}.row-fluid .offset1:first-child{margin-left:8.51063829787234%;*margin-left:8.404255319148938%}[class*="span"].hide,.row-fluid [class*="span"].hide{display:none}[class*="span"].pull-right,.row-fluid [class*="span"].pull-right{float:right}.container{margin-right:auto;margin-left:auto;*zoom:1}.container:before,.container:after{display:table;line-height:0;content:""}.container:after{clear:both}.container-fluid{padding-right:20px;padding-left:20px;*zoom:1}.container-fluid:before,.container-fluid:after{display:table;line-height:0;content:""}.container-fluid:after{clear:both}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:21px;font-weight:200;line-height:30px}small{font-size:85%}strong{font-weight:bold}em{font-style:italic}cite{font-style:normal}.muted{color:#999}a.muted:hover,a.muted:focus{color:gray}.text-warning{color:#c09853}a.text-warning:hover,a.text-warning:focus{color:#a47e3c}.text-error{color:#b94a48}a.text-error:hover,a.text-error:focus{color:#953b39}.text-info{color:#3a87ad}a.text-info:hover,a.text-info:focus{color:#2d6987}.text-success{color:#468847}a.text-success:hover,a.text-success:focus{color:#356635}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}h1,h2,h3,h4,h5,h6{margin:10px 0;font-family:inherit;font-weight:bold;line-height:20px;color:inherit;text-rendering:optimizelegibility}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:normal;line-height:1;color:#999}h1,h2,h3{line-height:40px}h1{font-size:38.5px}h2{font-size:31.5px}h3{font-size:24.5px}h4{font-size:17.5px}h5{font-size:14px}h6{font-size:11.9px}h1 small{font-size:24.5px}h2 small{font-size:17.5px}h3 small{font-size:14px}h4 small{font-size:14px}.page-header{padding-bottom:9px;margin:20px 0 30px;border-bottom:1px solid #eee}ul,ol{padding:0;margin:0 0 10px 25px}ul ul,ul ol,ol ol,ol ul{margin-bottom:0}li{line-height:20px}ul.unstyled,ol.unstyled{margin-left:0;list-style:none}ul.inline,ol.inline{margin-left:0;list-style:none}ul.inline>li,ol.inline>li{display:inline-block;*display:inline;padding-right:5px;padding-left:5px;*zoom:1}dl{margin-bottom:20px}dt,dd{line-height:20px}dt{font-weight:bold}dd{margin-left:10px}.dl-horizontal{*zoom:1}.dl-horizontal:before,.dl-horizontal:after{display:table;line-height:0;content:""}.dl-horizontal:after{clear:both}.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}hr{margin:20px 0;border:0;border-top:1px solid #eee;border-bottom:1px solid #fff}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}abbr.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:0 0 0 15px;margin:0 0 20px;border-left:5px solid #eee}blockquote p{margin-bottom:0;font-size:17.5px;font-weight:300;line-height:1.25}blockquote small{display:block;line-height:20px;color:#999}blockquote small:before{content:'\2014 \00A0'}blockquote.pull-right{float:right;padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}blockquote.pull-right p,blockquote.pull-right small{text-align:right}blockquote.pull-right small:before{content:''}blockquote.pull-right small:after{content:'\00A0 \2014'}q:before,q:after,blockquote:before,blockquote:after{content:""}address{display:block;margin-bottom:20px;font-style:normal;line-height:20px}code,pre{padding:0 3px 2px;font-family:Monaco,Menlo,Consolas,"Courier New",monospace;font-size:12px;color:#333;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}code{padding:2px 4px;color:#d14;white-space:nowrap;background-color:#f7f7f9;border:1px solid #e1e1e8}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:20px;word-break:break-all;word-wrap:break-word;white-space:pre;white-space:pre-wrap;background-color:#f5f5f5;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}pre.prettyprint{margin-bottom:20px}pre code{padding:0;color:inherit;white-space:pre;white-space:pre-wrap;background-color:transparent;border:0}.pre-scrollable{max-height:340px;overflow-y:scroll}form{margin:0 0 20px}fieldset{padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:40px;color:#333;border:0;border-bottom:1px solid #e5e5e5}legend small{font-size:15px;color:#999}label,input,button,select,textarea{font-size:14px;font-weight:normal;line-height:20px}input,button,select,textarea{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}label{display:block;margin-bottom:5px}select,textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{display:inline-block;height:20px;padding:4px 6px;margin-bottom:10px;font-size:14px;line-height:20px;color:#555;vertical-align:middle;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}input,textarea,.uneditable-input{width:206px}textarea{height:auto}textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{background-color:#fff;border:1px solid #ccc;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border linear .2s,box-shadow linear .2s;-moz-transition:border linear .2s,box-shadow linear .2s;-o-transition:border linear .2s,box-shadow linear .2s;transition:border linear .2s,box-shadow linear .2s}textarea:focus,input[type="text"]:focus,input[type="password"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="date"]:focus,input[type="month"]:focus,input[type="time"]:focus,input[type="week"]:focus,input[type="number"]:focus,input[type="email"]:focus,input[type="url"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="color"]:focus,.uneditable-input:focus{border-color:rgba(82,168,236,0.8);outline:0;outline:thin dotted \9;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6)}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;*margin-top:0;line-height:normal}input[type="file"],input[type="image"],input[type="submit"],input[type="reset"],input[type="button"],input[type="radio"],input[type="checkbox"]{width:auto}select,input[type="file"]{height:30px;*margin-top:4px;line-height:30px}select{width:220px;background-color:#fff;border:1px solid #ccc}select[multiple],select[size]{height:auto}select:focus,input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.uneditable-input,.uneditable-textarea{color:#999;cursor:not-allowed;background-color:#fcfcfc;border-color:#ccc;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.025);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.025);box-shadow:inset 0 1px 2px rgba(0,0,0,0.025)}.uneditable-input{overflow:hidden;white-space:nowrap}.uneditable-textarea{width:auto;height:auto}input:-moz-placeholder,textarea:-moz-placeholder{color:#999}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#999}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#999}.radio,.checkbox{min-height:20px;padding-left:20px}.radio input[type="radio"],.checkbox input[type="checkbox"]{float:left;margin-left:-20px}.controls>.radio:first-child,.controls>.checkbox:first-child{padding-top:5px}.radio.inline,.checkbox.inline{display:inline-block;padding-top:5px;margin-bottom:0;vertical-align:middle}.radio.inline+.radio.inline,.checkbox.inline+.checkbox.inline{margin-left:10px}.input-mini{width:60px}.input-small{width:90px}.input-medium{width:150px}.input-large{width:210px}.input-xlarge{width:270px}.input-xxlarge{width:530px}input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"]{float:none;margin-left:0}.input-append input[class*="span"],.input-append .uneditable-input[class*="span"],.input-prepend input[class*="span"],.input-prepend .uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"],.row-fluid .input-prepend [class*="span"],.row-fluid .input-append [class*="span"]{display:inline-block}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:20px}input.span12,textarea.span12,.uneditable-input.span12{width:926px}input.span11,textarea.span11,.uneditable-input.span11{width:846px}input.span10,textarea.span10,.uneditable-input.span10{width:766px}input.span9,textarea.span9,.uneditable-input.span9{width:686px}input.span8,textarea.span8,.uneditable-input.span8{width:606px}input.span7,textarea.span7,.uneditable-input.span7{width:526px}input.span6,textarea.span6,.uneditable-input.span6{width:446px}input.span5,textarea.span5,.uneditable-input.span5{width:366px}input.span4,textarea.span4,.uneditable-input.span4{width:286px}input.span3,textarea.span3,.uneditable-input.span3{width:206px}input.span2,textarea.span2,.uneditable-input.span2{width:126px}input.span1,textarea.span1,.uneditable-input.span1{width:46px}.controls-row{*zoom:1}.controls-row:before,.controls-row:after{display:table;line-height:0;content:""}.controls-row:after{clear:both}.controls-row [class*="span"],.row-fluid .controls-row [class*="span"]{float:left}.controls-row .checkbox[class*="span"],.controls-row .radio[class*="span"]{padding-top:5px}input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{cursor:not-allowed;background-color:#eee}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"][readonly],input[type="checkbox"][readonly]{background-color:transparent}.control-group.warning .control-label,.control-group.warning .help-block,.control-group.warning .help-inline{color:#c09853}.control-group.warning .checkbox,.control-group.warning .radio,.control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#c09853}.control-group.warning input,.control-group.warning select,.control-group.warning textarea{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e}.control-group.warning .input-prepend .add-on,.control-group.warning .input-append .add-on{color:#c09853;background-color:#fcf8e3;border-color:#c09853}.control-group.error .control-label,.control-group.error .help-block,.control-group.error .help-inline{color:#b94a48}.control-group.error .checkbox,.control-group.error .radio,.control-group.error input,.control-group.error select,.control-group.error textarea{color:#b94a48}.control-group.error input,.control-group.error select,.control-group.error textarea{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392}.control-group.error .input-prepend .add-on,.control-group.error .input-append .add-on{color:#b94a48;background-color:#f2dede;border-color:#b94a48}.control-group.success .control-label,.control-group.success .help-block,.control-group.success .help-inline{color:#468847}.control-group.success .checkbox,.control-group.success .radio,.control-group.success input,.control-group.success select,.control-group.success textarea{color:#468847}.control-group.success input,.control-group.success select,.control-group.success textarea{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b}.control-group.success .input-prepend .add-on,.control-group.success .input-append .add-on{color:#468847;background-color:#dff0d8;border-color:#468847}.control-group.info .control-label,.control-group.info .help-block,.control-group.info .help-inline{color:#3a87ad}.control-group.info .checkbox,.control-group.info .radio,.control-group.info input,.control-group.info select,.control-group.info textarea{color:#3a87ad}.control-group.info input,.control-group.info select,.control-group.info textarea{border-color:#3a87ad;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.info input:focus,.control-group.info select:focus,.control-group.info textarea:focus{border-color:#2d6987;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7ab5d3;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7ab5d3;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7ab5d3}.control-group.info .input-prepend .add-on,.control-group.info .input-append .add-on{color:#3a87ad;background-color:#d9edf7;border-color:#3a87ad}input:focus:invalid,textarea:focus:invalid,select:focus:invalid{color:#b94a48;border-color:#ee5f5b}input:focus:invalid:focus,textarea:focus:invalid:focus,select:focus:invalid:focus{border-color:#e9322d;-webkit-box-shadow:0 0 6px #f8b9b7;-moz-box-shadow:0 0 6px #f8b9b7;box-shadow:0 0 6px #f8b9b7}.form-actions{padding:19px 20px 20px;margin-top:20px;margin-bottom:20px;background-color:#f5f5f5;border-top:1px solid #e5e5e5;*zoom:1}.form-actions:before,.form-actions:after{display:table;line-height:0;content:""}.form-actions:after{clear:both}.help-block,.help-inline{color:#595959}.help-block{display:block;margin-bottom:10px}.help-inline{display:inline-block;*display:inline;padding-left:5px;vertical-align:middle;*zoom:1}.input-append,.input-prepend{display:inline-block;margin-bottom:10px;font-size:0;white-space:nowrap;vertical-align:middle}.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input,.input-append .dropdown-menu,.input-prepend .dropdown-menu,.input-append .popover,.input-prepend .popover{font-size:14px}.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input{position:relative;margin-bottom:0;*margin-left:0;vertical-align:top;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-append input:focus,.input-prepend input:focus,.input-append select:focus,.input-prepend select:focus,.input-append .uneditable-input:focus,.input-prepend .uneditable-input:focus{z-index:2}.input-append .add-on,.input-prepend .add-on{display:inline-block;width:auto;height:20px;min-width:16px;padding:4px 5px;font-size:14px;font-weight:normal;line-height:20px;text-align:center;text-shadow:0 1px 0 #fff;background-color:#eee;border:1px solid #ccc}.input-append .add-on,.input-prepend .add-on,.input-append .btn,.input-prepend .btn,.input-append .btn-group>.dropdown-toggle,.input-prepend .btn-group>.dropdown-toggle{vertical-align:top;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.input-append .active,.input-prepend .active{background-color:#a9dba9;border-color:#46a546}.input-prepend .add-on,.input-prepend .btn{margin-right:-1px}.input-prepend .add-on:first-child,.input-prepend .btn:first-child{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-append input,.input-append select,.input-append .uneditable-input{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-append input+.btn-group .btn:last-child,.input-append select+.btn-group .btn:last-child,.input-append .uneditable-input+.btn-group .btn:last-child{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-append .add-on,.input-append .btn,.input-append .btn-group{margin-left:-1px}.input-append .add-on:last-child,.input-append .btn:last-child,.input-append .btn-group:last-child>.dropdown-toggle{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-prepend.input-append input,.input-prepend.input-append select,.input-prepend.input-append .uneditable-input{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.input-prepend.input-append input+.btn-group .btn,.input-prepend.input-append select+.btn-group .btn,.input-prepend.input-append .uneditable-input+.btn-group .btn{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-prepend.input-append .add-on:first-child,.input-prepend.input-append .btn:first-child{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-prepend.input-append .add-on:last-child,.input-prepend.input-append .btn:last-child{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-prepend.input-append .btn-group:first-child{margin-left:0}input.search-query{padding-right:14px;padding-right:4px \9;padding-left:14px;padding-left:4px \9;margin-bottom:0;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.form-search .input-append .search-query,.form-search .input-prepend .search-query{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.form-search .input-append .search-query{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px}.form-search .input-append .btn{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0}.form-search .input-prepend .search-query{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0}.form-search .input-prepend .btn{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px}.form-search input,.form-inline input,.form-horizontal input,.form-search textarea,.form-inline textarea,.form-horizontal textarea,.form-search select,.form-inline select,.form-horizontal select,.form-search .help-inline,.form-inline .help-inline,.form-horizontal .help-inline,.form-search .uneditable-input,.form-inline .uneditable-input,.form-horizontal .uneditable-input,.form-search .input-prepend,.form-inline .input-prepend,.form-horizontal .input-prepend,.form-search .input-append,.form-inline .input-append,.form-horizontal .input-append{display:inline-block;*display:inline;margin-bottom:0;vertical-align:middle;*zoom:1}.form-search .hide,.form-inline .hide,.form-horizontal .hide{display:none}.form-search label,.form-inline label,.form-search .btn-group,.form-inline .btn-group{display:inline-block}.form-search .input-append,.form-inline .input-append,.form-search .input-prepend,.form-inline .input-prepend{margin-bottom:0}.form-search .radio,.form-search .checkbox,.form-inline .radio,.form-inline .checkbox{padding-left:0;margin-bottom:0;vertical-align:middle}.form-search .radio input[type="radio"],.form-search .checkbox input[type="checkbox"],.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:left;margin-right:3px;margin-left:0}.control-group{margin-bottom:10px}legend+.control-group{margin-top:20px;-webkit-margin-top-collapse:separate}.form-horizontal .control-group{margin-bottom:20px;*zoom:1}.form-horizontal .control-group:before,.form-horizontal .control-group:after{display:table;line-height:0;content:""}.form-horizontal .control-group:after{clear:both}.form-horizontal .control-label{float:left;width:160px;padding-top:5px;text-align:right}.form-horizontal .controls{*display:inline-block;*padding-left:20px;margin-left:180px;*margin-left:0}.form-horizontal .controls:first-child{*padding-left:180px}.form-horizontal .help-block{margin-bottom:0}.form-horizontal input+.help-block,.form-horizontal select+.help-block,.form-horizontal textarea+.help-block,.form-horizontal .uneditable-input+.help-block,.form-horizontal .input-prepend+.help-block,.form-horizontal .input-append+.help-block{margin-top:10px}.form-horizontal .form-actions{padding-left:180px}table{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0}.table{width:100%;margin-bottom:20px}.table th,.table td{padding:8px;line-height:20px;text-align:left;vertical-align:top;border-top:1px solid #ddd}.table th{font-weight:bold}.table thead th{vertical-align:bottom}.table caption+thead tr:first-child th,.table caption+thead tr:first-child td,.table colgroup+thead tr:first-child th,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child th,.table thead:first-child tr:first-child td{border-top:0}.table tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed th,.table-condensed td{padding:4px 5px}.table-bordered{border:1px solid #ddd;border-collapse:separate;*border-collapse:collapse;border-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.table-bordered th,.table-bordered td{border-left:1px solid #ddd}.table-bordered caption+thead tr:first-child th,.table-bordered caption+tbody tr:first-child th,.table-bordered caption+tbody tr:first-child td,.table-bordered colgroup+thead tr:first-child th,.table-bordered colgroup+tbody tr:first-child th,.table-bordered colgroup+tbody tr:first-child td,.table-bordered thead:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child td{border-top:0}.table-bordered thead:first-child tr:first-child>th:first-child,.table-bordered tbody:first-child tr:first-child>td:first-child,.table-bordered tbody:first-child tr:first-child>th:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px}.table-bordered thead:first-child tr:first-child>th:last-child,.table-bordered tbody:first-child tr:first-child>td:last-child,.table-bordered tbody:first-child tr:first-child>th:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topright:4px}.table-bordered thead:last-child tr:last-child>th:first-child,.table-bordered tbody:last-child tr:last-child>td:first-child,.table-bordered tbody:last-child tr:last-child>th:first-child,.table-bordered tfoot:last-child tr:last-child>td:first-child,.table-bordered tfoot:last-child tr:last-child>th:first-child{-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px}.table-bordered thead:last-child tr:last-child>th:last-child,.table-bordered tbody:last-child tr:last-child>td:last-child,.table-bordered tbody:last-child tr:last-child>th:last-child,.table-bordered tfoot:last-child tr:last-child>td:last-child,.table-bordered tfoot:last-child tr:last-child>th:last-child{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px}.table-bordered tfoot+tbody:last-child tr:last-child td:first-child{-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;-moz-border-radius-bottomleft:0}.table-bordered tfoot+tbody:last-child tr:last-child td:last-child{-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomright:0}.table-bordered caption+thead tr:first-child th:first-child,.table-bordered caption+tbody tr:first-child td:first-child,.table-bordered colgroup+thead tr:first-child th:first-child,.table-bordered colgroup+tbody tr:first-child td:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px}.table-bordered caption+thead tr:first-child th:last-child,.table-bordered caption+tbody tr:first-child td:last-child,.table-bordered colgroup+thead tr:first-child th:last-child,.table-bordered colgroup+tbody tr:first-child td:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topright:4px}.table-striped tbody>tr:nth-child(odd)>td,.table-striped tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover tbody tr:hover>td,.table-hover tbody tr:hover>th{background-color:#f5f5f5}table td[class*="span"],table th[class*="span"],.row-fluid table td[class*="span"],.row-fluid table th[class*="span"]{display:table-cell;float:none;margin-left:0}.table td.span1,.table th.span1{float:none;width:44px;margin-left:0}.table td.span2,.table th.span2{float:none;width:124px;margin-left:0}.table td.span3,.table th.span3{float:none;width:204px;margin-left:0}.table td.span4,.table th.span4{float:none;width:284px;margin-left:0}.table td.span5,.table th.span5{float:none;width:364px;margin-left:0}.table td.span6,.table th.span6{float:none;width:444px;margin-left:0}.table td.span7,.table th.span7{float:none;width:524px;margin-left:0}.table td.span8,.table th.span8{float:none;width:604px;margin-left:0}.table td.span9,.table th.span9{float:none;width:684px;margin-left:0}.table td.span10,.table th.span10{float:none;width:764px;margin-left:0}.table td.span11,.table th.span11{float:none;width:844px;margin-left:0}.table td.span12,.table th.span12{float:none;width:924px;margin-left:0}.table tbody tr.success>td{background-color:#dff0d8}.table tbody tr.error>td{background-color:#f2dede}.table tbody tr.warning>td{background-color:#fcf8e3}.table tbody tr.info>td{background-color:#d9edf7}.table-hover tbody tr.success:hover>td{background-color:#d0e9c6}.table-hover tbody tr.error:hover>td{background-color:#ebcccc}.table-hover tbody tr.warning:hover>td{background-color:#faf2cc}.table-hover tbody tr.info:hover>td{background-color:#c4e3f3}[class^="icon-"],[class*=" icon-"]{display:inline-block;width:14px;height:14px;margin-top:1px;*margin-right:.3em;line-height:14px;vertical-align:text-top;background-image:url("../img/glyphicons-halflings.png");background-position:14px 14px;background-repeat:no-repeat}.icon-white,.nav-pills>.active>a>[class^="icon-"],.nav-pills>.active>a>[class*=" icon-"],.nav-list>.active>a>[class^="icon-"],.nav-list>.active>a>[class*=" icon-"],.navbar-inverse .nav>.active>a>[class^="icon-"],.navbar-inverse .nav>.active>a>[class*=" icon-"],.dropdown-menu>li>a:hover>[class^="icon-"],.dropdown-menu>li>a:focus>[class^="icon-"],.dropdown-menu>li>a:hover>[class*=" icon-"],.dropdown-menu>li>a:focus>[class*=" icon-"],.dropdown-menu>.active>a>[class^="icon-"],.dropdown-menu>.active>a>[class*=" icon-"],.dropdown-submenu:hover>a>[class^="icon-"],.dropdown-submenu:focus>a>[class^="icon-"],.dropdown-submenu:hover>a>[class*=" icon-"],.dropdown-submenu:focus>a>[class*=" icon-"]{background-image:url("../img/glyphicons-halflings-white.png")}.icon-glass{background-position:0 0}.icon-music{background-position:-24px 0}.icon-search{background-position:-48px 0}.icon-envelope{background-position:-72px 0}.icon-heart{background-position:-96px 0}.icon-star{background-position:-120px 0}.icon-star-empty{background-position:-144px 0}.icon-user{background-position:-168px 0}.icon-film{background-position:-192px 0}.icon-th-large{background-position:-216px 0}.icon-th{background-position:-240px 0}.icon-th-list{background-position:-264px 0}.icon-ok{background-position:-288px 0}.icon-remove{background-position:-312px 0}.icon-zoom-in{background-position:-336px 0}.icon-zoom-out{background-position:-360px 0}.icon-off{background-position:-384px 0}.icon-signal{background-position:-408px 0}.icon-cog{background-position:-432px 0}.icon-trash{background-position:-456px 0}.icon-home{background-position:0 -24px}.icon-file{background-position:-24px -24px}.icon-time{background-position:-48px -24px}.icon-road{background-position:-72px -24px}.icon-download-alt{background-position:-96px -24px}.icon-download{background-position:-120px -24px}.icon-upload{background-position:-144px -24px}.icon-inbox{background-position:-168px -24px}.icon-play-circle{background-position:-192px -24px}.icon-repeat{background-position:-216px -24px}.icon-refresh{background-position:-240px -24px}.icon-list-alt{background-position:-264px -24px}.icon-lock{background-position:-287px -24px}.icon-flag{background-position:-312px -24px}.icon-headphones{background-position:-336px -24px}.icon-volume-off{background-position:-360px -24px}.icon-volume-down{background-position:-384px -24px}.icon-volume-up{background-position:-408px -24px}.icon-qrcode{background-position:-432px -24px}.icon-barcode{background-position:-456px -24px}.icon-tag{background-position:0 -48px}.icon-tags{background-position:-25px -48px}.icon-book{background-position:-48px -48px}.icon-bookmark{background-position:-72px -48px}.icon-print{background-position:-96px -48px}.icon-camera{background-position:-120px -48px}.icon-font{background-position:-144px -48px}.icon-bold{background-position:-167px -48px}.icon-italic{background-position:-192px -48px}.icon-text-height{background-position:-216px -48px}.icon-text-width{background-position:-240px -48px}.icon-align-left{background-position:-264px -48px}.icon-align-center{background-position:-288px -48px}.icon-align-right{background-position:-312px -48px}.icon-align-justify{background-position:-336px -48px}.icon-list{background-position:-360px -48px}.icon-indent-left{background-position:-384px -48px}.icon-indent-right{background-position:-408px -48px}.icon-facetime-video{background-position:-432px -48px}.icon-picture{background-position:-456px -48px}.icon-pencil{background-position:0 -72px}.icon-map-marker{background-position:-24px -72px}.icon-adjust{background-position:-48px -72px}.icon-tint{background-position:-72px -72px}.icon-edit{background-position:-96px -72px}.icon-share{background-position:-120px -72px}.icon-check{background-position:-144px -72px}.icon-move{background-position:-168px -72px}.icon-step-backward{background-position:-192px -72px}.icon-fast-backward{background-position:-216px -72px}.icon-backward{background-position:-240px -72px}.icon-play{background-position:-264px -72px}.icon-pause{background-position:-288px -72px}.icon-stop{background-position:-312px -72px}.icon-forward{background-position:-336px -72px}.icon-fast-forward{background-position:-360px -72px}.icon-step-forward{background-position:-384px -72px}.icon-eject{background-position:-408px -72px}.icon-chevron-left{background-position:-432px -72px}.icon-chevron-right{background-position:-456px -72px}.icon-plus-sign{background-position:0 -96px}.icon-minus-sign{background-position:-24px -96px}.icon-remove-sign{background-position:-48px -96px}.icon-ok-sign{background-position:-72px -96px}.icon-question-sign{background-position:-96px -96px}.icon-info-sign{background-position:-120px -96px}.icon-screenshot{background-position:-144px -96px}.icon-remove-circle{background-position:-168px -96px}.icon-ok-circle{background-position:-192px -96px}.icon-ban-circle{background-position:-216px -96px}.icon-arrow-left{background-position:-240px -96px}.icon-arrow-right{background-position:-264px -96px}.icon-arrow-up{background-position:-289px -96px}.icon-arrow-down{background-position:-312px -96px}.icon-share-alt{background-position:-336px -96px}.icon-resize-full{background-position:-360px -96px}.icon-resize-small{background-position:-384px -96px}.icon-plus{background-position:-408px -96px}.icon-minus{background-position:-433px -96px}.icon-asterisk{background-position:-456px -96px}.icon-exclamation-sign{background-position:0 -120px}.icon-gift{background-position:-24px -120px}.icon-leaf{background-position:-48px -120px}.icon-fire{background-position:-72px -120px}.icon-eye-open{background-position:-96px -120px}.icon-eye-close{background-position:-120px -120px}.icon-warning-sign{background-position:-144px -120px}.icon-plane{background-position:-168px -120px}.icon-calendar{background-position:-192px -120px}.icon-random{width:16px;background-position:-216px -120px}.icon-comment{background-position:-240px -120px}.icon-magnet{background-position:-264px -120px}.icon-chevron-up{background-position:-288px -120px}.icon-chevron-down{background-position:-313px -119px}.icon-retweet{background-position:-336px -120px}.icon-shopping-cart{background-position:-360px -120px}.icon-folder-close{width:16px;background-position:-384px -120px}.icon-folder-open{width:16px;background-position:-408px -120px}.icon-resize-vertical{background-position:-432px -119px}.icon-resize-horizontal{background-position:-456px -118px}.icon-hdd{background-position:0 -144px}.icon-bullhorn{background-position:-24px -144px}.icon-bell{background-position:-48px -144px}.icon-certificate{background-position:-72px -144px}.icon-thumbs-up{background-position:-96px -144px}.icon-thumbs-down{background-position:-120px -144px}.icon-hand-right{background-position:-144px -144px}.icon-hand-left{background-position:-168px -144px}.icon-hand-up{background-position:-192px -144px}.icon-hand-down{background-position:-216px -144px}.icon-circle-arrow-right{background-position:-240px -144px}.icon-circle-arrow-left{background-position:-264px -144px}.icon-circle-arrow-up{background-position:-288px -144px}.icon-circle-arrow-down{background-position:-312px -144px}.icon-globe{background-position:-336px -144px}.icon-wrench{background-position:-360px -144px}.icon-tasks{background-position:-384px -144px}.icon-filter{background-position:-408px -144px}.icon-briefcase{background-position:-432px -144px}.icon-fullscreen{background-position:-456px -144px}.dropup,.dropdown{position:relative}.dropdown-toggle{*margin-bottom:-3px}.dropdown-toggle:active,.open .dropdown-toggle{outline:0}.caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #000;border-right:4px solid transparent;border-left:4px solid transparent;content:""}.dropdown .caret{margin-top:8px;margin-left:2px}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);*border-right-width:2px;*border-bottom-width:2px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:20px;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus,.dropdown-submenu:hover>a,.dropdown-submenu:focus>a{color:#fff;text-decoration:none;background-color:#0081c2;background-image:-moz-linear-gradient(top,#08c,#0077b3);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#0077b3));background-image:-webkit-linear-gradient(top,#08c,#0077b3);background-image:-o-linear-gradient(top,#08c,#0077b3);background-image:linear-gradient(to bottom,#08c,#0077b3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0077b3',GradientType=0)}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#0081c2;background-image:-moz-linear-gradient(top,#08c,#0077b3);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#0077b3));background-image:-webkit-linear-gradient(top,#08c,#0077b3);background-image:-o-linear-gradient(top,#08c,#0077b3);background-image:linear-gradient(to bottom,#08c,#0077b3);background-repeat:repeat-x;outline:0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0077b3',GradientType=0)}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:default;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open{*z-index:1000}.open>.dropdown-menu{display:block}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid #000;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}.dropdown-submenu{position:relative}.dropdown-submenu>.dropdown-menu{top:0;left:100%;margin-top:-6px;margin-left:-1px;-webkit-border-radius:0 6px 6px 6px;-moz-border-radius:0 6px 6px 6px;border-radius:0 6px 6px 6px}.dropdown-submenu:hover>.dropdown-menu{display:block}.dropup .dropdown-submenu>.dropdown-menu{top:auto;bottom:0;margin-top:0;margin-bottom:-2px;-webkit-border-radius:5px 5px 5px 0;-moz-border-radius:5px 5px 5px 0;border-radius:5px 5px 5px 0}.dropdown-submenu>a:after{display:block;float:right;width:0;height:0;margin-top:5px;margin-right:-10px;border-color:transparent;border-left-color:#ccc;border-style:solid;border-width:5px 0 5px 5px;content:" "}.dropdown-submenu:hover>a:after{border-left-color:#fff}.dropdown-submenu.pull-left{float:none}.dropdown-submenu.pull-left>.dropdown-menu{left:-100%;margin-left:10px;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px}.dropdown .dropdown-menu .nav-header{padding-right:20px;padding-left:20px}.typeahead{z-index:1051;margin-top:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-large{padding:24px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.well-small{padding:9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.fade{opacity:0;-webkit-transition:opacity .15s linear;-moz-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;-moz-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease}.collapse.in{height:auto}.close{float:right;font-size:20px;font-weight:bold;line-height:20px;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.4;filter:alpha(opacity=40)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.btn{display:inline-block;*display:inline;padding:4px 12px;margin-bottom:0;*margin-left:.3em;font-size:14px;line-height:20px;color:#333;text-align:center;text-shadow:0 1px 1px rgba(255,255,255,0.75);vertical-align:middle;cursor:pointer;background-color:#f5f5f5;*background-color:#e6e6e6;background-image:-moz-linear-gradient(top,#fff,#e6e6e6);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6));background-image:-webkit-linear-gradient(top,#fff,#e6e6e6);background-image:-o-linear-gradient(top,#fff,#e6e6e6);background-image:linear-gradient(to bottom,#fff,#e6e6e6);background-repeat:repeat-x;border:1px solid #ccc;*border:0;border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);border-bottom-color:#b3b3b3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffe6e6e6',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);*zoom:1;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.btn:hover,.btn:focus,.btn:active,.btn.active,.btn.disabled,.btn[disabled]{color:#333;background-color:#e6e6e6;*background-color:#d9d9d9}.btn:active,.btn.active{background-color:#ccc \9}.btn:first-child{*margin-left:0}.btn:hover,.btn:focus{color:#333;text-decoration:none;background-position:0 -15px;-webkit-transition:background-position .1s linear;-moz-transition:background-position .1s linear;-o-transition:background-position .1s linear;transition:background-position .1s linear}.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.btn.disabled,.btn[disabled]{cursor:default;background-image:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.btn-large{padding:11px 19px;font-size:17.5px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.btn-large [class^="icon-"],.btn-large [class*=" icon-"]{margin-top:4px}.btn-small{padding:2px 10px;font-size:11.9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.btn-small [class^="icon-"],.btn-small [class*=" icon-"]{margin-top:0}.btn-mini [class^="icon-"],.btn-mini [class*=" icon-"]{margin-top:-1px}.btn-mini{padding:0 6px;font-size:10.5px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.btn-block{display:block;width:100%;padding-right:0;padding-left:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.btn-primary.active,.btn-warning.active,.btn-danger.active,.btn-success.active,.btn-info.active,.btn-inverse.active{color:rgba(255,255,255,0.75)}.btn-primary{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#006dcc;*background-color:#04c;background-image:-moz-linear-gradient(top,#08c,#04c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#04c));background-image:-webkit-linear-gradient(top,#08c,#04c);background-image:-o-linear-gradient(top,#08c,#04c);background-image:linear-gradient(to bottom,#08c,#04c);background-repeat:repeat-x;border-color:#04c #04c #002a80;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0044cc',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.btn-primary.disabled,.btn-primary[disabled]{color:#fff;background-color:#04c;*background-color:#003bb3}.btn-primary:active,.btn-primary.active{background-color:#039 \9}.btn-warning{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#faa732;*background-color:#f89406;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(to bottom,#fbb450,#f89406);background-repeat:repeat-x;border-color:#f89406 #f89406 #ad6704;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450',endColorstr='#fff89406',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{color:#fff;background-color:#f89406;*background-color:#df8505}.btn-warning:active,.btn-warning.active{background-color:#c67605 \9}.btn-danger{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#da4f49;*background-color:#bd362f;background-image:-moz-linear-gradient(top,#ee5f5b,#bd362f);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#bd362f));background-image:-webkit-linear-gradient(top,#ee5f5b,#bd362f);background-image:-o-linear-gradient(top,#ee5f5b,#bd362f);background-image:linear-gradient(to bottom,#ee5f5b,#bd362f);background-repeat:repeat-x;border-color:#bd362f #bd362f #802420;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b',endColorstr='#ffbd362f',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.btn-danger.disabled,.btn-danger[disabled]{color:#fff;background-color:#bd362f;*background-color:#a9302a}.btn-danger:active,.btn-danger.active{background-color:#942a25 \9}.btn-success{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#5bb75b;*background-color:#51a351;background-image:-moz-linear-gradient(top,#62c462,#51a351);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#51a351));background-image:-webkit-linear-gradient(top,#62c462,#51a351);background-image:-o-linear-gradient(top,#62c462,#51a351);background-image:linear-gradient(to bottom,#62c462,#51a351);background-repeat:repeat-x;border-color:#51a351 #51a351 #387038;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462',endColorstr='#ff51a351',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.btn-success.disabled,.btn-success[disabled]{color:#fff;background-color:#51a351;*background-color:#499249}.btn-success:active,.btn-success.active{background-color:#408140 \9}.btn-info{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#49afcd;*background-color:#2f96b4;background-image:-moz-linear-gradient(top,#5bc0de,#2f96b4);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#2f96b4));background-image:-webkit-linear-gradient(top,#5bc0de,#2f96b4);background-image:-o-linear-gradient(top,#5bc0de,#2f96b4);background-image:linear-gradient(to bottom,#5bc0de,#2f96b4);background-repeat:repeat-x;border-color:#2f96b4 #2f96b4 #1f6377;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff2f96b4',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.btn-info.disabled,.btn-info[disabled]{color:#fff;background-color:#2f96b4;*background-color:#2a85a0}.btn-info:active,.btn-info.active{background-color:#24748c \9}.btn-inverse{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#363636;*background-color:#222;background-image:-moz-linear-gradient(top,#444,#222);background-image:-webkit-gradient(linear,0 0,0 100%,from(#444),to(#222));background-image:-webkit-linear-gradient(top,#444,#222);background-image:-o-linear-gradient(top,#444,#222);background-image:linear-gradient(to bottom,#444,#222);background-repeat:repeat-x;border-color:#222 #222 #000;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444',endColorstr='#ff222222',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-inverse:hover,.btn-inverse:focus,.btn-inverse:active,.btn-inverse.active,.btn-inverse.disabled,.btn-inverse[disabled]{color:#fff;background-color:#222;*background-color:#151515}.btn-inverse:active,.btn-inverse.active{background-color:#080808 \9}button.btn,input[type="submit"].btn{*padding-top:3px;*padding-bottom:3px}button.btn::-moz-focus-inner,input[type="submit"].btn::-moz-focus-inner{padding:0;border:0}button.btn.btn-large,input[type="submit"].btn.btn-large{*padding-top:7px;*padding-bottom:7px}button.btn.btn-small,input[type="submit"].btn.btn-small{*padding-top:3px;*padding-bottom:3px}button.btn.btn-mini,input[type="submit"].btn.btn-mini{*padding-top:1px;*padding-bottom:1px}.btn-link,.btn-link:active,.btn-link[disabled]{background-color:transparent;background-image:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.btn-link{color:#08c;cursor:pointer;border-color:transparent;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-link:hover,.btn-link:focus{color:#005580;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,.btn-link[disabled]:focus{color:#333;text-decoration:none}.btn-group{position:relative;display:inline-block;*display:inline;*margin-left:.3em;font-size:0;white-space:nowrap;vertical-align:middle;*zoom:1}.btn-group:first-child{*margin-left:0}.btn-group+.btn-group{margin-left:5px}.btn-toolbar{margin-top:10px;margin-bottom:10px;font-size:0}.btn-toolbar>.btn+.btn,.btn-toolbar>.btn-group+.btn,.btn-toolbar>.btn+.btn-group{margin-left:5px}.btn-group>.btn{position:relative;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-group>.btn+.btn{margin-left:-1px}.btn-group>.btn,.btn-group>.dropdown-menu,.btn-group>.popover{font-size:14px}.btn-group>.btn-mini{font-size:10.5px}.btn-group>.btn-small{font-size:11.9px}.btn-group>.btn-large{font-size:17.5px}.btn-group>.btn:first-child{margin-left:0;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius-topleft:4px}.btn-group>.btn:last-child,.btn-group>.dropdown-toggle{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px}.btn-group>.btn.large:first-child{margin-left:0;-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-moz-border-radius-topleft:6px}.btn-group>.btn.large:last-child,.btn-group>.large.dropdown-toggle{-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px;-moz-border-radius-topright:6px;-moz-border-radius-bottomright:6px}.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active{z-index:2}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{*padding-top:5px;padding-right:8px;*padding-bottom:5px;padding-left:8px;-webkit-box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.btn-group>.btn-mini+.dropdown-toggle{*padding-top:2px;padding-right:5px;*padding-bottom:2px;padding-left:5px}.btn-group>.btn-small+.dropdown-toggle{*padding-top:5px;*padding-bottom:4px}.btn-group>.btn-large+.dropdown-toggle{*padding-top:7px;padding-right:12px;*padding-bottom:7px;padding-left:12px}.btn-group.open .dropdown-toggle{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.btn-group.open .btn.dropdown-toggle{background-color:#e6e6e6}.btn-group.open .btn-primary.dropdown-toggle{background-color:#04c}.btn-group.open .btn-warning.dropdown-toggle{background-color:#f89406}.btn-group.open .btn-danger.dropdown-toggle{background-color:#bd362f}.btn-group.open .btn-success.dropdown-toggle{background-color:#51a351}.btn-group.open .btn-info.dropdown-toggle{background-color:#2f96b4}.btn-group.open .btn-inverse.dropdown-toggle{background-color:#222}.btn .caret{margin-top:8px;margin-left:0}.btn-large .caret{margin-top:6px}.btn-large .caret{border-top-width:5px;border-right-width:5px;border-left-width:5px}.btn-mini .caret,.btn-small .caret{margin-top:8px}.dropup .btn-large .caret{border-bottom-width:5px}.btn-primary .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret,.btn-success .caret,.btn-inverse .caret{border-top-color:#fff;border-bottom-color:#fff}.btn-group-vertical{display:inline-block;*display:inline;*zoom:1}.btn-group-vertical>.btn{display:block;float:none;max-width:100%;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-group-vertical>.btn+.btn{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:first-child{-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.btn-group-vertical>.btn:last-child{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.btn-group-vertical>.btn-large:first-child{-webkit-border-radius:6px 6px 0 0;-moz-border-radius:6px 6px 0 0;border-radius:6px 6px 0 0}.btn-group-vertical>.btn-large:last-child{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}.alert{padding:8px 35px 8px 14px;margin-bottom:20px;text-shadow:0 1px 0 rgba(255,255,255,0.5);background-color:#fcf8e3;border:1px solid #fbeed5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.alert,.alert h4{color:#c09853}.alert h4{margin:0}.alert .close{position:relative;top:-2px;right:-21px;line-height:20px}.alert-success{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.alert-success h4{color:#468847}.alert-danger,.alert-error{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}.alert-danger h4,.alert-error h4{color:#b94a48}.alert-info{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}.alert-info h4{color:#3a87ad}.alert-block{padding-top:14px;padding-bottom:14px}.alert-block>p,.alert-block>ul{margin-bottom:0}.alert-block p+p{margin-top:5px}.nav{margin-bottom:20px;margin-left:0;list-style:none}.nav>li>a{display:block}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li>a>img{max-width:none}.nav>.pull-right{float:right}.nav-header{display:block;padding:3px 15px;font-size:11px;font-weight:bold;line-height:20px;color:#999;text-shadow:0 1px 0 rgba(255,255,255,0.5);text-transform:uppercase}.nav li+.nav-header{margin-top:9px}.nav-list{padding-right:15px;padding-left:15px;margin-bottom:0}.nav-list>li>a,.nav-list .nav-header{margin-right:-15px;margin-left:-15px;text-shadow:0 1px 0 rgba(255,255,255,0.5)}.nav-list>li>a{padding:3px 15px}.nav-list>.active>a,.nav-list>.active>a:hover,.nav-list>.active>a:focus{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.2);background-color:#08c}.nav-list [class^="icon-"],.nav-list [class*=" icon-"]{margin-right:2px}.nav-list .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.nav-tabs,.nav-pills{*zoom:1}.nav-tabs:before,.nav-pills:before,.nav-tabs:after,.nav-pills:after{display:table;line-height:0;content:""}.nav-tabs:after,.nav-pills:after{clear:both}.nav-tabs>li,.nav-pills>li{float:left}.nav-tabs>li>a,.nav-pills>li>a{padding-right:12px;padding-left:12px;margin-right:2px;line-height:14px}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{margin-bottom:-1px}.nav-tabs>li>a{padding-top:8px;padding-bottom:8px;line-height:20px;border:1px solid transparent;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover,.nav-tabs>li>a:focus{border-color:#eee #eee #ddd}.nav-tabs>.active>a,.nav-tabs>.active>a:hover,.nav-tabs>.active>a:focus{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-pills>li>a{padding-top:8px;padding-bottom:8px;margin-top:2px;margin-bottom:2px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.nav-pills>.active>a,.nav-pills>.active>a:hover,.nav-pills>.active>a:focus{color:#fff;background-color:#08c}.nav-stacked>li{float:none}.nav-stacked>li>a{margin-right:0}.nav-tabs.nav-stacked{border-bottom:0}.nav-tabs.nav-stacked>li>a{border:1px solid #ddd;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.nav-tabs.nav-stacked>li:first-child>a{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-topleft:4px}.nav-tabs.nav-stacked>li:last-child>a{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomright:4px;-moz-border-radius-bottomleft:4px}.nav-tabs.nav-stacked>li>a:hover,.nav-tabs.nav-stacked>li>a:focus{z-index:2;border-color:#ddd}.nav-pills.nav-stacked>li>a{margin-bottom:3px}.nav-pills.nav-stacked>li:last-child>a{margin-bottom:1px}.nav-tabs .dropdown-menu{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}.nav-pills .dropdown-menu{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.nav .dropdown-toggle .caret{margin-top:6px;border-top-color:#08c;border-bottom-color:#08c}.nav .dropdown-toggle:hover .caret,.nav .dropdown-toggle:focus .caret{border-top-color:#005580;border-bottom-color:#005580}.nav-tabs .dropdown-toggle .caret{margin-top:8px}.nav .active .dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff}.nav-tabs .active .dropdown-toggle .caret{border-top-color:#555;border-bottom-color:#555}.nav>.dropdown.active>a:hover,.nav>.dropdown.active>a:focus{cursor:pointer}.nav-tabs .open .dropdown-toggle,.nav-pills .open .dropdown-toggle,.nav>li.dropdown.open.active>a:hover,.nav>li.dropdown.open.active>a:focus{color:#fff;background-color:#999;border-color:#999}.nav li.dropdown.open .caret,.nav li.dropdown.open.active .caret,.nav li.dropdown.open a:hover .caret,.nav li.dropdown.open a:focus .caret{border-top-color:#fff;border-bottom-color:#fff;opacity:1;filter:alpha(opacity=100)}.tabs-stacked .open>a:hover,.tabs-stacked .open>a:focus{border-color:#999}.tabbable{*zoom:1}.tabbable:before,.tabbable:after{display:table;line-height:0;content:""}.tabbable:after{clear:both}.tab-content{overflow:auto}.tabs-below>.nav-tabs,.tabs-right>.nav-tabs,.tabs-left>.nav-tabs{border-bottom:0}.tab-content>.tab-pane,.pill-content>.pill-pane{display:none}.tab-content>.active,.pill-content>.active{display:block}.tabs-below>.nav-tabs{border-top:1px solid #ddd}.tabs-below>.nav-tabs>li{margin-top:-1px;margin-bottom:0}.tabs-below>.nav-tabs>li>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.tabs-below>.nav-tabs>li>a:hover,.tabs-below>.nav-tabs>li>a:focus{border-top-color:#ddd;border-bottom-color:transparent}.tabs-below>.nav-tabs>.active>a,.tabs-below>.nav-tabs>.active>a:hover,.tabs-below>.nav-tabs>.active>a:focus{border-color:transparent #ddd #ddd #ddd}.tabs-left>.nav-tabs>li,.tabs-right>.nav-tabs>li{float:none}.tabs-left>.nav-tabs>li>a,.tabs-right>.nav-tabs>li>a{min-width:74px;margin-right:0;margin-bottom:3px}.tabs-left>.nav-tabs{float:left;margin-right:19px;border-right:1px solid #ddd}.tabs-left>.nav-tabs>li>a{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.tabs-left>.nav-tabs>li>a:hover,.tabs-left>.nav-tabs>li>a:focus{border-color:#eee #ddd #eee #eee}.tabs-left>.nav-tabs .active>a,.tabs-left>.nav-tabs .active>a:hover,.tabs-left>.nav-tabs .active>a:focus{border-color:#ddd transparent #ddd #ddd;*border-right-color:#fff}.tabs-right>.nav-tabs{float:right;margin-left:19px;border-left:1px solid #ddd}.tabs-right>.nav-tabs>li>a{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.tabs-right>.nav-tabs>li>a:hover,.tabs-right>.nav-tabs>li>a:focus{border-color:#eee #eee #eee #ddd}.tabs-right>.nav-tabs .active>a,.tabs-right>.nav-tabs .active>a:hover,.tabs-right>.nav-tabs .active>a:focus{border-color:#ddd #ddd #ddd transparent;*border-left-color:#fff}.nav>.disabled>a{color:#999}.nav>.disabled>a:hover,.nav>.disabled>a:focus{text-decoration:none;cursor:default;background-color:transparent}.navbar{*position:relative;*z-index:2;margin-bottom:20px;overflow:visible}.navbar-inner{min-height:40px;padding-right:20px;padding-left:20px;background-color:#fafafa;background-image:-moz-linear-gradient(top,#fff,#f2f2f2);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#f2f2f2));background-image:-webkit-linear-gradient(top,#fff,#f2f2f2);background-image:-o-linear-gradient(top,#fff,#f2f2f2);background-image:linear-gradient(to bottom,#fff,#f2f2f2);background-repeat:repeat-x;border:1px solid #d4d4d4;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#fff2f2f2',GradientType=0);*zoom:1;-webkit-box-shadow:0 1px 4px rgba(0,0,0,0.065);-moz-box-shadow:0 1px 4px rgba(0,0,0,0.065);box-shadow:0 1px 4px rgba(0,0,0,0.065)}.navbar-inner:before,.navbar-inner:after{display:table;line-height:0;content:""}.navbar-inner:after{clear:both}.navbar .container{width:auto}.nav-collapse.collapse{height:auto;overflow:visible}.navbar .brand{display:block;float:left;padding:10px 20px 10px;margin-left:-20px;font-size:20px;font-weight:200;color:#777;text-shadow:0 1px 0 #fff}.navbar .brand:hover,.navbar .brand:focus{text-decoration:none}.navbar-text{margin-bottom:0;line-height:40px;color:#777}.navbar-link{color:#777}.navbar-link:hover,.navbar-link:focus{color:#333}.navbar .divider-vertical{height:40px;margin:0 9px;border-right:1px solid #fff;border-left:1px solid #f2f2f2}.navbar .btn,.navbar .btn-group{margin-top:5px}.navbar .btn-group .btn,.navbar .input-prepend .btn,.navbar .input-append .btn,.navbar .input-prepend .btn-group,.navbar .input-append .btn-group{margin-top:0}.navbar-form{margin-bottom:0;*zoom:1}.navbar-form:before,.navbar-form:after{display:table;line-height:0;content:""}.navbar-form:after{clear:both}.navbar-form input,.navbar-form select,.navbar-form .radio,.navbar-form .checkbox{margin-top:5px}.navbar-form input,.navbar-form select,.navbar-form .btn{display:inline-block;margin-bottom:0}.navbar-form input[type="image"],.navbar-form input[type="checkbox"],.navbar-form input[type="radio"]{margin-top:3px}.navbar-form .input-append,.navbar-form .input-prepend{margin-top:5px;white-space:nowrap}.navbar-form .input-append input,.navbar-form .input-prepend input{margin-top:0}.navbar-search{position:relative;float:left;margin-top:5px;margin-bottom:0}.navbar-search .search-query{padding:4px 14px;margin-bottom:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:1;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.navbar-static-top{position:static;margin-bottom:0}.navbar-static-top .navbar-inner{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;margin-bottom:0}.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{border-width:0 0 1px}.navbar-fixed-bottom .navbar-inner{border-width:1px 0 0}.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding-right:0;padding-left:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px}.navbar-fixed-top{top:0}.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{-webkit-box-shadow:0 1px 10px rgba(0,0,0,0.1);-moz-box-shadow:0 1px 10px rgba(0,0,0,0.1);box-shadow:0 1px 10px rgba(0,0,0,0.1)}.navbar-fixed-bottom{bottom:0}.navbar-fixed-bottom .navbar-inner{-webkit-box-shadow:0 -1px 10px rgba(0,0,0,0.1);-moz-box-shadow:0 -1px 10px rgba(0,0,0,0.1);box-shadow:0 -1px 10px rgba(0,0,0,0.1)}.navbar .nav{position:relative;left:0;display:block;float:left;margin:0 10px 0 0}.navbar .nav.pull-right{float:right;margin-right:0}.navbar .nav>li{float:left}.navbar .nav>li>a{float:none;padding:10px 15px 10px;color:#777;text-decoration:none;text-shadow:0 1px 0 #fff}.navbar .nav .dropdown-toggle .caret{margin-top:8px}.navbar .nav>li>a:focus,.navbar .nav>li>a:hover{color:#333;text-decoration:none;background-color:transparent}.navbar .nav>.active>a,.navbar .nav>.active>a:hover,.navbar .nav>.active>a:focus{color:#555;text-decoration:none;background-color:#e5e5e5;-webkit-box-shadow:inset 0 3px 8px rgba(0,0,0,0.125);-moz-box-shadow:inset 0 3px 8px rgba(0,0,0,0.125);box-shadow:inset 0 3px 8px rgba(0,0,0,0.125)}.navbar .btn-navbar{display:none;float:right;padding:7px 10px;margin-right:5px;margin-left:5px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#ededed;*background-color:#e5e5e5;background-image:-moz-linear-gradient(top,#f2f2f2,#e5e5e5);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f2f2f2),to(#e5e5e5));background-image:-webkit-linear-gradient(top,#f2f2f2,#e5e5e5);background-image:-o-linear-gradient(top,#f2f2f2,#e5e5e5);background-image:linear-gradient(to bottom,#f2f2f2,#e5e5e5);background-repeat:repeat-x;border-color:#e5e5e5 #e5e5e5 #bfbfbf;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2',endColorstr='#ffe5e5e5',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075)}.navbar .btn-navbar:hover,.navbar .btn-navbar:focus,.navbar .btn-navbar:active,.navbar .btn-navbar.active,.navbar .btn-navbar.disabled,.navbar .btn-navbar[disabled]{color:#fff;background-color:#e5e5e5;*background-color:#d9d9d9}.navbar .btn-navbar:active,.navbar .btn-navbar.active{background-color:#ccc \9}.navbar .btn-navbar .icon-bar{display:block;width:18px;height:2px;background-color:#f5f5f5;-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,0.25);-moz-box-shadow:0 1px 0 rgba(0,0,0,0.25);box-shadow:0 1px 0 rgba(0,0,0,0.25)}.btn-navbar .icon-bar+.icon-bar{margin-top:3px}.navbar .nav>li>.dropdown-menu:before{position:absolute;top:-7px;left:9px;display:inline-block;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-left:7px solid transparent;border-bottom-color:rgba(0,0,0,0.2);content:''}.navbar .nav>li>.dropdown-menu:after{position:absolute;top:-6px;left:10px;display:inline-block;border-right:6px solid transparent;border-bottom:6px solid #fff;border-left:6px solid transparent;content:''}.navbar-fixed-bottom .nav>li>.dropdown-menu:before{top:auto;bottom:-7px;border-top:7px solid #ccc;border-bottom:0;border-top-color:rgba(0,0,0,0.2)}.navbar-fixed-bottom .nav>li>.dropdown-menu:after{top:auto;bottom:-6px;border-top:6px solid #fff;border-bottom:0}.navbar .nav li.dropdown>a:hover .caret,.navbar .nav li.dropdown>a:focus .caret{border-top-color:#333;border-bottom-color:#333}.navbar .nav li.dropdown.open>.dropdown-toggle,.navbar .nav li.dropdown.active>.dropdown-toggle,.navbar .nav li.dropdown.open.active>.dropdown-toggle{color:#555;background-color:#e5e5e5}.navbar .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#777;border-bottom-color:#777}.navbar .nav li.dropdown.open>.dropdown-toggle .caret,.navbar .nav li.dropdown.active>.dropdown-toggle .caret,.navbar .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#555;border-bottom-color:#555}.navbar .pull-right>li>.dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right{right:0;left:auto}.navbar .pull-right>li>.dropdown-menu:before,.navbar .nav>li>.dropdown-menu.pull-right:before{right:12px;left:auto}.navbar .pull-right>li>.dropdown-menu:after,.navbar .nav>li>.dropdown-menu.pull-right:after{right:13px;left:auto}.navbar .pull-right>li>.dropdown-menu .dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right .dropdown-menu{right:100%;left:auto;margin-right:-1px;margin-left:0;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px}.navbar-inverse .navbar-inner{background-color:#1b1b1b;background-image:-moz-linear-gradient(top,#222,#111);background-image:-webkit-gradient(linear,0 0,0 100%,from(#222),to(#111));background-image:-webkit-linear-gradient(top,#222,#111);background-image:-o-linear-gradient(top,#222,#111);background-image:linear-gradient(to bottom,#222,#111);background-repeat:repeat-x;border-color:#252525;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222',endColorstr='#ff111111',GradientType=0)}.navbar-inverse .brand,.navbar-inverse .nav>li>a{color:#999;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.navbar-inverse .brand:hover,.navbar-inverse .nav>li>a:hover,.navbar-inverse .brand:focus,.navbar-inverse .nav>li>a:focus{color:#fff}.navbar-inverse .brand{color:#999}.navbar-inverse .navbar-text{color:#999}.navbar-inverse .nav>li>a:focus,.navbar-inverse .nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .nav .active>a,.navbar-inverse .nav .active>a:hover,.navbar-inverse .nav .active>a:focus{color:#fff;background-color:#111}.navbar-inverse .navbar-link{color:#999}.navbar-inverse .navbar-link:hover,.navbar-inverse .navbar-link:focus{color:#fff}.navbar-inverse .divider-vertical{border-right-color:#222;border-left-color:#111}.navbar-inverse .nav li.dropdown.open>.dropdown-toggle,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle{color:#fff;background-color:#111}.navbar-inverse .nav li.dropdown>a:hover .caret,.navbar-inverse .nav li.dropdown>a:focus .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar-inverse .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#999;border-bottom-color:#999}.navbar-inverse .nav li.dropdown.open>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar-inverse .navbar-search .search-query{color:#fff;background-color:#515151;border-color:#111;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none}.navbar-inverse .navbar-search .search-query:-moz-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query:-ms-input-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query:focus,.navbar-inverse .navbar-search .search-query.focused{padding:5px 15px;color:#333;text-shadow:0 1px 0 #fff;background-color:#fff;border:0;outline:0;-webkit-box-shadow:0 0 3px rgba(0,0,0,0.15);-moz-box-shadow:0 0 3px rgba(0,0,0,0.15);box-shadow:0 0 3px rgba(0,0,0,0.15)}.navbar-inverse .btn-navbar{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#0e0e0e;*background-color:#040404;background-image:-moz-linear-gradient(top,#151515,#040404);background-image:-webkit-gradient(linear,0 0,0 100%,from(#151515),to(#040404));background-image:-webkit-linear-gradient(top,#151515,#040404);background-image:-o-linear-gradient(top,#151515,#040404);background-image:linear-gradient(to bottom,#151515,#040404);background-repeat:repeat-x;border-color:#040404 #040404 #000;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515',endColorstr='#ff040404',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.navbar-inverse .btn-navbar:hover,.navbar-inverse .btn-navbar:focus,.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active,.navbar-inverse .btn-navbar.disabled,.navbar-inverse .btn-navbar[disabled]{color:#fff;background-color:#040404;*background-color:#000}.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active{background-color:#000 \9}.breadcrumb{padding:8px 15px;margin:0 0 20px;list-style:none;background-color:#f5f5f5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.breadcrumb>li{display:inline-block;*display:inline;text-shadow:0 1px 0 #fff;*zoom:1}.breadcrumb>li>.divider{padding:0 5px;color:#ccc}.breadcrumb>.active{color:#999}.pagination{margin:20px 0}.pagination ul{display:inline-block;*display:inline;margin-bottom:0;margin-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;*zoom:1;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:0 1px 2px rgba(0,0,0,0.05);box-shadow:0 1px 2px rgba(0,0,0,0.05)}.pagination ul>li{display:inline}.pagination ul>li>a,.pagination ul>li>span{float:left;padding:4px 12px;line-height:20px;text-decoration:none;background-color:#fff;border:1px solid #ddd;border-left-width:0}.pagination ul>li>a:hover,.pagination ul>li>a:focus,.pagination ul>.active>a,.pagination ul>.active>span{background-color:#f5f5f5}.pagination ul>.active>a,.pagination ul>.active>span{color:#999;cursor:default}.pagination ul>.disabled>span,.pagination ul>.disabled>a,.pagination ul>.disabled>a:hover,.pagination ul>.disabled>a:focus{color:#999;cursor:default;background-color:transparent}.pagination ul>li:first-child>a,.pagination ul>li:first-child>span{border-left-width:1px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius-topleft:4px}.pagination ul>li:last-child>a,.pagination ul>li:last-child>span{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px}.pagination-centered{text-align:center}.pagination-right{text-align:right}.pagination-large ul>li>a,.pagination-large ul>li>span{padding:11px 19px;font-size:17.5px}.pagination-large ul>li:first-child>a,.pagination-large ul>li:first-child>span{-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-moz-border-radius-topleft:6px}.pagination-large ul>li:last-child>a,.pagination-large ul>li:last-child>span{-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px;-moz-border-radius-topright:6px;-moz-border-radius-bottomright:6px}.pagination-mini ul>li:first-child>a,.pagination-small ul>li:first-child>a,.pagination-mini ul>li:first-child>span,.pagination-small ul>li:first-child>span{-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-bottomleft:3px;-moz-border-radius-topleft:3px}.pagination-mini ul>li:last-child>a,.pagination-small ul>li:last-child>a,.pagination-mini ul>li:last-child>span,.pagination-small ul>li:last-child>span{-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;-moz-border-radius-topright:3px;-moz-border-radius-bottomright:3px}.pagination-small ul>li>a,.pagination-small ul>li>span{padding:2px 10px;font-size:11.9px}.pagination-mini ul>li>a,.pagination-mini ul>li>span{padding:0 6px;font-size:10.5px}.pager{margin:20px 0;text-align:center;list-style:none;*zoom:1}.pager:before,.pager:after{display:table;line-height:0;content:""}.pager:after{clear:both}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#f5f5f5}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999;cursor:default;background-color:#fff}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop,.modal-backdrop.fade.in{opacity:.8;filter:alpha(opacity=80)}.modal{position:fixed;top:10%;left:50%;z-index:1050;width:560px;margin-left:-280px;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.3);*border:1px solid #999;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;outline:0;-webkit-box-shadow:0 3px 7px rgba(0,0,0,0.3);-moz-box-shadow:0 3px 7px rgba(0,0,0,0.3);box-shadow:0 3px 7px rgba(0,0,0,0.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box}.modal.fade{top:-25%;-webkit-transition:opacity .3s linear,top .3s ease-out;-moz-transition:opacity .3s linear,top .3s ease-out;-o-transition:opacity .3s linear,top .3s ease-out;transition:opacity .3s linear,top .3s ease-out}.modal.fade.in{top:10%}.modal-header{padding:9px 15px;border-bottom:1px solid #eee}.modal-header .close{margin-top:2px}.modal-header h3{margin:0;line-height:30px}.modal-body{position:relative;max-height:400px;padding:15px;overflow-y:auto}.modal-form{margin-bottom:0}.modal-footer{padding:14px 15px 15px;margin-bottom:0;text-align:right;background-color:#f5f5f5;border-top:1px solid #ddd;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;*zoom:1;-webkit-box-shadow:inset 0 1px 0 #fff;-moz-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.modal-footer:before,.modal-footer:after{display:table;line-height:0;content:""}.modal-footer:after{clear:both}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.tooltip{position:absolute;z-index:1030;display:block;font-size:11px;line-height:1.4;opacity:0;filter:alpha(opacity=0);visibility:visible}.tooltip.in{opacity:.8;filter:alpha(opacity=80)}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-color:#000;border-width:5px 5px 0}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#000;border-width:5px 5px 5px 0}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#000;border-width:5px 0 5px 5px}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#000;border-width:0 5px 5px}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;white-space:normal;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0}.popover-title:empty{display:none}.popover-content{padding:9px 14px}.popover .arrow,.popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover .arrow{border-width:11px}.popover .arrow:after{border-width:10px;content:""}.popover.top .arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);border-bottom-width:0}.popover.top .arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0}.popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,0.25);border-left-width:0}.popover.right .arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0}.popover.bottom .arrow{top:-11px;left:50%;margin-left:-11px;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);border-top-width:0}.popover.bottom .arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0}.popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-left-color:#999;border-left-color:rgba(0,0,0,0.25);border-right-width:0}.popover.left .arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0}.thumbnails{margin-left:-20px;list-style:none;*zoom:1}.thumbnails:before,.thumbnails:after{display:table;line-height:0;content:""}.thumbnails:after{clear:both}.row-fluid .thumbnails{margin-left:0}.thumbnails>li{float:left;margin-bottom:20px;margin-left:20px}.thumbnail{display:block;padding:4px;line-height:20px;border:1px solid #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.055);-moz-box-shadow:0 1px 3px rgba(0,0,0,0.055);box-shadow:0 1px 3px rgba(0,0,0,0.055);-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}a.thumbnail:hover,a.thumbnail:focus{border-color:#08c;-webkit-box-shadow:0 1px 4px rgba(0,105,214,0.25);-moz-box-shadow:0 1px 4px rgba(0,105,214,0.25);box-shadow:0 1px 4px rgba(0,105,214,0.25)}.thumbnail>img{display:block;max-width:100%;margin-right:auto;margin-left:auto}.thumbnail .caption{padding:9px;color:#555}.media,.media-body{overflow:hidden;*overflow:visible;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{margin-left:0;list-style:none}.label,.badge{display:inline-block;padding:2px 4px;font-size:11.844px;font-weight:bold;line-height:14px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);white-space:nowrap;vertical-align:baseline;background-color:#999}.label{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.badge{padding-right:9px;padding-left:9px;-webkit-border-radius:9px;-moz-border-radius:9px;border-radius:9px}.label:empty,.badge:empty{display:none}a.label:hover,a.label:focus,a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.label-important,.badge-important{background-color:#b94a48}.label-important[href],.badge-important[href]{background-color:#953b39}.label-warning,.badge-warning{background-color:#f89406}.label-warning[href],.badge-warning[href]{background-color:#c67605}.label-success,.badge-success{background-color:#468847}.label-success[href],.badge-success[href]{background-color:#356635}.label-info,.badge-info{background-color:#3a87ad}.label-info[href],.badge-info[href]{background-color:#2d6987}.label-inverse,.badge-inverse{background-color:#333}.label-inverse[href],.badge-inverse[href]{background-color:#1a1a1a}.btn .label,.btn .badge{position:relative;top:-1px}.btn-mini .label,.btn-mini .badge{top:0}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-ms-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f7f7f7;background-image:-moz-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#f9f9f9));background-image:-webkit-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-o-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:linear-gradient(to bottom,#f5f5f5,#f9f9f9);background-repeat:repeat-x;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5',endColorstr='#fff9f9f9',GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress .bar{float:left;width:0;height:100%;font-size:12px;color:#fff;text-align:center;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top,#149bdf,#0480be);background-image:-webkit-gradient(linear,0 0,0 100%,from(#149bdf),to(#0480be));background-image:-webkit-linear-gradient(top,#149bdf,#0480be);background-image:-o-linear-gradient(top,#149bdf,#0480be);background-image:linear-gradient(to bottom,#149bdf,#0480be);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf',endColorstr='#ff0480be',GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-moz-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width .6s ease;-moz-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress .bar+.bar{-webkit-box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15);-moz-box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15)}.progress-striped .bar{background-color:#149bdf;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px}.progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-danger .bar,.progress .bar-danger{background-color:#dd514c;background-image:-moz-linear-gradient(top,#ee5f5b,#c43c35);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#c43c35));background-image:-webkit-linear-gradient(top,#ee5f5b,#c43c35);background-image:-o-linear-gradient(top,#ee5f5b,#c43c35);background-image:linear-gradient(to bottom,#ee5f5b,#c43c35);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b',endColorstr='#ffc43c35',GradientType=0)}.progress-danger.progress-striped .bar,.progress-striped .bar-danger{background-color:#ee5f5b;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-success .bar,.progress .bar-success{background-color:#5eb95e;background-image:-moz-linear-gradient(top,#62c462,#57a957);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#57a957));background-image:-webkit-linear-gradient(top,#62c462,#57a957);background-image:-o-linear-gradient(top,#62c462,#57a957);background-image:linear-gradient(to bottom,#62c462,#57a957);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462',endColorstr='#ff57a957',GradientType=0)}.progress-success.progress-striped .bar,.progress-striped .bar-success{background-color:#62c462;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-info .bar,.progress .bar-info{background-color:#4bb1cf;background-image:-moz-linear-gradient(top,#5bc0de,#339bb9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#339bb9));background-image:-webkit-linear-gradient(top,#5bc0de,#339bb9);background-image:-o-linear-gradient(top,#5bc0de,#339bb9);background-image:linear-gradient(to bottom,#5bc0de,#339bb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff339bb9',GradientType=0)}.progress-info.progress-striped .bar,.progress-striped .bar-info{background-color:#5bc0de;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-warning .bar,.progress .bar-warning{background-color:#faa732;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(to bottom,#fbb450,#f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450',endColorstr='#fff89406',GradientType=0)}.progress-warning.progress-striped .bar,.progress-striped .bar-warning{background-color:#fbb450;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.accordion{margin-bottom:20px}.accordion-group{margin-bottom:2px;border:1px solid #e5e5e5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.accordion-heading{border-bottom:0}.accordion-heading .accordion-toggle{display:block;padding:8px 15px}.accordion-toggle{cursor:pointer}.accordion-inner{padding:9px 15px;border-top:1px solid #e5e5e5}.carousel{position:relative;margin-bottom:20px;line-height:1}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-moz-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:40%;left:15px;width:40px;height:40px;margin-top:-20px;font-size:60px;font-weight:100;line-height:30px;color:#fff;text-align:center;background:#222;border:3px solid #fff;-webkit-border-radius:23px;-moz-border-radius:23px;border-radius:23px;opacity:.5;filter:alpha(opacity=50)}.carousel-control.right{right:15px;left:auto}.carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-indicators{position:absolute;top:15px;right:15px;z-index:5;margin:0;list-style:none}.carousel-indicators li{display:block;float:left;width:10px;height:10px;margin-left:5px;text-indent:-999px;background-color:#ccc;background-color:rgba(255,255,255,0.25);border-radius:5px}.carousel-indicators .active{background-color:#fff}.carousel-caption{position:absolute;right:0;bottom:0;left:0;padding:15px;background:#333;background:rgba(0,0,0,0.75)}.carousel-caption h4,.carousel-caption p{line-height:20px;color:#fff}.carousel-caption h4{margin:0 0 5px}.carousel-caption p{margin-bottom:0}.hero-unit{padding:60px;margin-bottom:30px;font-size:18px;font-weight:200;line-height:30px;color:inherit;background-color:#eee;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.hero-unit h1{margin-bottom:0;font-size:60px;line-height:1;letter-spacing:-1px;color:inherit}.hero-unit li{line-height:30px}.pull-right{float:right}.pull-left{float:left}.hide{display:none}.show{display:block}.invisible{visibility:hidden}.affix{position:fixed}/*! + * Bootstrap Responsive v2.3.2 + * + * Copyright 2013 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world by @mdo and @fat. + */.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;line-height:0;content:""}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}@-ms-viewport{width:device-width}.hidden{display:none;visibility:hidden}.visible-phone{display:none !important}.visible-tablet{display:none !important}.hidden-desktop{display:none !important}.visible-desktop{display:inherit !important}@media(min-width:768px) and (max-width:979px){.hidden-desktop{display:inherit !important}.visible-desktop{display:none !important}.visible-tablet{display:inherit !important}.hidden-tablet{display:none !important}}@media(max-width:767px){.hidden-desktop{display:inherit !important}.visible-desktop{display:none !important}.visible-phone{display:inherit !important}.hidden-phone{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:inherit !important}.hidden-print{display:none !important}}@media(min-width:1200px){.row{margin-left:-30px;*zoom:1}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;min-height:1px;margin-left:30px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:1170px}.span12{width:1170px}.span11{width:1070px}.span10{width:970px}.span9{width:870px}.span8{width:770px}.span7{width:670px}.span6{width:570px}.span5{width:470px}.span4{width:370px}.span3{width:270px}.span2{width:170px}.span1{width:70px}.offset12{margin-left:1230px}.offset11{margin-left:1130px}.offset10{margin-left:1030px}.offset9{margin-left:930px}.offset8{margin-left:830px}.offset7{margin-left:730px}.offset6{margin-left:630px}.offset5{margin-left:530px}.offset4{margin-left:430px}.offset3{margin-left:330px}.offset2{margin-left:230px}.offset1{margin-left:130px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.564102564102564%;*margin-left:2.5109110747408616%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.564102564102564%}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.45299145299145%;*width:91.39979996362975%}.row-fluid .span10{width:82.90598290598291%;*width:82.8527914166212%}.row-fluid .span9{width:74.35897435897436%;*width:74.30578286961266%}.row-fluid .span8{width:65.81196581196582%;*width:65.75877432260411%}.row-fluid .span7{width:57.26495726495726%;*width:57.21176577559556%}.row-fluid .span6{width:48.717948717948715%;*width:48.664757228587014%}.row-fluid .span5{width:40.17094017094017%;*width:40.11774868157847%}.row-fluid .span4{width:31.623931623931625%;*width:31.570740134569924%}.row-fluid .span3{width:23.076923076923077%;*width:23.023731587561375%}.row-fluid .span2{width:14.52991452991453%;*width:14.476723040552828%}.row-fluid .span1{width:5.982905982905983%;*width:5.929714493544281%}.row-fluid .offset12{margin-left:105.12820512820512%;*margin-left:105.02182214948171%}.row-fluid .offset12:first-child{margin-left:102.56410256410257%;*margin-left:102.45771958537915%}.row-fluid .offset11{margin-left:96.58119658119658%;*margin-left:96.47481360247316%}.row-fluid .offset11:first-child{margin-left:94.01709401709402%;*margin-left:93.91071103837061%}.row-fluid .offset10{margin-left:88.03418803418803%;*margin-left:87.92780505546462%}.row-fluid .offset10:first-child{margin-left:85.47008547008548%;*margin-left:85.36370249136206%}.row-fluid .offset9{margin-left:79.48717948717949%;*margin-left:79.38079650845607%}.row-fluid .offset9:first-child{margin-left:76.92307692307693%;*margin-left:76.81669394435352%}.row-fluid .offset8{margin-left:70.94017094017094%;*margin-left:70.83378796144753%}.row-fluid .offset8:first-child{margin-left:68.37606837606839%;*margin-left:68.26968539734497%}.row-fluid .offset7{margin-left:62.393162393162385%;*margin-left:62.28677941443899%}.row-fluid .offset7:first-child{margin-left:59.82905982905982%;*margin-left:59.72267685033642%}.row-fluid .offset6{margin-left:53.84615384615384%;*margin-left:53.739770867430444%}.row-fluid .offset6:first-child{margin-left:51.28205128205128%;*margin-left:51.175668303327875%}.row-fluid .offset5{margin-left:45.299145299145295%;*margin-left:45.1927623204219%}.row-fluid .offset5:first-child{margin-left:42.73504273504273%;*margin-left:42.62865975631933%}.row-fluid .offset4{margin-left:36.75213675213675%;*margin-left:36.645753773413354%}.row-fluid .offset4:first-child{margin-left:34.18803418803419%;*margin-left:34.081651209310785%}.row-fluid .offset3{margin-left:28.205128205128204%;*margin-left:28.0987452264048%}.row-fluid .offset3:first-child{margin-left:25.641025641025642%;*margin-left:25.53464266230224%}.row-fluid .offset2{margin-left:19.65811965811966%;*margin-left:19.551736679396257%}.row-fluid .offset2:first-child{margin-left:17.094017094017094%;*margin-left:16.98763411529369%}.row-fluid .offset1{margin-left:11.11111111111111%;*margin-left:11.004728132387708%}.row-fluid .offset1:first-child{margin-left:8.547008547008547%;*margin-left:8.440625568285142%}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:30px}input.span12,textarea.span12,.uneditable-input.span12{width:1156px}input.span11,textarea.span11,.uneditable-input.span11{width:1056px}input.span10,textarea.span10,.uneditable-input.span10{width:956px}input.span9,textarea.span9,.uneditable-input.span9{width:856px}input.span8,textarea.span8,.uneditable-input.span8{width:756px}input.span7,textarea.span7,.uneditable-input.span7{width:656px}input.span6,textarea.span6,.uneditable-input.span6{width:556px}input.span5,textarea.span5,.uneditable-input.span5{width:456px}input.span4,textarea.span4,.uneditable-input.span4{width:356px}input.span3,textarea.span3,.uneditable-input.span3{width:256px}input.span2,textarea.span2,.uneditable-input.span2{width:156px}input.span1,textarea.span1,.uneditable-input.span1{width:56px}.thumbnails{margin-left:-30px}.thumbnails>li{margin-left:30px}.row-fluid .thumbnails{margin-left:0}}@media(min-width:768px) and (max-width:979px){.row{margin-left:-20px;*zoom:1}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;min-height:1px;margin-left:20px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:724px}.span12{width:724px}.span11{width:662px}.span10{width:600px}.span9{width:538px}.span8{width:476px}.span7{width:414px}.span6{width:352px}.span5{width:290px}.span4{width:228px}.span3{width:166px}.span2{width:104px}.span1{width:42px}.offset12{margin-left:764px}.offset11{margin-left:702px}.offset10{margin-left:640px}.offset9{margin-left:578px}.offset8{margin-left:516px}.offset7{margin-left:454px}.offset6{margin-left:392px}.offset5{margin-left:330px}.offset4{margin-left:268px}.offset3{margin-left:206px}.offset2{margin-left:144px}.offset1{margin-left:82px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.7624309392265194%;*margin-left:2.709239449864817%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.7624309392265194%}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.43646408839778%;*width:91.38327259903608%}.row-fluid .span10{width:82.87292817679558%;*width:82.81973668743387%}.row-fluid .span9{width:74.30939226519337%;*width:74.25620077583166%}.row-fluid .span8{width:65.74585635359117%;*width:65.69266486422946%}.row-fluid .span7{width:57.18232044198895%;*width:57.12912895262725%}.row-fluid .span6{width:48.61878453038674%;*width:48.56559304102504%}.row-fluid .span5{width:40.05524861878453%;*width:40.00205712942283%}.row-fluid .span4{width:31.491712707182323%;*width:31.43852121782062%}.row-fluid .span3{width:22.92817679558011%;*width:22.87498530621841%}.row-fluid .span2{width:14.3646408839779%;*width:14.311449394616199%}.row-fluid .span1{width:5.801104972375691%;*width:5.747913483013988%}.row-fluid .offset12{margin-left:105.52486187845304%;*margin-left:105.41847889972962%}.row-fluid .offset12:first-child{margin-left:102.76243093922652%;*margin-left:102.6560479605031%}.row-fluid .offset11{margin-left:96.96132596685082%;*margin-left:96.8549429881274%}.row-fluid .offset11:first-child{margin-left:94.1988950276243%;*margin-left:94.09251204890089%}.row-fluid .offset10{margin-left:88.39779005524862%;*margin-left:88.2914070765252%}.row-fluid .offset10:first-child{margin-left:85.6353591160221%;*margin-left:85.52897613729868%}.row-fluid .offset9{margin-left:79.8342541436464%;*margin-left:79.72787116492299%}.row-fluid .offset9:first-child{margin-left:77.07182320441989%;*margin-left:76.96544022569647%}.row-fluid .offset8{margin-left:71.2707182320442%;*margin-left:71.16433525332079%}.row-fluid .offset8:first-child{margin-left:68.50828729281768%;*margin-left:68.40190431409427%}.row-fluid .offset7{margin-left:62.70718232044199%;*margin-left:62.600799341718584%}.row-fluid .offset7:first-child{margin-left:59.94475138121547%;*margin-left:59.838368402492065%}.row-fluid .offset6{margin-left:54.14364640883978%;*margin-left:54.037263430116376%}.row-fluid .offset6:first-child{margin-left:51.38121546961326%;*margin-left:51.27483249088986%}.row-fluid .offset5{margin-left:45.58011049723757%;*margin-left:45.47372751851417%}.row-fluid .offset5:first-child{margin-left:42.81767955801105%;*margin-left:42.71129657928765%}.row-fluid .offset4{margin-left:37.01657458563536%;*margin-left:36.91019160691196%}.row-fluid .offset4:first-child{margin-left:34.25414364640884%;*margin-left:34.14776066768544%}.row-fluid .offset3{margin-left:28.45303867403315%;*margin-left:28.346655695309746%}.row-fluid .offset3:first-child{margin-left:25.69060773480663%;*margin-left:25.584224756083227%}.row-fluid .offset2{margin-left:19.88950276243094%;*margin-left:19.783119783707537%}.row-fluid .offset2:first-child{margin-left:17.12707182320442%;*margin-left:17.02068884448102%}.row-fluid .offset1{margin-left:11.32596685082873%;*margin-left:11.219583872105325%}.row-fluid .offset1:first-child{margin-left:8.56353591160221%;*margin-left:8.457152932878806%}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:20px}input.span12,textarea.span12,.uneditable-input.span12{width:710px}input.span11,textarea.span11,.uneditable-input.span11{width:648px}input.span10,textarea.span10,.uneditable-input.span10{width:586px}input.span9,textarea.span9,.uneditable-input.span9{width:524px}input.span8,textarea.span8,.uneditable-input.span8{width:462px}input.span7,textarea.span7,.uneditable-input.span7{width:400px}input.span6,textarea.span6,.uneditable-input.span6{width:338px}input.span5,textarea.span5,.uneditable-input.span5{width:276px}input.span4,textarea.span4,.uneditable-input.span4{width:214px}input.span3,textarea.span3,.uneditable-input.span3{width:152px}input.span2,textarea.span2,.uneditable-input.span2{width:90px}input.span1,textarea.span1,.uneditable-input.span1{width:28px}}@media(max-width:767px){body{padding-right:20px;padding-left:20px}.navbar-fixed-top,.navbar-fixed-bottom,.navbar-static-top{margin-right:-20px;margin-left:-20px}.container-fluid{padding:0}.dl-horizontal dt{float:none;width:auto;clear:none;text-align:left}.dl-horizontal dd{margin-left:0}.container{width:auto}.row-fluid{width:100%}.row,.thumbnails{margin-left:0}.thumbnails>li{float:none;margin-left:0}[class*="span"],.uneditable-input[class*="span"],.row-fluid [class*="span"]{display:block;float:none;width:100%;margin-left:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.span12,.row-fluid .span12{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="offset"]:first-child{margin-left:0}.input-large,.input-xlarge,.input-xxlarge,input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.input-prepend input,.input-append input,.input-prepend input[class*="span"],.input-append input[class*="span"]{display:inline-block;width:auto}.controls-row [class*="span"]+[class*="span"]{margin-left:0}.modal{position:fixed;top:20px;right:20px;left:20px;width:auto;margin:0}.modal.fade{top:-100px}.modal.fade.in{top:20px}}@media(max-width:480px){.nav-collapse{-webkit-transform:translate3d(0,0,0)}.page-header h1 small{display:block;line-height:20px}input[type="checkbox"],input[type="radio"]{border:1px solid #ccc}.form-horizontal .control-label{float:none;width:auto;padding-top:0;text-align:left}.form-horizontal .controls{margin-left:0}.form-horizontal .control-list{padding-top:0}.form-horizontal .form-actions{padding-right:10px;padding-left:10px}.media .pull-left,.media .pull-right{display:block;float:none;margin-bottom:10px}.media-object{margin-right:0;margin-left:0}.modal{top:10px;right:10px;left:10px}.modal-header .close{padding:10px;margin:-10px}.carousel-caption{position:static}}@media(max-width:979px){body{padding-top:0}.navbar-fixed-top,.navbar-fixed-bottom{position:static}.navbar-fixed-top{margin-bottom:20px}.navbar-fixed-bottom{margin-top:20px}.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding:5px}.navbar .container{width:auto;padding:0}.navbar .brand{padding-right:10px;padding-left:10px;margin:0 0 0 -5px}.nav-collapse{clear:both}.nav-collapse .nav{float:none;margin:0 0 10px}.nav-collapse .nav>li{float:none}.nav-collapse .nav>li>a{margin-bottom:2px}.nav-collapse .nav>.divider-vertical{display:none}.nav-collapse .nav .nav-header{color:#777;text-shadow:none}.nav-collapse .nav>li>a,.nav-collapse .dropdown-menu a{padding:9px 15px;font-weight:bold;color:#777;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.nav-collapse .btn{padding:4px 10px 4px;font-weight:normal;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.nav-collapse .dropdown-menu li+li a{margin-bottom:2px}.nav-collapse .nav>li>a:hover,.nav-collapse .nav>li>a:focus,.nav-collapse .dropdown-menu a:hover,.nav-collapse .dropdown-menu a:focus{background-color:#f2f2f2}.navbar-inverse .nav-collapse .nav>li>a,.navbar-inverse .nav-collapse .dropdown-menu a{color:#999}.navbar-inverse .nav-collapse .nav>li>a:hover,.navbar-inverse .nav-collapse .nav>li>a:focus,.navbar-inverse .nav-collapse .dropdown-menu a:hover,.navbar-inverse .nav-collapse .dropdown-menu a:focus{background-color:#111}.nav-collapse.in .btn-group{padding:0;margin-top:5px}.nav-collapse .dropdown-menu{position:static;top:auto;left:auto;display:none;float:none;max-width:none;padding:0;margin:0 15px;background-color:transparent;border:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.nav-collapse .open>.dropdown-menu{display:block}.nav-collapse .dropdown-menu:before,.nav-collapse .dropdown-menu:after{display:none}.nav-collapse .dropdown-menu .divider{display:none}.nav-collapse .nav>li>.dropdown-menu:before,.nav-collapse .nav>li>.dropdown-menu:after{display:none}.nav-collapse .navbar-form,.nav-collapse .navbar-search{float:none;padding:10px 15px;margin:10px 0;border-top:1px solid #f2f2f2;border-bottom:1px solid #f2f2f2;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1)}.navbar-inverse .nav-collapse .navbar-form,.navbar-inverse .nav-collapse .navbar-search{border-top-color:#111;border-bottom-color:#111}.navbar .nav-collapse .nav.pull-right{float:none;margin-left:0}.nav-collapse,.nav-collapse.collapse{height:0;overflow:hidden}.navbar .btn-navbar{display:block}.navbar-static .navbar-inner{padding-right:10px;padding-left:10px}}@media(min-width:980px){.nav-collapse.collapse{height:auto !important;overflow:visible !important}}.clear{clear:both;visibility:hidden}.clear hr{display:none}.section p,.section p,.section dt,.section dt{margin-right:7px;margin-left:7px}#ohloh{margin-bottom:10px}#poweredBy{text-align:center}a.externalLink{padding-right:18px}a.newWindow{background:url('../images/window-new.png') right center no-repeat;padding-right:18px}a.externalLink[href^=http]{background:url('../images/internet-web-browser.png') right center no-repeat;padding-right:18px}a.externalLink[href$=".asc"]{background:url('../images/accessories-text-editor.png') right center no-repeat;padding-right:18px}a.externalLink[href$=".jpg"],a.externalLink[href$=".jpeg"],a.externalLink[href$=".gif"],a.externalLink[href$=".png"]{background:url('../images/image-x-generic.png') right center no-repeat;padding-right:18px}a.externalLink[href$=".tar.gz"],a.externalLink[href$=".zip"]{background:url('../images/package-x-generic.png') right center no-repeat;padding-right:18px}a.externalLink[href$=".md5"],a.externalLink[href$=".sha1"]{background:url('../images/document-properties.png') right center no-repeat;padding-right:18px}a.externalLink[href^=https]{background:url('../images/application-certificate.png') right center no-repeat;padding-right:18px}a.externalLink[href^=file]{background:url('../images/drive-harddisk.png') right center no-repeat;padding-right:18px}a.externalLink[href^=ftp]{background:url('../images/network-server.png') right center no-repeat;padding-right:18px}a.externalLink[href^=mailto]{background:url('../images/contact-new.png') right center no-repeat;padding-right:18px}li.none{list-style:none}.search-query{background-image:url(https://cse.google.com/cse/images/google_custom_search_watermark.gif);background-attachment:initial;background-origin:initial;background-clip:initial;background-color:#fff;background-position:0 50%;background-repeat:no-repeat no-repeat;width:95%}body.topBarEnabled{padding-top:60px}body.topBarDisabled{padding-top:20px}.builtBy{display:block}img.builtBy{margin:10px auto}#search-form{margin-left:9px;margin-right:9px}.hero-unit h2{font-size:60px}tt{padding:0 3px 2px;font-family:Monaco,Andale Mono,Courier New,monospace;font-size:.9em;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;background-color:#fee9cc;color:rgba(0,0,0,0.75);padding:1px 3px}li{color:#404040}table.zebra-striped{background-color:#FFF}.footer{background-color:#EEE}.sidebar-nav{padding-left:0;padding-right:0}.sidebar-nav .icon-chevron-right,.sidebar-nav .icon-chevron-down{margin-top:2px;margin-right:-6px;float:right;opacity:.25}li.pull-right{margin-left:3px;margin-right:3px}.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0;padding-left:15px}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} \ No newline at end of file diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/css/print.css b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/css/print.css new file mode 100644 index 0000000..cd19a8c --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/css/print.css @@ -0,0 +1,21 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +#banner, #footer, #leftcol, #breadcrumbs, .docs #toc, .docs .courtesylinks, #leftColumn, #navColumn {display: none !important;} +#bodyColumn, body.docs div.docs {margin: 0 !important;border: none !important} diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/css/site.css b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/css/site.css new file mode 100644 index 0000000..055e7e2 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/css/site.css @@ -0,0 +1 @@ +/* You can override this file with your own styles */ \ No newline at end of file diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/dependencies.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/dependencies.html new file mode 100644 index 0000000..490ae35 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/dependencies.html @@ -0,0 +1,5824 @@ + + + + + + + + Web-BPM Docs – Project Dependencies + + + + + + +
    +
    + + + +
    +
    +
    +

    Project Dependencies

    +

    compile

    +

    The following is a list of compile dependencies for this project. These dependencies are required to compile and run the application:

    + + + + + + + + + + + + + + + + + + + + + + + + +
    GroupIdArtifactIdVersionTypeLicenses
    ru.cg.webbpm.packages.basebackend3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.packages.baseconverters3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.packages.basefrontend3.143.0-SNAPSHOTjar-
    +

    Project Transitive Dependencies

    +

    The following is a list of transitive dependencies for this project. Transitive dependencies are the dependencies of the project dependencies.

    +

    compile

    +

    The following is a list of compile dependencies for this project. These dependencies are required to compile and run the application:

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    GroupIdArtifactIdVersionTypeLicenses
    OAuth2EsiaOAuth2Esia1.1jar-
    ch.qos.logbacklogback-classic1.2.3jarEclipse Public License - v 1.0GNU Lesser General Public License
    ch.qos.logbacklogback-core1.2.3jarEclipse Public License - v 1.0GNU Lesser General Public License
    com.carrotsearchhppc0.8.1jarThe Apache Software License, Version 2.0
    com.fasterxml.jackson.corejackson-annotations2.12.4jarThe Apache Software License, Version 2.0
    com.fasterxml.jackson.corejackson-core2.12.4jarThe Apache Software License, Version 2.0
    com.fasterxml.jackson.corejackson-databind2.12.4jarThe Apache Software License, Version 2.0
    com.fasterxml.jackson.dataformatjackson-dataformat-cbor2.8.11jarThe Apache Software License, Version 2.0
    com.fasterxml.jackson.dataformatjackson-dataformat-smile2.8.11jarThe Apache Software License, Version 2.0
    com.fasterxml.jackson.dataformatjackson-dataformat-yaml2.8.11jarThe Apache Software License, Version 2.0
    com.fasterxml.jackson.datatypejackson-datatype-jsr3102.12.4jarThe Apache Software License, Version 2.0
    com.fasterxml.jackson.jaxrsjackson-jaxrs-base2.14.0jarThe Apache Software License, Version 2.0
    com.fasterxml.jackson.jaxrsjackson-jaxrs-json-provider2.14.0jarThe Apache Software License, Version 2.0
    com.fasterxml.jackson.modulejackson-module-jaxb-annotations2.14.0jarThe Apache Software License, Version 2.0
    com.github.ben-manes.caffeinecaffeine2.9.2jarApache License, Version 2.0
    com.github.spullara.mustache.javacompiler0.9.10jarApache License 2.0
    com.github.virtualdcurvesapi1.06jarBSD License
    com.google.code.findbugsjsr3051.3.9jarThe Apache Software License, Version 2.0
    com.google.code.gsongson2.3.1jarThe Apache Software License, Version 2.0
    com.google.errorproneerror_prone_annotations2.0.18jarApache 2.0
    com.google.guavaguava23.4-jrejarThe Apache Software License, Version 2.0
    com.google.j2objcj2objc-annotations1.1jarThe Apache Software License, Version 2.0
    com.h2databaseh21.4.199jarMPL 2.0 or EPL 1.0
    com.hazelcasthazelcast4.1.9jarThe Apache Software License, Version 2.0
    com.hazelcasthazelcast-spring4.1.4jarThe Apache Software License, Version 2.0
    com.sun.mailjavax.mail1.5.1jarCDDL/GPLv2+CE
    com.sun.xml.bindjaxb-impl2.3.3jarEclipse Distribution License - v 1.0
    com.tdunningt-digest3.2jarThe Apache Software License, Version 2.0
    com.zaxxerSparseBitSet1.2jarThe Apache Software License, Version 2.0
    commons-codeccommons-codec1.6jarThe Apache Software License, Version 2.0
    commons-iocommons-io2.4jarThe Apache Software License, Version 2.0
    commons-langcommons-lang2.6jarThe Apache Software License, Version 2.0
    commons-loggingcommons-logging1.1.1jarThe Apache Software License, Version 2.0
    io.jsonwebtokenjjwt-api0.10.5jarApache License, Version 2.0
    io.jsonwebtokenjjwt-jackson0.10.5jarApache License, Version 2.0
    io.nettynetty-buffer4.1.43.FinaljarApache License, Version 2.0
    io.nettynetty-codec4.1.43.FinaljarApache License, Version 2.0
    io.nettynetty-codec-http4.1.43.FinaljarApache License, Version 2.0
    io.nettynetty-common4.1.43.FinaljarApache License, Version 2.0
    io.nettynetty-handler4.1.43.FinaljarApache License, Version 2.0
    io.nettynetty-resolver4.1.43.FinaljarApache License, Version 2.0
    io.nettynetty-transport4.1.43.FinaljarApache License, Version 2.0
    jakarta.annotationjakarta.annotation-api1.3.5jarEPL 2.0GPL2 w/ CPE
    jakarta.validationjakarta.validation-api2.0.2jarApache License 2.0
    jakarta.ws.rsjakarta.ws.rs-api2.1.6jarEPL 2.0GPL2 w/ CPE
    javax.activationactivation1.1.1jarCOMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
    javax.activationjavax.activation-api1.2.0jarCDDL/GPLv2+CE
    javax.annotationjavax.annotation-api1.3.2jarCDDL + GPLv2 with classpath exception
    javax.mailjavax.mail-api1.5.4jarCDDL/GPLv2+CE
    javax.xml.bindjaxb-api2.3.1jarCDDL 1.1GPL2 w/ CPE
    joda-timejoda-time2.9.2jarApache 2
    net.java.dev.jnajna4.2.2jarLGPL, version 2.1ASL, version 2
    net.javacrumbs.shedlockshedlock-core0.18.2jarThe Apache Software License, Version 2.0
    net.javacrumbs.shedlockshedlock-provider-jdbc-internal0.18.2jarThe Apache Software License, Version 2.0
    net.javacrumbs.shedlockshedlock-provider-jdbc-template0.18.2jarThe Apache Software License, Version 2.0
    net.javacrumbs.shedlockshedlock-spring0.18.2jarThe Apache Software License, Version 2.0
    net.sf.jopt-simplejopt-simple5.0.2jarThe MIT License
    org.apache.commonscommons-collections44.1jarApache License, Version 2.0
    org.apache.commonscommons-compress1.19jarApache License, Version 2.0
    org.apache.commonscommons-csv1.9.0jarApache License, Version 2.0
    org.apache.commonscommons-lang33.6jarApache License, Version 2.0
    org.apache.commonscommons-math33.6.1jarApache License, Version 2.0
    org.apache.httpcomponentshttpasyncclient4.1.4jarApache License, Version 2.0
    org.apache.httpcomponentshttpclient4.5.1jarApache License, Version 2.0
    org.apache.httpcomponentshttpcore4.4.12jarApache License, Version 2.0
    org.apache.httpcomponentshttpcore-nio4.4.12jarApache License, Version 2.0
    org.apache.httpcomponentshttpmime4.5.13jarApache License, Version 2.0
    org.apache.logging.log4jlog4j-api2.11.1jarApache License, Version 2.0
    org.apache.lucenelucene-analyzers-common8.4.0jarApache 2
    org.apache.lucenelucene-backward-codecs8.4.0jarApache 2
    org.apache.lucenelucene-core8.4.0jarApache 2
    org.apache.lucenelucene-grouping8.4.0jarApache 2
    org.apache.lucenelucene-highlighter8.4.0jarApache 2
    org.apache.lucenelucene-join8.4.0jarApache 2
    org.apache.lucenelucene-memory8.4.0jarApache 2
    org.apache.lucenelucene-misc8.4.0jarApache 2
    org.apache.lucenelucene-queries8.4.0jarApache 2
    org.apache.lucenelucene-queryparser8.4.0jarApache 2
    org.apache.lucenelucene-sandbox8.4.0jarApache 2
    org.apache.lucenelucene-spatial8.4.0jarApache 2
    org.apache.lucenelucene-spatial-extras8.4.0jarApache 2
    org.apache.lucenelucene-spatial3d8.4.0jarApache 2
    org.apache.lucenelucene-suggest8.4.0jarApache 2
    org.apache.mavenmaven-model3.3.3jarApache License, Version 2.0
    org.apache.maven.sharedmaven-invoker3.0.1jarApache License, Version 2.0
    org.apache.maven.sharedmaven-shared-utils3.2.1jarApache License, Version 2.0
    org.apache.poipoi4.1.2jarApache License, Version 2.0
    org.apache.poipoi-ooxml4.1.2jarApache License, Version 2.0
    org.apache.poipoi-ooxml-schemas4.1.2jarApache License, Version 2.0
    org.apache.santuarioxmlsec1.5.7jarThe Apache Software License, Version 2.0
    org.apache.tikatika-core1.7jarThe Apache Software License, Version 2.0
    org.apache.xmlbeansxmlbeans3.1.0jarThe Apache Software License, Version 2.0
    org.aspectjaspectjweaver1.9.5jarEclipse Public License - v 1.0
    org.bouncycastlebcpkix-jdk15on1.60jarBouncy Castle Licence
    org.bouncycastlebcprov-jdk15on1.60jarBouncy Castle Licence
    org.checkerframeworkchecker-qual3.10.0jarThe MIT License
    org.codehaus.mojoanimal-sniffer-annotations1.14jarMIT license
    org.codehaus.plexusplexus-component-annotations1.7.1jarApache License, Version 2.0
    org.codehaus.plexusplexus-utils3.0.20jarThe Apache Software License, Version 2.0
    org.controlsfxcontrolsfx11.1.1jarThe 3-Clause BSD License
    org.easymockeasymock3.5.1jarApache 2
    org.elasticsearchelasticsearch7.6.2jarThe Apache Software License, Version 2.0
    org.elasticsearchelasticsearch-cli7.6.2jarThe Apache Software License, Version 2.0
    org.elasticsearchelasticsearch-core7.6.2jarThe Apache Software License, Version 2.0
    org.elasticsearchelasticsearch-geo7.6.2jarThe Apache Software License, Version 2.0
    org.elasticsearchelasticsearch-secure-sm7.6.2jarThe Apache Software License, Version 2.0
    org.elasticsearchelasticsearch-ssl-config7.6.2jarThe Apache Software License, Version 2.0
    org.elasticsearchelasticsearch-x-content7.6.2jarThe Apache Software License, Version 2.0
    org.elasticsearchjna4.5.1jarThe Apache Software License, Version 2.0
    org.elasticsearch.clientelasticsearch-rest-client7.6.2jarThe Apache Software License, Version 2.0
    org.elasticsearch.clientelasticsearch-rest-high-level-client7.6.2jarThe Apache Software License, Version 2.0
    org.elasticsearch.clienttransport7.6.2jarThe Apache Software License, Version 2.0
    org.elasticsearch.pluginaggs-matrix-stats-client7.6.2jarThe Apache Software License, Version 2.0
    org.elasticsearch.pluginlang-mustache-client7.6.2jarThe Apache Software License, Version 2.0
    org.elasticsearch.pluginmapper-extras-client7.6.2jarThe Apache Software License, Version 2.0
    org.elasticsearch.pluginparent-join-client7.6.2jarThe Apache Software License, Version 2.0
    org.elasticsearch.pluginpercolator-client7.6.2jarThe Apache Software License, Version 2.0
    org.elasticsearch.pluginrank-eval-client7.6.2jarThe Apache Software License, Version 2.0
    org.elasticsearch.pluginreindex-client7.6.2jarThe Apache Software License, Version 2.0
    org.elasticsearch.plugintransport-netty4-client7.6.2jarThe Apache Software License, Version 2.0
    org.glassfishjavax.json1.0.4jarDual license consisting of the CDDL v1.1 and GPL v2
    org.glassfish.grizzlygrizzly-framework2.4.4jarEPL-2.0
    org.glassfish.grizzlygrizzly-http2.4.4jarEPL-2.0
    org.glassfish.grizzlygrizzly-http-server2.4.4jarEPL-2.0
    org.glassfish.hk2hk2-api2.6.1jarEPL 2.0GPL2 w/ CPE
    org.glassfish.hk2hk2-locator2.6.1jarEPL 2.0GPL2 w/ CPE
    org.glassfish.hk2hk2-utils2.6.1jarEPL 2.0GPL2 w/ CPE
    org.glassfish.hk2osgi-resource-locator1.0.3jarEPL 2.0GPL2 w/ CPE
    org.glassfish.hk2.externalaopalliance-repackaged2.6.1jarEPL 2.0GPL2 w/ CPE
    org.glassfish.hk2.externaljakarta.inject2.6.1jarEPL 2.0GPL2 w/ CPE
    org.glassfish.jersey.containersjersey-container-grizzly2-http2.35jarEPL 2.0GPL2 w/ CPEEDL 1.0BSD 2-ClauseApache License, 2.0Public DomainModified BSDjQuery licenseMIT licenseW3C license
    org.glassfish.jersey.corejersey-client2.35jarEPL 2.0GPL2 w/ CPEEDL 1.0BSD 2-ClauseApache License, 2.0Public DomainModified BSDjQuery licenseMIT licenseW3C license
    org.glassfish.jersey.corejersey-common2.35jarEPL 2.0The GNU General Public License (GPL), Version 2, With Classpath ExceptionApache License, 2.0Public Domain
    org.glassfish.jersey.corejersey-server2.35jarEPL 2.0The GNU General Public License (GPL), Version 2, With Classpath ExceptionApache License, 2.0Modified BSD
    org.glassfish.jersey.extjersey-entity-filtering2.35jarEPL 2.0GPL2 w/ CPEEDL 1.0BSD 2-ClauseApache License, 2.0Public DomainModified BSDjQuery licenseMIT licenseW3C license
    org.glassfish.jersey.injectjersey-hk22.35jarEPL 2.0GPL2 w/ CPEEDL 1.0BSD 2-ClauseApache License, 2.0Public DomainModified BSDjQuery licenseMIT licenseW3C license
    org.glassfish.jersey.mediajersey-media-json-jackson2.35jarEPL 2.0The GNU General Public License (GPL), Version 2, With Classpath ExceptionApache License, 2.0
    org.hdrhistogramHdrHistogram2.1.9jarPublic Domain, per Creative Commons CC0
    org.hsqldbhsqldb2.5.2jarHSQLDB License, a BSD open source license
    org.javassistjavassist3.25.0-GAjarMPL 1.1LGPL 2.1Apache License 2.0
    org.jooqjooq3.14.15jarApache License, Version 2.0
    org.jooqjooq-meta3.14.15jarApache License, Version 2.0
    org.jooqjooq-meta-extensions3.14.15jarApache License, Version 2.0
    org.jooqjooq-meta-extensions-liquibase3.14.15jarApache License, Version 2.0
    org.jsonjson20220924jarPublic Domain
    org.liquibaseliquibase-core3.10.3jarApache License, Version 2.0
    org.mnode.ical4jical4j3.0.5jariCal4j - License
    org.objenesisobjenesis2.6jarApache 2
    org.reactivestreamsreactive-streams1.0.2jarCC0
    org.slf4jjul-to-slf4j1.7.10jarMIT License
    org.slf4jslf4j-api1.7.10jarMIT License
    org.springframeworkspring-aop5.2.6.RELEASEjarApache License, Version 2.0
    org.springframeworkspring-aspects5.2.6.RELEASEjarApache License, Version 2.0
    org.springframeworkspring-beans5.2.6.RELEASEjarApache License, Version 2.0
    org.springframeworkspring-context5.2.6.RELEASEjarApache License, Version 2.0
    org.springframeworkspring-context-support5.2.6.RELEASEjarApache License, Version 2.0
    org.springframeworkspring-core5.2.6.RELEASEjarApache License, Version 2.0
    org.springframeworkspring-expression5.2.6.RELEASEjarApache License, Version 2.0
    org.springframeworkspring-jcl5.2.6.RELEASEjarApache License, Version 2.0
    org.springframeworkspring-jdbc5.2.6.RELEASEjarApache License, Version 2.0
    org.springframeworkspring-tx5.2.6.RELEASEjarApache License, Version 2.0
    org.springframeworkspring-web5.2.6.RELEASEjarApache License, Version 2.0
    org.springframeworkspring-webmvc5.2.6.RELEASEjarApache License, Version 2.0
    org.springframework.dataspring-data-commons2.3.0.RELEASEjarApache License, Version 2.0
    org.springframework.dataspring-data-elasticsearch4.0.0.RELEASEjarApache License, Version 2.0
    org.springframework.ldapspring-ldap-core2.3.4.RELEASEjarThe Apache Software License, Version 2.0
    org.springframework.securityspring-security-config5.2.6.RELEASEjarThe Apache Software License, Version 2.0
    org.springframework.securityspring-security-core5.2.6.RELEASEjarThe Apache Software License, Version 2.0
    org.springframework.securityspring-security-jwt1.0.9.RELEASEjarApache 2.0
    org.springframework.securityspring-security-web5.2.6.RELEASEjarThe Apache Software License, Version 2.0
    org.springframework.security.kerberosspring-security-kerberos-core1.0.1.RELEASEjarThe Apache Software License, Version 2.0
    org.springframework.security.kerberosspring-security-kerberos-web1.0.1.RELEASEjarThe Apache Software License, Version 2.0
    org.telegramtelegrambots6.3.0jarMIT License
    org.telegramtelegrambots-meta6.3.0jarMIT License
    org.yamlsnakeyaml1.17jarApache License, Version 2.0
    org.zeroturnaroundzt-exec1.12jarThe Apache Software License, Version 2.0
    org.zeroturnaroundzt-process-killer1.10jarThe Apache Software License, Version 2.0
    org.zeroturnaroundzt-zip1.15jarThe Apache Software License, Version 2.0
    ru.cg.webbpm.modulesexpression3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.modulesinject3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.modulesstandard-annotations3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.moduleswebkit-annotations3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.moduleswebkit-base3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.moduleswebkit-beans3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.moduleswebkit-rpc3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.modules.bpmnbpmn-beans3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.modules.coreapp-info3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.modules.coreerror-handling-api3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.modules.coremetrics3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.modules.databasedatabase-beans3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.modules.jndijndi-beans3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.modules.jndijndi-inject3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.modules.securitysecurity-adapter3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.modules.securitysecurity-api3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.modules.securitysecurity-beans3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.modules.securitysecurity-db-synchronization-api3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.modules.securitysecurity-db-synchronization-ldap-impl3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.modules.securitysecurity-esia3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.studioresources3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.studio.basecore-api3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.studio.baseplatform-api3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.studio.subsystems.bpmnbpmn-core-api3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.studio.subsystems.bpmnwebbpm-process-api3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.studio.subsystems.databasedatabase-api3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.studio.subsystems.databasedatabase-models3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.studio.subsystems.page-designerserialized-page-api3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.studio.subsystems.script-editorserialized-object-api3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.studio.subsystems.scriptingcompile-api3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.studio.subsystems.scriptingmetadata-models3.143.0-SNAPSHOTjar-
    ru.fixaggregating-profiler1.4.7jarThe Apache License, Version 2.0
    ru.micord.fiasclient2.24.1jar-
    ru.micord.gargar-client2.6.0jar-
    ru.micord.gargar-core2.6.0jar-
    +

    runtime

    +

    The following is a list of runtime dependencies for this project. These dependencies are required to run the application:

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    GroupIdArtifactIdVersionTypeLicenses
    com.sun.activationjakarta.activation1.2.2jarEDL 1.0
    io.jsonwebtokenjjwt-impl0.10.5jarApache License, Version 2.0
    xercesxercesImpl2.11.0jarThe Apache Software License, Version 2.0
    xml-apisxml-apis1.4.01jarThe Apache Software License, Version 2.0The SAX LicenseThe W3C License
    +

    provided

    +

    The following is a list of provided dependencies for this project. These dependencies are required to compile the application, but should be provided by default when using the library:

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    GroupIdArtifactIdVersionTypeLicenses
    com.zaxxerHikariCP2.4.0jarThe Apache Software License, Version 2.0
    jakarta.xml.bindjakarta.xml.bind-api2.3.3jarEclipse Distribution License - v 1.0
    javaxjavaee-api7.0jarCDDL + GPLv2 with classpath exception
    org.postgresqlpostgresql42.5.2jarBSD-2-Clause
    org.xerialsqlite-jdbc3.34.0jarThe Apache Software License, Version 2.0
    ru.cg.webbpm.modules.corecore-runtime-api3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.modules.databasedatabase-api3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.modules.databasedatabase-impl3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.modules.resourcesresources-api3.143.0-SNAPSHOTjar-
    +

    Project Dependency Graph

    + +
    +

    Dependency Tree

    +
    +

    Licenses

    +

    MPL 2.0 or EPL 1.0: H2 Database Engine

    +

    Apache 2.0: Spring Security JWT Library, error-prone annotations

    +

    The Apache License, Version 2.0: ru.fix:aggregating-profiler

    +

    MIT License: JUL to SLF4J bridge, SLF4J API Module, Telegram Bots, Telegram Bots Meta

    +

    jQuery license: jersey-container-grizzly2-http, jersey-core-client, jersey-ext-entity-filtering, jersey-inject-hk2

    +

    GPL2 w/ CPE: HK2 API module, HK2 Implementation Utilities, Jakarta Annotations API, OSGi resource locator, ServiceLocator Default Implementation, aopalliance version 1.0 repackaged as a module, jakarta.ws.rs-api, javax.inject:1 as OSGi bundle, jaxb-api, jersey-container-grizzly2-http, jersey-core-client, jersey-ext-entity-filtering, jersey-inject-hk2

    +

    CDDL/GPLv2+CE: JavaBeans Activation Framework API jar, JavaMail API, JavaMail API jar

    +

    Apache 2: EasyMock, Joda-Time, Lucene Common Analyzers, Lucene Core, Lucene Grouping, Lucene Highlighter, Lucene Join, Lucene Memory, Lucene Miscellaneous, Lucene Queries, Lucene QueryParsers, Lucene Sandbox, Lucene Spatial, Lucene Spatial 3D, Lucene Spatial Extras, Lucene Suggest, Objenesis

    +

    CC0: reactive-streams

    +

    Unknown: OAuth2Esia, app-info, backend, bpmn-beans, bpmn-core-api, client, compile-api, converters, core-api, core-runtime-api, database-api, database-beans, database-impl, database-models, error-handling-api, expression, frontend, gar-client, gar-core, inject, jndi-beans, jndi-inject, metadata-models, metrics, platform-api, resources, resources-api, security-adapter, security-api, security-beans, security-db-synchronization-api, security-db-synchronization-ldap-impl, security-esia, serialized-object-api, serialized-page-api, standard-annotations, webbpm-process-api, webkit-annotations, webkit-base, webkit-beans, webkit-rpc

    +

    Public Domain, per Creative Commons CC0: HdrHistogram

    +

    Apache License 2.0: Jakarta Bean Validation API, Javassist, compiler

    +

    BSD License: curvesapi

    +

    The MIT License: Checker Qual, JOpt Simple

    +

    Apache License, Version 2.0: Apache Commons CSV, Apache Commons Collections, Apache Commons Compress, Apache Commons Lang, Apache Commons Math, Apache HttpAsyncClient, Apache HttpClient, Apache HttpClient Mime, Apache HttpCore, Apache HttpCore NIO, Apache Log4j API, Apache Maven Invoker, Apache Maven Shared Utils, Apache POI, Caffeine cache, JJWT :: API, JJWT :: Extensions :: Jackson, JJWT :: Impl, Liquibase, Maven Model, Netty/Buffer, Netty/Codec, Netty/Codec/HTTP, Netty/Common, Netty/Handler, Netty/Resolver, Netty/Transport, Plexus :: Component Annotations, SnakeYAML, Spring AOP, Spring Aspects, Spring Beans, Spring Commons Logging Bridge, Spring Context, Spring Context Support, Spring Core, Spring Data Core, Spring Data Elasticsearch, Spring Expression Language (SpEL), Spring JDBC, Spring Transaction, Spring Web, Spring Web MVC, jOOQ, jOOQ Meta, jOOQ Meta Extensions, jOOQ Meta Extensions Liquibase

    +

    COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0: JavaBeans(TM) Activation Framework

    +

    EPL 2.0: HK2 API module, HK2 Implementation Utilities, Jakarta Annotations API, OSGi resource locator, ServiceLocator Default Implementation, aopalliance version 1.0 repackaged as a module, jakarta.ws.rs-api, javax.inject:1 as OSGi bundle, jersey-container-grizzly2-http, jersey-core-client, jersey-core-common, jersey-core-server, jersey-ext-entity-filtering, jersey-inject-hk2, jersey-media-json-jackson

    +

    MIT license: Animal Sniffer Annotations, jersey-container-grizzly2-http, jersey-core-client, jersey-ext-entity-filtering, jersey-inject-hk2

    +

    MPL 1.1: Javassist

    +

    LGPL, version 2.1: Java Native Access

    +

    BSD 2-Clause: jersey-container-grizzly2-http, jersey-core-client, jersey-ext-entity-filtering, jersey-inject-hk2

    +

    Apache License, 2.0: jersey-container-grizzly2-http, jersey-core-client, jersey-core-common, jersey-core-server, jersey-ext-entity-filtering, jersey-inject-hk2, jersey-media-json-jackson

    +

    CDDL 1.1: jaxb-api

    +

    The SAX License: XML Commons External Components XML APIs

    +

    The 3-Clause BSD License: ControlsFX

    +

    HSQLDB License, a BSD open source license: HyperSQL Database

    +

    BSD-2-Clause: PostgreSQL JDBC Driver

    +

    The W3C License: XML Commons External Components XML APIs

    +

    Public Domain: JSON in Java, jersey-container-grizzly2-http, jersey-core-client, jersey-core-common, jersey-ext-entity-filtering, jersey-inject-hk2

    +

    GNU Lesser General Public License: Logback Classic Module, Logback Core Module

    +

    Bouncy Castle Licence: Bouncy Castle PKIX, CMS, EAC, TSP, PKCS, OCSP, CMP, and CRMF APIs, Bouncy Castle Provider

    +

    W3C license: jersey-container-grizzly2-http, jersey-core-client, jersey-ext-entity-filtering, jersey-inject-hk2

    +

    EDL 1.0: Jakarta Activation, jersey-container-grizzly2-http, jersey-core-client, jersey-ext-entity-filtering, jersey-inject-hk2

    +

    iCal4j - License: ical4j

    +

    Modified BSD: jersey-container-grizzly2-http, jersey-core-client, jersey-core-server, jersey-ext-entity-filtering, jersey-inject-hk2

    +

    Eclipse Distribution License - v 1.0: Jakarta XML Binding API, Old JAXB Runtime

    +

    LGPL 2.1: Javassist

    +

    ASL, version 2: Java Native Access

    +

    CDDL + GPLv2 with classpath exception: Java(TM) EE 7 Specification APIs, javax.annotation API

    +

    Dual license consisting of the CDDL v1.1 and GPL v2: JSR 353 (JSON Processing) Default Provider

    +

    EPL-2.0: grizzly-framework, grizzly-http, grizzly-http-server

    +

    The Apache Software License, Version 2.0: Apache Tika core, Apache XML Security for Java, Commons Codec, Commons IO, Commons Lang, Commons Logging, Elastic JNA Distribution, FindBugs-jsr305, Gson, Guava: Google Core Libraries for Java, HPPC Collections, HikariCP, J2ObjC Annotations, Jackson dataformat: CBOR, Jackson dataformat: Smile, Jackson datatype: JSR310, Jackson module: Old JAXB Annotations (javax.xml.bind), Jackson-JAXRS: JSON, Jackson-JAXRS: base, Jackson-annotations, Jackson-core, Jackson-dataformat-YAML, Plexus Common Utilities, SQLite JDBC, SparseBitSet, Spring Security Kerberos Core, Spring Security Kerberos Web, T-Digest, XML Commons External Components XML APIs, Xerces2-j, XmlBeans, ZT Process Executor, ZT Process Killer, ZT Zip, aggs-matrix-stats, elasticsearch-cli, elasticsearch-core, elasticsearch-geo, elasticsearch-secure-sm, elasticsearch-ssl-config, elasticsearch-x-content, hazelcast, hazelcast-spring, jackson-databind, lang-mustache, mapper-extras, parent-join, percolator, rank-eval, reindex, rest, rest-high-level, server, shedlock-core, shedlock-provider-jdbc-internal, shedlock-provider-jdbc-template, shedlock-spring, spring-ldap-core, spring-security-config, spring-security-core, spring-security-web, transport, transport-netty4

    +

    Eclipse Public License - v 1.0: AspectJ weaver, Logback Classic Module, Logback Core Module

    +

    The GNU General Public License (GPL), Version 2, With Classpath Exception: jersey-core-common, jersey-core-server, jersey-media-json-jackson

    +

    Dependency File Details

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FilenameSizeEntriesClassesPackagesJava VersionDebug InformationSealed
    OAuth2Esia-1.1.jar34.5 kB362431.5YesNo
    logback-classic-1.2.3.jar290.3 kB234175271.6YesNo
    logback-core-1.2.3.jar471.9 kB419373361.6YesNo
    hppc-0.8.1.jar1.2 MB96495051.7YesNo
    jackson-annotations-2.12.4.jar75.7 kB84722-YesNo
    jackson-core-2.12.4.jar365.2 kB15112513-YesNo
    jackson-databind-2.12.4.jar1.5 MB73770123-YesNo
    jackson-dataformat-cbor-2.8.11.jar50.7 kB23911.7YesNo
    jackson-dataformat-smile-2.8.11.jar73.9 kB321721.7YesNo
    jackson-dataformat-yaml-2.8.11.jar40.9 kB311321.7YesNo
    jackson-datatype-jsr310-2.12.4.jar120.4 kB79597-YesNo
    jackson-jaxrs-base-2.14.0.jar31.9 kB37195-YesNo
    jackson-jaxrs-json-provider-2.14.0.jar16.7 kB31113-YesNo
    jackson-module-jaxb-annotations-2.14.0.jar36.8 kB34144-YesNo
    caffeine-2.9.2.jar925.3 kB70369241.8YesNo
    compiler-0.9.10.jar111.5 kB1069071.8YesNo
    curvesapi-1.06.jar111.9 kB12010161.5YesNo
    jsr305-1.3.9.jar33 kB723531.5YesNo
    gson-2.3.1.jar210.9 kB17516561.5YesNo
    error_prone_annotations-2.0.18.jar12.1 kB311921.7NoNo
    guava-23.4-jre.jar2.7 MB19461916181.8YesNo
    j2objc-annotations-1.1.jar8.8 kB231211.5YesNo
    h2-1.4.199.jar2.2 MB87787244-YesNo
    hazelcast-4.1.9.jar11.6 MB752469834671.8YesNo
    hazelcast-spring-4.1.4.jar163.1 kB472851.8YesNo
    jakarta.activation-1.2.2.jar68.5 kB61434-YesNo
    javax.mail-1.5.1.jar545.4 kB342311141.5YesNo
    jaxb-impl-2.3.3.jar1.1 MB92372432-YesNo
    t-digest-3.2.jar51.2 kB291811.7YesNo
    HikariCP-2.4.0.jar125.4 kB897461.7YesNo
    SparseBitSet-1.2.jar24.5 kB251511.5YesNo
    commons-codec-1.6.jar232.8 kB2187661.5YesNo
    commons-io-2.4.jar185.1 kB12811061.6YesNo
    commons-lang-2.6.jar284.2 kB155133101.3YesNo
    commons-logging-1.1.1.jar60.7 kB422821.1YesNo
    jjwt-api-0.10.5.jar74.8 kB887641.7YesNo
    jjwt-impl-0.10.5.jar68 kB665341.7YesNo
    jjwt-jackson-0.10.5.jar4.7 kB12211.7YesNo
    netty-buffer-4.1.43.Final.jar277.4 kB13311711.6YesNo
    netty-codec-4.1.43.Final.jar318.4 kB220198101.6YesNo
    netty-codec-http-4.1.43.Final.jar594.7 kB38135591.6YesNo
    netty-common-4.1.43.Final.jar605.4 kB48845891.6YesNo
    netty-handler-4.1.43.Final.jar441.3 kB302275111.6YesNo
    netty-resolver-4.1.43.Final.jar32.8 kB382611.6YesNo
    netty-transport-4.1.43.Final.jar474 kB387359121.6YesNo
    jakarta.annotation-api-1.3.5.jar25.1 kB281531.8YesNo
    jakarta.validation-api-2.0.2.jar91.9 kB16014391.8YesNo
    jakarta.ws.rs-api-2.1.6.jar140.4 kB1551387-YesNo
    jakarta.xml.bind-api-2.3.3.jar115.6 kB1371117-YesNo
    javaee-api-7.0.jar1.9 MB238922381331.7YesNo
    activation-1.1.1.jar69.4 kB503831.4YesNo
    javax.activation-api-1.2.0.jar56.7 kB413111.5YesNo
    javax.annotation-api-1.3.2.jar26.6 kB291531.8YesNo
    javax.mail-api-1.5.4.jar194 kB14813451.5YesNo
    jaxb-api-2.3.1.jar128.1 kB1361117-YesNo
    joda-time-2.9.2.jar625.6 kB75224671.5YesNo
    jna-4.2.2.jar1.1 MB15410731.6YesNo
    shedlock-core-0.18.2.jar13.4 kB281621.8YesNo
    shedlock-provider-jdbc-internal-0.18.2.jar5.1 kB14111.8YesNo
    shedlock-provider-jdbc-template-0.18.2.jar4.3 kB14211.8YesNo
    shedlock-spring-0.18.2.jar13.3 kB211011.8YesNo
    jopt-simple-5.0.2.jar78.1 kB715931.7YesNo
    commons-collections4-4.1.jar751.2 kB548518181.6YesNo
    commons-compress-1.19.jar615.1 kB395354291.7YesNo
    commons-csv-1.9.0.jar51.3 kB301711.8YesNo
    commons-lang3-3.6.jar494.9 kB292267131.7YesNo
    commons-math3-3.6.1.jar2.2 MB14021301751.5YesNo
    httpasyncclient-4.1.4.jar180 kB1118681.6YesNo
    httpclient-4.5.1.jar732.8 kB502461241.6YesNo
    httpcore-4.4.12.jar328.3 kB283253171.6YesNo
    httpcore-nio-4.4.12.jar367.7 kB270241141.6YesNo
    httpmime-4.5.13.jar41.8 kB402321.6YesNo
    log4j-api-2.11.1.jar264.1 kB1941628-YesNo
    lucene-analyzers-common-8.4.0.jar1.7 MB693579631.8YesNo
    lucene-backward-codecs-8.4.0.jar139.4 kB1018641.8YesNo
    lucene-core-8.4.0.jar3.3 MB20751978271.8YesNo
    lucene-grouping-8.4.0.jar90.8 kB665711.8YesNo
    lucene-highlighter-8.4.0.jar209.2 kB14313231.8YesNo
    lucene-join-8.4.0.jar148.9 kB11210311.8YesNo
    lucene-memory-8.4.0.jar51.9 kB372011.8YesNo
    lucene-misc-8.4.0.jar99 kB805781.8YesNo
    lucene-queries-8.4.0.jar369.8 kB29828471.8YesNo
    lucene-queryparser-8.4.0.jar382.1 kB292254251.8YesNo
    lucene-sandbox-8.4.0.jar320.7 kB18716061.8YesNo
    lucene-spatial-8.4.0.jar14.5 kB13421.8YesNo
    lucene-spatial-extras-8.4.0.jar240.3 kB164147101.8YesNo
    lucene-spatial3d-8.4.0.jar306.8 kB15214321.8YesNo
    lucene-suggest-8.4.0.jar249.5 kB14913171.8YesNo
    maven-model-3.3.3.jar160.8 kB675031.7YesNo
    maven-invoker-3.0.1.jar33 kB341711.7YesNo
    maven-shared-utils-3.2.1.jar166.6 kB10984101.6YesNo
    poi-4.1.2.jar2.9 MB18431764661.8YesNo
    poi-ooxml-4.1.2.jar1.9 MB942878481.8YesNo
    poi-ooxml-schemas-4.1.2.jar7.9 MB75434261501.8NoNo
    xmlsec-1.5.7.jar656 kB484393321.5YesNo
    tika-core-1.7.jar526.2 kB294235171.6YesNo
    xmlbeans-3.1.0.jar2.6 MB20921373511.6YesNo
    aspectjweaver-1.9.5.jar2 MB1020968361.8YesNo
    bcpkix-jdk15on-1.60.jar796.5 kB723674421.5NoNo
    bcprov-jdk15on-1.60.jar4.2 MB349433301491.5NoNo
    checker-qual-3.10.0.jar207 kB396330291.8YesNo
    animal-sniffer-annotations-1.14.jar3.5 kB12111.5NoNo
    plexus-component-annotations-1.7.1.jar4.3 kB15311.6NoNo
    plexus-utils-3.0.20.jar243.1 kB12910491.5YesNo
    controlsfx-11.1.1.jar1.4 MB77065241-YesNo
    easymock-3.5.1.jar540.2 kB404375131.6YesNo
    elasticsearch-7.6.2.jar11.8 MB63846048286-YesNo
    elasticsearch-cli-7.6.2.jar17.1 kB16911.8YesNo
    elasticsearch-core-7.6.2.jar44.7 kB492310-YesNo
    elasticsearch-geo-7.6.2.jar45 kB312321.8YesNo
    elasticsearch-secure-sm-7.6.2.jar11 kB12511.8YesNo
    elasticsearch-ssl-config-7.6.2.jar66.6 kB413311.8YesNo
    elasticsearch-x-content-7.6.2.jar132.5 kB1028881.8YesNo
    jna-4.5.1.jar885.3 kB14010731.6YesNo
    elasticsearch-rest-client-7.6.2.jar63.6 kB494211.8YesNo
    elasticsearch-rest-high-level-client-7.6.2.jar1.5 MB824763491.8YesNo
    transport-7.6.2.jar7.6 kB9111.8YesNo
    aggs-matrix-stats-client-7.6.2.jar60.6 kB443051.8YesNo
    lang-mustache-client-7.6.2.jar62.7 kB423411.8YesNo
    mapper-extras-client-7.6.2.jar88.9 kB605121.8YesNo
    parent-join-client-7.6.2.jar82.8 kB544151.8YesNo
    percolator-client-7.6.2.jar74.8 kB332611.8YesNo
    rank-eval-client-7.6.2.jar77 kB382811.8YesNo
    reindex-client-7.6.2.jar116.7 kB554621.8YesNo
    transport-netty4-client-7.6.2.jar74.1 kB463541.8YesNo
    javax.json-1.0.4.jar85.1 kB887251.6YesNo
    grizzly-framework-2.4.4.jar852 kB619583231.8YesNo
    grizzly-http-2.4.4.jar349.5 kB17816331.8YesNo
    grizzly-http-server-2.4.4.jar312 kB19717781.8YesNo
    hk2-api-2.6.1.jar200.2 kB19717671.8YesNo
    hk2-locator-2.6.1.jar203.4 kB1179931.8YesNo
    hk2-utils-2.6.1.jar131.6 kB1028071.8YesNo
    osgi-resource-locator-1.0.3.jar19.5 kB231211.6YesNo
    aopalliance-repackaged-2.6.1.jar27 kB412641.8YesNo
    jakarta.inject-2.6.1.jar18.1 kB17611.8NoNo
    jersey-container-grizzly2-http-2.35.jar42.3 kB401821.8YesNo
    jersey-client-2.35.jar260.5 kB191162101.8YesNo
    jersey-common-2.35.jar1.2 MB92486923-YesNo
    jersey-server-2.35.jar948.9 kB666607271.8YesNo
    jersey-entity-filtering-2.35.jar84 kB765931.8YesNo
    jersey-hk2-2.35.jar78.4 kB684611.8YesNo
    jersey-media-json-jackson-2.35.jar75.9 kB654081.8YesNo
    HdrHistogram-2.1.9.jar114.2 kB685911.6YesNo
    hsqldb-2.5.2.jar1.6 MB754690221.8NoYes
    javassist-3.25.0-GA.jar780.3 kB449425171.7YesNo
    jooq-3.14.15.jar3.2 MB20652024211.8YesNo
    jooq-meta-3.14.15.jar683.6 kB381334341.8YesNo
    jooq-meta-extensions-3.14.15.jar11.2 kB18421.8YesNo
    jooq-meta-extensions-liquibase-3.14.15.jar6.4 kB15111.8YesNo
    json-20220924.jar70.3 kB362711.6YesNo
    liquibase-core-3.10.3.jar3.2 MB224319231171.8YesNo
    ical4j-3.0.5.jar1.3 MB1527531161.8YesNo
    objenesis-2.6.jar55.7 kB5943101.6YesNo
    postgresql-42.5.2.jar1 MB536469441.8YesNo
    reactive-streams-1.0.2.jar2.1 kB8411.6NoNo
    jul-to-slf4j-1.7.10.jar4.7 kB11111.5YesNo
    slf4j-api-1.7.10.jar32.1 kB392831.5YesNo
    spring-aop-5.2.6.RELEASE.jar372.3 kB306277171.8YesNo
    spring-aspects-5.2.6.RELEASE.jar47.4 kB472851.8YesNo
    spring-beans-5.2.6.RELEASE.jar686.5 kB413383131.8YesNo
    spring-context-5.2.6.RELEASE.jar1.2 MB964877641.8YesNo
    spring-context-support-5.2.6.RELEASE.jar182.4 kB140119111.8YesNo
    spring-core-5.2.6.RELEASE.jar1.4 MB1020962471.8YesNo
    spring-expression-5.2.6.RELEASE.jar282.2 kB16415061.8YesNo
    spring-jcl-5.2.6.RELEASE.jar24 kB281721.8YesNo
    spring-jdbc-5.2.6.RELEASE.jar407.2 kB315285171.8YesNo
    spring-tx-5.2.6.RELEASE.jar314.4 kB288254201.8YesNo
    spring-web-5.2.6.RELEASE.jar1.4 MB994924551.8YesNo
    spring-webmvc-5.2.6.RELEASE.jar955 kB586541281.8YesNo
    spring-data-commons-2.3.0.RELEASE.jar1.2 MB830759421.8YesNo
    spring-data-elasticsearch-4.0.0.RELEASE.jar557.9 kB370319251.8YesNo
    spring-ldap-core-2.3.4.RELEASE.jar378.4 kB340300271.6YesNo
    spring-security-config-5.2.6.RELEASE.jar862.2 kB382309351.8YesNo
    spring-security-core-5.2.6.RELEASE.jar445.7 kB410334491.8YesNo
    spring-security-jwt-1.0.9.RELEASE.jar37.2 kB412641.6YesNo
    spring-security-web-5.2.6.RELEASE.jar568 kB470401521.8YesNo
    spring-security-kerberos-core-1.0.1.RELEASE.jar20.6 kB231521.6YesNo
    spring-security-kerberos-web-1.0.1.RELEASE.jar7.1 kB11311.6YesNo
    telegrambots-6.3.0.jar58.2 kB442871.8YesNo
    telegrambots-meta-6.3.0.jar982.2 kB573510521.8YesNo
    sqlite-jdbc-3.34.0.jar7.3 MB16010471.8YesNo
    snakeyaml-1.17.jar273.6 kB242206191.5YesNo
    zt-exec-1.12.jar57.1 kB625261.6YesNo
    zt-process-killer-1.10.jar32.6 kB362931.7YesNo
    zt-zip-1.15.jar111.7 kB968651.6YesNo
    expression-3.143.0-SNAPSHOT.jar24.6 kB362131.8YesNo
    inject-3.143.0-SNAPSHOT.jar5.4 kB16311.8YesNo
    standard-annotations-3.143.0-SNAPSHOT.jar10.4 kB311531.8NoNo
    webkit-annotations-3.143.0-SNAPSHOT.jar4.9 kB19511.8NoNo
    webkit-base-3.143.0-SNAPSHOT.jar11.6 kB20621.8YesNo
    webkit-beans-3.143.0-SNAPSHOT.jar11.9 kB18411.8YesNo
    webkit-rpc-3.143.0-SNAPSHOT.jar17.1 kB301241.8YesNo
    bpmn-beans-3.143.0-SNAPSHOT.jar16.3 kB351741.8YesNo
    app-info-3.143.0-SNAPSHOT.jar4.8 kB18211.8YesNo
    core-runtime-api-3.143.0-SNAPSHOT.jar7 kB20511.8YesNo
    error-handling-api-3.143.0-SNAPSHOT.jar10.7 kB27821.8YesNo
    metrics-3.143.0-SNAPSHOT.jar5.1 kB16211.8YesNo
    database-api-3.143.0-SNAPSHOT.jar46.1 kB6739121.8YesNo
    database-beans-3.143.0-SNAPSHOT.jar46.6 kB543381.8YesNo
    database-impl-3.143.0-SNAPSHOT.jar69 kB6333131.8YesNo
    jndi-beans-3.143.0-SNAPSHOT.jar7.6 kB24521.8YesNo
    jndi-inject-3.143.0-SNAPSHOT.jar5.3 kB16111.8YesNo
    resources-api-3.143.0-SNAPSHOT.jar8.5 kB22811.8YesNo
    security-adapter-3.143.0-SNAPSHOT.jar5.5 kB17311.8YesNo
    security-api-3.143.0-SNAPSHOT.jar273.2 kB255116211.8YesNo
    security-beans-3.143.0-SNAPSHOT.jar5.2 kB17311.8YesNo
    security-db-synchronization-api-3.143.0-SNAPSHOT.jar18.7 kB311241.8YesNo
    security-db-synchronization-ldap-impl-3.143.0-SNAPSHOT.jar23.2 kB351541.8YesNo
    security-esia-3.143.0-SNAPSHOT.jar5.7 kB18321.8YesNo
    backend-3.143.0-SNAPSHOT.jar793.9 kB8126241241.8YesNo
    converters-3.143.0-SNAPSHOT.jar87.8 kB6935201.8YesNo
    frontend-3.143.0-SNAPSHOT.jar3.1 kB800-NoNo
    resources-3.143.0-SNAPSHOT.jar1.3 MB298624-YesNo
    core-api-3.143.0-SNAPSHOT.jar110.1 kB14611319-YesNo
    platform-api-3.143.0-SNAPSHOT.jar144.2 kB16513021-YesNo
    bpmn-core-api-3.143.0-SNAPSHOT.jar12.5 kB34145-YesNo
    webbpm-process-api-3.143.0-SNAPSHOT.jar19.4 kB41197-YesNo
    database-api-3.143.0-SNAPSHOT.jar15.9 kB34183-YesNo
    database-models-3.143.0-SNAPSHOT.jar5.1 kB1621-YesNo
    serialized-page-api-3.143.0-SNAPSHOT.jar67.1 kB714610-YesNo
    serialized-object-api-3.143.0-SNAPSHOT.jar44.7 kB59386-YesNo
    compile-api-3.143.0-SNAPSHOT.jar9.3 kB2591-YesNo
    metadata-models-3.143.0-SNAPSHOT.jar28.3 kB27141-YesNo
    aggregating-profiler-1.4.7.jar28.6 kB292221.8YesNo
    client-2.24.1.jar60 kB5836111.8YesNo
    gar-client-2.6.0.jar48.3 kB472771.8YesNo
    gar-core-2.6.0.jar67 kB836841.8YesNo
    xercesImpl-2.11.0.jar1.4 MB1035952401.3NoNo
    xml-apis-1.4.01.jar220.5 kB391346291.1NoNo
    TotalSizeEntriesClassesPackagesJava VersionDebug InformationSealed
    229130 MB855257208638521.82151
    compile: 216compile: 117.7 MBcompile: 80489compile: 67611compile: 3551-compile: 204compile: 1
    runtime: 4runtime: 1.7 MBruntime: 1553runtime: 1394runtime: 77-runtime: 2-
    provided: 9provided: 10.6 MBprovided: 3483provided: 3081provided: 224-provided: 9-
    +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/dependency-info.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/dependency-info.html new file mode 100644 index 0000000..b79c577 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/dependency-info.html @@ -0,0 +1,73 @@ + + + + + + + + Web-BPM Docs – Dependency Information + + + + + + +
    +
    + + + +
    +
    +
    +

    Dependency Information

    +

    Apache Maven

    +
    <dependency>
    +  <groupId>ru.cg.webbpm.packages.base</groupId>
    +  <artifactId>resources</artifactId>
    +  <version>3.143.0-SNAPSHOT</version>
    +</dependency>
    +

    Apache Buildr

    +
    'ru.cg.webbpm.packages.base:resources:jar:3.143.0-SNAPSHOT'
    +

    Apache Ivy

    +
    <dependency org="ru.cg.webbpm.packages.base" name="resources" rev="3.143.0-SNAPSHOT">
    +  <artifact name="resources" type="jar" />
    +</dependency>
    +

    Groovy Grape

    +
    @Grapes(
    +@Grab(group='ru.cg.webbpm.packages.base', module='resources', version='3.143.0-SNAPSHOT')
    +)
    +

    Gradle/Grails

    +
    compile 'ru.cg.webbpm.packages.base:resources:3.143.0-SNAPSHOT'
    +

    Scala SBT

    +
    libraryDependencies += "ru.cg.webbpm.packages.base" % "resources" % "3.143.0-SNAPSHOT"
    +

    Leiningen

    +
    [ru.cg.webbpm.packages.base/resources "3.143.0-SNAPSHOT"]
    +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/dependency-management.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/dependency-management.html new file mode 100644 index 0000000..17b9ab1 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/dependency-management.html @@ -0,0 +1,1167 @@ + + + + + + + + Web-BPM Docs – Project Dependency Management + + + + + + +
    +
    + + + +
    +
    +
    +

    Project Dependency Management

    +

    compile

    +

    The following is a list of compile dependencies in the DependencyManagement of this project. These dependencies can be included in the submodules to compile and run the submodule:

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    GroupIdArtifactIdVersionTypeLicense
    OAuth2EsiaOAuth2Esia1.1jar-
    com.fasterxml.jackson.corejackson-annotations2.12.4jarThe Apache Software License, Version 2.0
    com.fasterxml.jackson.corejackson-core2.12.4jarThe Apache Software License, Version 2.0
    com.fasterxml.jackson.corejackson-databind2.12.4jarThe Apache Software License, Version 2.0
    com.fasterxml.jackson.datatypejackson-datatype-jsr3102.12.4jarThe Apache Software License, Version 2.0
    com.github.spullara.mustache.javacompiler0.9.10jarApache License 2.0
    com.google.code.gsongson2.3.1jarThe Apache Software License, Version 2.0
    com.google.guavaguava23.4-jrejarThe Apache Software License, Version 2.0
    com.h2databaseh21.4.199jarMPL 2.0 or EPL 1.0
    com.jcabijcabi-aether0.10.1jarBSD
    com.sun.mailjavax.mail1.5.1jarCDDL/GPLv2+CE
    com.sun.xml.bindjaxb-impl2.3.3jarEclipse Distribution License - v 1.0
    commons-codeccommons-codec1.6jarThe Apache Software License, Version 2.0
    commons-configurationcommons-configuration1.10jarThe Apache Software License, Version 2.0
    commons-iocommons-io2.4jarThe Apache Software License, Version 2.0
    commons-langcommons-lang2.6jarThe Apache Software License, Version 2.0
    io.jsonwebtokenjjwt-api0.10.5jarApache License, Version 2.0
    io.jsonwebtokenjjwt-jackson0.10.5jarApache License, Version 2.0
    javax.activationactivation1.1.1jarCOMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
    javax.annotationjavax.annotation-api1.3.2jarCDDL + GPLv2 with classpath exception
    javax.mailmail1.4.7jarCDDL, GPLv2+CE
    joda-timejoda-time2.9.2jarApache 2
    mysqlmysql-connector-java8.0.25jarThe GNU General Public License, v2 with FOSS exception
    net.javacrumbs.shedlockshedlock-provider-jdbc-template0.18.2jarThe Apache Software License, Version 2.0
    net.javacrumbs.shedlockshedlock-spring0.18.2jarThe Apache Software License, Version 2.0
    org.apache.commonscommons-csv1.9.0jarApache License, Version 2.0
    org.apache.commonscommons-exec1.3jarApache License, Version 2.0
    org.apache.derbyderby10.11.1.1jarApache 2
    org.apache.mavenmaven-aether-provider3.3.9jarApache License, Version 2.0
    org.apache.poipoi4.1.2jarApache License, Version 2.0
    org.apache.poipoi-ooxml4.1.2jarApache License, Version 2.0
    org.apache.santuarioxmlsec1.5.7jarThe Apache Software License, Version 2.0
    org.apache.tikatika-core1.7jarThe Apache Software License, Version 2.0
    org.assertjassertj-core3.13.0jarApache License, Version 2.0
    org.bouncycastlebcpkix-jdk15on1.60jarBouncy Castle Licence
    org.bouncycastlebcprov-jdk15on1.60jarBouncy Castle Licence
    org.eclipse.aetheraether-api1.1.0jarEclipse Public License, Version 1.0
    org.eclipse.aetheraether-connector-basic1.1.0jarEclipse Public License, Version 1.0
    org.eclipse.aetheraether-transport-file1.1.0jarEclipse Public License, Version 1.0
    org.eclipse.aetheraether-transport-http1.1.0jarEclipse Public License, Version 1.0
    org.eclipse.jdt.core.compilerecj4.4.2jarEclipse Public License v1.0
    org.firebirdsql.jdbcjaybird4.0.3.java8jarGNU Lesser General Public License, Modified BSD (3-clause) License
    org.freemarkerfreemarker2.3.26-incubatingjarApache License, Version 2.0
    org.glassfishjavax.json1.0.4jarDual license consisting of the CDDL v1.1 and GPL v2
    org.hsqldbhsqldb2.5.2jarHSQLDB License, a BSD open source license
    org.jbossjboss-dmr1.5.0.FinaljarGNU Lesser General Public License v2.1 only, Apache License 2.0
    org.jboss.loggingjboss-logging3.3.1.FinaljarApache License, version 2.0
    org.jboss.logmanagerjboss-logmanager2.0.9.FinaljarApache License 2.0
    org.jboss.modulesjboss-modules1.5.4.Finaljarasl
    org.jboss.remotingjboss-remoting5.0.5.FinaljarApache License 2.0
    org.jboss.threadsjboss-threads2.3.1.FinaljarApache License 2.0
    org.jboss.xnioxnio-api3.6.2.FinaljarApache License 2.0
    org.jboss.xnioxnio-nio3.6.2.FinaljarApache License 2.0
    org.jbpmjbpm-bpmn27.58.0.Final-Micord-3jar-
    org.jbpmjbpm-flow7.58.0.Final-Micord-3jar-
    org.jooqjooq3.14.15jarApache License, Version 2.0
    org.jooqjooq-codegen3.14.15jarApache License, Version 2.0
    org.jooqjooq-meta3.14.15jarApache License, Version 2.0
    org.jooqjooq-meta-extensions3.14.15jarApache License, Version 2.0
    org.jooqjooq-meta-extensions-liquibase3.14.15jarApache License, Version 2.0
    org.liquibaseliquibase-core3.10.3jarApache License, Version 2.0
    org.mariadb.jdbcmariadb-java-client2.7.3jarLGPL-2.1
    org.mnode.ical4jical4j3.0.5jariCal4j - License
    org.ocpsoft.prettytimeprettytime4.0.0.FinaljarApache License
    org.postgresqlpostgresql42.5.2jarBSD-2-Clause
    org.slf4jjcl-over-slf4j1.7.10jarMIT License
    org.slf4jjul-to-slf4j1.7.10jarMIT License
    org.slf4jslf4j-api1.7.10jarMIT License
    org.slf4jslf4j-log4j121.7.10jarMIT License
    org.springframeworkspring-aop5.2.6.RELEASEjarApache License, Version 2.0
    org.springframeworkspring-aspects5.2.6.RELEASEjarApache License, Version 2.0
    org.springframeworkspring-beans5.2.6.RELEASEjarApache License, Version 2.0
    org.springframeworkspring-context5.2.6.RELEASEjarApache License, Version 2.0
    org.springframeworkspring-context-indexer5.2.6.RELEASEjarApache License, Version 2.0
    org.springframeworkspring-context-support5.2.6.RELEASEjarApache License, Version 2.0
    org.springframeworkspring-core5.2.6.RELEASEjarApache License, Version 2.0
    org.springframeworkspring-expression5.2.6.RELEASEjarApache License, Version 2.0
    org.springframeworkspring-instrument5.2.6.RELEASEjarApache License, Version 2.0
    org.springframeworkspring-jcl5.2.6.RELEASEjarApache License, Version 2.0
    org.springframeworkspring-jdbc5.2.6.RELEASEjarApache License, Version 2.0
    org.springframeworkspring-jms5.2.6.RELEASEjarApache License, Version 2.0
    org.springframeworkspring-messaging5.2.6.RELEASEjarApache License, Version 2.0
    org.springframeworkspring-orm5.2.6.RELEASEjarApache License, Version 2.0
    org.springframeworkspring-oxm5.2.6.RELEASEjarApache License, Version 2.0
    org.springframeworkspring-test5.2.6.RELEASEjarApache License, Version 2.0
    org.springframeworkspring-tx5.2.6.RELEASEjarApache License, Version 2.0
    org.springframeworkspring-web5.2.6.RELEASEjarApache License, Version 2.0
    org.springframeworkspring-webflux5.2.6.RELEASEjarApache License, Version 2.0
    org.springframeworkspring-webmvc5.2.6.RELEASEjarApache License, Version 2.0
    org.springframeworkspring-websocket5.2.6.RELEASEjarApache License, Version 2.0
    org.springframework.ldapspring-ldap-core2.3.4.RELEASEjarThe Apache Software License, Version 2.0
    org.springframework.securityspring-security-acl5.2.6.RELEASEjarThe Apache Software License, Version 2.0
    org.springframework.securityspring-security-aspects5.2.6.RELEASEjarThe Apache Software License, Version 2.0
    org.springframework.securityspring-security-cas5.2.6.RELEASEjarThe Apache Software License, Version 2.0
    org.springframework.securityspring-security-config5.2.6.RELEASEjarThe Apache Software License, Version 2.0
    org.springframework.securityspring-security-core5.2.6.RELEASEjarThe Apache Software License, Version 2.0
    org.springframework.securityspring-security-crypto5.2.6.RELEASEjarThe Apache Software License, Version 2.0
    org.springframework.securityspring-security-data5.2.6.RELEASEjarThe Apache Software License, Version 2.0
    org.springframework.securityspring-security-jwt1.0.9.RELEASEjarApache 2.0
    org.springframework.securityspring-security-ldap5.2.6.RELEASEjarThe Apache Software License, Version 2.0
    org.springframework.securityspring-security-messaging5.2.6.RELEASEjarThe Apache Software License, Version 2.0
    org.springframework.securityspring-security-oauth2-client5.2.6.RELEASEjarThe Apache Software License, Version 2.0
    org.springframework.securityspring-security-oauth2-core5.2.6.RELEASEjarThe Apache Software License, Version 2.0
    org.springframework.securityspring-security-oauth2-jose5.2.6.RELEASEjarThe Apache Software License, Version 2.0
    org.springframework.securityspring-security-oauth2-resource-server5.2.6.RELEASEjarThe Apache Software License, Version 2.0
    org.springframework.securityspring-security-openid5.2.6.RELEASEjarThe Apache Software License, Version 2.0
    org.springframework.securityspring-security-remoting5.2.6.RELEASEjarThe Apache Software License, Version 2.0
    org.springframework.securityspring-security-rsocket5.2.6.RELEASEjarThe Apache Software License, Version 2.0
    org.springframework.securityspring-security-saml2-service-provider5.2.6.RELEASEjarThe Apache Software License, Version 2.0
    org.springframework.securityspring-security-taglibs5.2.6.RELEASEjarThe Apache Software License, Version 2.0
    org.springframework.securityspring-security-test5.2.6.RELEASEjarThe Apache Software License, Version 2.0
    org.springframework.securityspring-security-web5.2.6.RELEASEjarThe Apache Software License, Version 2.0
    org.springframework.security.kerberosspring-security-kerberos-core1.0.1.RELEASEjarThe Apache Software License, Version 2.0
    org.springframework.security.kerberosspring-security-kerberos-web1.0.1.RELEASEjarThe Apache Software License, Version 2.0
    org.telegramtelegrambots6.3.0jarMIT License
    org.wildfly.clientwildfly-client-config1.0.1.FinaljarApache License 2.0
    org.wildfly.commonwildfly-common1.2.0.FinaljarApache License 2.0
    org.wildfly.corewildfly-controller-client4.0.0.FinaljarGNU Lesser General Public License v2.1 or later, Apache License 2.0
    org.wildfly.corewildfly-launcher4.0.0.FinaljarGNU Lesser General Public License v2.1 or later, Apache License 2.0
    org.wildfly.corewildfly-protocol4.0.0.FinaljarGNU Lesser General Public License v2.1 or later, Apache License 2.0
    org.wildfly.securitywildfly-elytron1.2.2.FinaljarApache License 2.0
    org.xerialsqlite-jdbc3.34.0jarThe Apache Software License, Version 2.0
    org.zeroturnaroundzt-zip1.15jarThe Apache Software License, Version 2.0
    ru.cg.webbpm.modulesstandard-annotations3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.moduleswebkit-beans3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.moduleswebkit-rpc3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.modules.bpmnbpmn-beans3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.modules.coreerror-handling-api3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.modules.coremetrics3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.modules.databasedatabase-test3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.modules.jndijndi-beans3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.modules.jndijndi-inject3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.modules.securitysecurity-adapter3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.modules.securitysecurity-api3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.modules.securitysecurity-db-synchronization-api3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.modules.securitysecurity-db-synchronization-ldap-impl3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.modules.securitysecurity-esia3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.packages.basebackend3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.packages.baseconverters3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.packages.basefrontend3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.studio.basecore-api3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.studio.subsystems.bpmnwebbpm-process-api3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.studio.subsystems.databasedatabase-api3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.studio.subsystems.page-designerserialized-page-api3.143.0-SNAPSHOTjar-
    ru.micord.fiasclient2.24.1jar-
    ru.micord.gargar-client2.6.0jar-
    +

    runtime

    +

    The following is a list of runtime dependencies in the DependencyManagement of this project. These dependencies can be included in the submodules to run the submodule:

    + + + + + + + + + + + + + + + + + + +
    GroupIdArtifactIdVersionTypeLicense
    io.jsonwebtokenjjwt-impl0.10.5jarApache License, Version 2.0
    xercesxercesImpl2.11.0jarThe Apache Software License, Version 2.0
    +

    test

    +

    The following is a list of test dependencies in the DependencyManagement of this project. These dependencies can be included in the submodules to compile and run unit tests for the submodule:

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    GroupIdArtifactIdVersionTypeLicense
    org.apache.commonscommons-email1.5jarApache License, Version 2.0
    org.hamcresthamcrest2.2jarBSD License 3
    org.junit.jupiterjunit-jupiter5.8.1jarEclipse Public License v2.0
    org.junit.platformjunit-platform-suite-engine1.8.1jarEclipse Public License v2.0
    org.mockitomockito-core3.8.0jarThe MIT License
    org.mockitomockito-inline3.8.0jarThe MIT License
    org.mockitomockito-junit-jupiter2.23.4jarThe MIT License
    org.powermockpowermock-api-mockito-common1.7.4jarThe Apache Software License, Version 2.0
    org.powermockpowermock-api-mockito22.0.9jarThe Apache Software License, Version 2.0
    org.powermockpowermock-module-junit42.0.9jarThe Apache Software License, Version 2.0
    org.springframeworkspring-mock2.0.8jarThe Apache Software License, Version 2.0
    +

    provided

    +

    The following is a list of provided dependencies in the DependencyManagement of this project. These dependencies can be included in the submodules to compile the submodule, but should be provided by default when using the library:

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    GroupIdArtifactIdVersionTypeLicense
    jakarta.xml.bindjakarta.xml.bind-api2.3.3jarEclipse Distribution License - v 1.0
    javaxjavaee-api7.0jarCDDL + GPLv2 with classpath exception
    javax.servletjavax.servlet-api3.1.0jarCDDL + GPLv2 with classpath exception
    ru.cg.webbpm.modules.bpmnbpmn-deploy3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.modules.bpmnbpmn-variable-condition-adapter3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.modules.bpmnbpmn-workflow-api3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.modules.bpmnbpmn-workflow-jbpm3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.modules.bpmnbpmn-workflow-jbpm-api3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.modules.corecore-runtime-api3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.modules.databasedatabase-api3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.modules.databasedatabase-impl3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.modules.reportingreporting-api3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.modules.reportingreporting-runtime-api3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.modules.reportingreporting-runtime-impl3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.modules.reporting.reporting-jasperreporting-jasper-impl3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.modules.reporting.reporting-jasperreporting-jasper-runtime-impl3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.modules.reporting.reporting-xdocreporting-xdoc-impl3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.modules.reporting.reporting-xdocreporting-xdoc-runtime-impl3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.modules.resourcesresources-api3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.modules.resourcesresources-impl3.143.0-SNAPSHOTjar-
    ru.cg.webbpm.modules.webkitactive-users-tracker3.143.0-SNAPSHOTjar-
    +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/distribution-management.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/distribution-management.html new file mode 100644 index 0000000..b89a907 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/distribution-management.html @@ -0,0 +1,54 @@ + + + + + + + + Web-BPM Docs – Project Distribution Management + + + + + + +
    +
    + + + +
    +
    +
    +

    Overview

    +

    The following is the distribution management information used by this project.

    +

    Repository - micord

    https://repo.micord.ru/repository/packages-releases-local/
    +

    Snapshot Repository - snapshots

    https://repo.micord.ru/repository/packages-snapshots-local/
    +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/fonts/glyphicons-halflings-regular.eot b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/fonts/glyphicons-halflings-regular.eot new file mode 100644 index 0000000..af587a8 Binary files /dev/null and b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/fonts/glyphicons-halflings-regular.eot differ diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/fonts/glyphicons-halflings-regular.svg b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/fonts/glyphicons-halflings-regular.svg new file mode 100644 index 0000000..4469488 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/fonts/glyphicons-halflings-regular.svg @@ -0,0 +1,229 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/fonts/glyphicons-halflings-regular.ttf b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/fonts/glyphicons-halflings-regular.ttf new file mode 100644 index 0000000..8681f1e Binary files /dev/null and b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/fonts/glyphicons-halflings-regular.ttf differ diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/fonts/glyphicons-halflings-regular.woff b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/fonts/glyphicons-halflings-regular.woff new file mode 100644 index 0000000..1e69f48 Binary files /dev/null and b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/fonts/glyphicons-halflings-regular.woff differ diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/handlers/EmailHandler.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/handlers/EmailHandler.html new file mode 100644 index 0000000..84be2ea --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/handlers/EmailHandler.html @@ -0,0 +1,105 @@ + + + + + + + + Web-BPM Docs – Назначение + + + + + + +
    +
    + + + +
    +
    +

    Назначение

    +

    Обработчик для отправки письма.

    +

    Свойства

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Наименование Назначение Значение по умолчанию
    smtpConfiguration Конфигурация SMTP-сервиса
    to Поле кому
    copy Поле копия
    hiddenCopy Поле скрытая копия
    subject Тема письма
    body Тело письма
    attachments Список прикрепленных файлов
    +
      + +
    1. В параметры (to, copy, hiddenCopy, subject, body) можно подставить выражение #{variableName}. Вместо данного выражения подставится значение указанное переменной. Например: в теле письма указано “Здравствуйте, #{user}. #{body}”. Созданы и заполнены переменные user=“Петров Дмитрий”, body=“На ваш счёт начислено 1 000 000 руб”. При запуске обработчика тело письма будет заменено на текст “Здравствуйте, Петров Дмитрий. На ваш счёт начислено 1 000 000 руб.”
    2. +
    3. Добавлена возможность выбора dao (стандартного графа - DefaultLoadDao, либо любого кастомного), это позволяет получить выборку нужной информации по письму, использовать полученную информацию в полях письма. Для этого: в параметры (to, copy, hiddenCopy, subject, body) подставляют выражение в виде @{table.column}, где table.column сущность и колонка из графа. Писем отправится столько, сколько будет получено в результате запроса строк. Каждой строке соответствует 1 письмо.
    4. +
    +

    Конфигурация SMTP-сервиса исходящей почты

    +

    Данная конфигурация задаётся в файле resources\src\main\resources\config\jndi-resources.xml

    +

    Для добавления новой конфигурации добавьте в тег jndi-resources строку вида:

    + +
    +
    <jndi-resource name="java:comp/env/webbpm/testResource" type="bpmn.handler.email_handler.SmtpConfiguration">
    +    {"host":"mail.cg.ru","port":587,"login":"iteco","password":"Qazar@375","from":"iteco@cg.ru","senderName":"Webbpm","isSecured":false}
    +</jndi-resource>
    +
    +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/handlers/JiraCreateIssueHandler.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/handlers/JiraCreateIssueHandler.html new file mode 100644 index 0000000..62fbf76 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/handlers/JiraCreateIssueHandler.html @@ -0,0 +1,120 @@ + + + + + + + + Web-BPM Docs – Назначение + + + + + + +
    +
    + + + +
    +
    +

    Назначение

    +

    Обработчик для создания задачи в Jira.

    +

    Свойства, задаваемые аналитиком

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Наименование Назначение Значение по умолчанию
    projectKey Код проекта
    summary Название
    description Описание
    issueType Тип задачи
    assignee Исполнитель
    reporter Автор
    createdIssueId Переменная, в которую запишется идентификатор созданной задачи
    createdIssueKey Переменная, в которую запишется код созданной задачи
    +

    В параметры (summary, description, assignee, reporter) можно подставить выражение #{variableName}. Вместо данного выражения подставится значение указанное переменной.

    +

    Свойства, задаваемые на сервере приложений

    + + + + + + + + + + + + + + + + + + + + + + +
    Наименование Назначение Значение по умолчанию
    webbpm.jira.url Jira REST API URL. Например - https://jira.micord.ru/rest/api/2/issue/
    webbpm.jira.username
    webbpm.jira.password
    +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/handlers/RESTHandler.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/handlers/RESTHandler.html new file mode 100644 index 0000000..d135870 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/handlers/RESTHandler.html @@ -0,0 +1,100 @@ + + + + + + + + Web-BPM Docs – Назначение + + + + + + +
    +
    + + + +
    +
    +

    Назначение

    +

    Обработчик для отправки REST запроса с помощью JSON.

    +

    Свойства

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Наименование Назначение Значение по умолчанию
    Authentication Type Тип аутентификации: NONE/BASIC
    URL URL запроса.
    Method Метод. Один из списка: GET, POST, PUT, DELETE
    Request body type Один из списка: OBJECT, ARRAY, MANUAL.
    OBJECT - в данном режиме можно заполнить массив значений в формате ключ/значение. Например {"A": 1, "B": 2, "C": 3}
    ARRAY - в данном режиме можно заполнить массив значений. Например {"A", "B", "C"}
    MANUAL - в данном режиме можно ввести произвольный JSON.
    Headers Заголовки запроса
    Cookies Cookies запроса.
    Result Результат запроса.
    Sub results Частичный результат. С помощью данного параметра можно сохранить из ответа значение параметра, указанное в качестве ключа.
    timeout Таймаут ожидания ответа в секундах
    +

    В параметры (URL, Headers, Cookies, Request body type) можно подставить выражение #{variableName}. Вместо данного выражения подставится значение указанное переменной.

    +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/handlers/SetVariableHandler.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/handlers/SetVariableHandler.html new file mode 100644 index 0000000..91418ab --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/handlers/SetVariableHandler.html @@ -0,0 +1,73 @@ + + + + + + + + Web-BPM Docs – SetVariableHandler + + + + + + +
    +
    + + + +
    +
    +

    SetVariableHandler

    +

    Назначение

    +

    Задание значения(ий) переменной(ым) процесса.

    +

    Свойства

    + + + + + + + + + + + + + + +
    Наименование Тип свойства Назначение
    mapping VariableWithValue[] список переменных процесса
    +

    Интерфейс пользователя

    +

    Значение переменной не пусто

    +

    non empty value

    +

    Значение не задано

    +

    null value

    +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/handlers/SqlAttachmentsEmailHandler.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/handlers/SqlAttachmentsEmailHandler.html new file mode 100644 index 0000000..fa67fc6 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/handlers/SqlAttachmentsEmailHandler.html @@ -0,0 +1,75 @@ + + + + + + + + Web-BPM Docs – Назначение + + + + + + +
    +
    + + + +
    +
    +

    Назначение

    +

    Является наследником EmailHandler-а, с дополнительным функционалом: прикреплять файлы можно при помощи подгрузки из базы.

    +

    Свойства

    + + + + + + + + + + + + + + + + + + + + + + +
    Наименование Назначение Значение по умолчанию
    dao DefaultLoadDao (граф сущности)
    fileNameColumn Колонка из графа сущности с именем файла
    fileContentColumn Колонка из графа сущности с содержимым файла
    +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/handlers/Telegram.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/handlers/Telegram.html new file mode 100644 index 0000000..b6b5b11 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/handlers/Telegram.html @@ -0,0 +1,96 @@ + + + + + + + + Web-BPM Docs – Назначение + + + + + + +
    +
    + + + +
    +
    +

    Назначение

    +

    Отправка сообщений в чат Telegram.

    +

    Свойства, задаваемые аналитиком

    + + + + + + + + + + + + + + + + + + +
    Наименование Назначение Значение по умолчанию
    chatId Идентификатор чата
    message Сообщение
    +

    В параметр message можно подставить выражение #{variableName}. Вместо данного выражения подставится значение указанное переменной.

    +

    Свойства, задаваемые на сервере приложений

    + + + + + + + + + + + + + + + + + + + + + + +
    Наименование Назначение Значение по умолчанию
    telegram.bot.token The token is a string, like 110201543:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw, which is required to authorize the bot and send requests to the Bot API. как создать Bot см. тут https://core.telegram.org/bots/features#creating-a-new-bot
    telegram.bot.name The username is a short name, used in search, mentions and t.me links. Usernames are 5-32 characters long and not case sensitive – but may only include Latin characters, numbers, and underscores. Your bot’s username must end in ’bot’, like ‘tetris_bot’ or ‘TetrisBot’.
    +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/handlers/UserAuthorityHandler.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/handlers/UserAuthorityHandler.html new file mode 100644 index 0000000..4974aa0 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/handlers/UserAuthorityHandler.html @@ -0,0 +1,119 @@ + + + + + + + + Web-BPM Docs – Назначение + + + + + + +
    +
    + + + +
    +
    +

    Назначение

    +

    Кастомный обработчик, который выбирается в Web-BPM Task. При выполнении этого обработчика происходит сохранение данных пользователя в переменные процесса, также в булавы переменные процесса могут быть сохранены значения, соответствующие наличию у пользователя тех или иных ролей/групп.

    +

    Свойства

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Наименование Тип свойства Тип значения переменной Назначение
    login BpmnVariable String переменная процесса, в которую будет сохранен логин пользователя
    userFio BpmnVariable String переменная процесса, в которую будет сохранено ФИО пользователя
    firstName BpmnVariable String переменная процесса, в которую будет сохранено имя пользователя
    lastName BpmnVariable String переменная процесса, в которую будет сохранена фамилия пользователя
    middleName BpmnVariable String переменная процесса, в которую будет сохранено отчество пользователя
    orgName BpmnVariable String переменная процесса, в которую будет сохранено наименование организации пользователя
    orgCode BpmnVariable String переменная процесса, в которую будет сохранено код организации пользователя
    userGroups BpmnVariable Collection<String> переменная процесса, в которую будет сохранен список групп пользователя
    userRoles BpmnVariable Collection<String> переменная процесса, в которую будет сохранен список ролей пользователя
    hasRoleVariables Collection<UserHasPropertyVariable> Boolean Тип UserHasPropertyVariable представляет собой объект, в котором есть свойства: variable - переменная процесса, в которую будет сохранено вычисленное булево значение valueForMatching - строка, которая будет использоваться для сравнения. Например, если список ролей/групп пользователя содержит в себе значение из поля ‘valueForMatching’, то в переменную, указанную в поле ‘variable’, будет сохранено true, иначе - false. Используется для проверки наличия ролей (hasRoleVariables) и групп (hasGroupVariables)
    hasGroupVariables Collection<UserHasPropertyVariable> Boolean
    +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/handlers/index.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/handlers/index.html new file mode 100644 index 0000000..f4d6580 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/handlers/index.html @@ -0,0 +1,60 @@ + + + + + + + + Web-BPM Docs – Обработчики + + + + + + +
    +
    + + + +
    +
    +

    Обработчики

    + +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/accessories-text-editor.png b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/accessories-text-editor.png new file mode 100644 index 0000000..abc3366 Binary files /dev/null and b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/accessories-text-editor.png differ diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/add.gif b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/add.gif new file mode 100644 index 0000000..1cb3dbf Binary files /dev/null and b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/add.gif differ diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/apache-maven-project-2.png b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/apache-maven-project-2.png new file mode 100644 index 0000000..a44db6e Binary files /dev/null and b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/apache-maven-project-2.png differ diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/application-certificate.png b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/application-certificate.png new file mode 100644 index 0000000..cc6aff6 Binary files /dev/null and b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/application-certificate.png differ diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/close.gif b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/close.gif new file mode 100644 index 0000000..1c26bbc Binary files /dev/null and b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/close.gif differ diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/contact-new.png b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/contact-new.png new file mode 100644 index 0000000..ebc4316 Binary files /dev/null and b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/contact-new.png differ diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/document-properties.png b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/document-properties.png new file mode 100644 index 0000000..34c2409 Binary files /dev/null and b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/document-properties.png differ diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/drive-harddisk.png b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/drive-harddisk.png new file mode 100644 index 0000000..d7ce475 Binary files /dev/null and b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/drive-harddisk.png differ diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/fix.gif b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/fix.gif new file mode 100644 index 0000000..b7eb3dc Binary files /dev/null and b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/fix.gif differ diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/icon_error_sml.gif b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/icon_error_sml.gif new file mode 100644 index 0000000..12e9a01 Binary files /dev/null and b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/icon_error_sml.gif differ diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/icon_help_sml.gif b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/icon_help_sml.gif new file mode 100644 index 0000000..aaf20e6 Binary files /dev/null and b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/icon_help_sml.gif differ diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/icon_info_sml.gif b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/icon_info_sml.gif new file mode 100644 index 0000000..b776326 Binary files /dev/null and b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/icon_info_sml.gif differ diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/icon_success_sml.gif b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/icon_success_sml.gif new file mode 100644 index 0000000..0a19527 Binary files /dev/null and b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/icon_success_sml.gif differ diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/icon_warning_sml.gif b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/icon_warning_sml.gif new file mode 100644 index 0000000..ac6ad6a Binary files /dev/null and b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/icon_warning_sml.gif differ diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/image-x-generic.png b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/image-x-generic.png new file mode 100644 index 0000000..ab49efb Binary files /dev/null and b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/image-x-generic.png differ diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/internet-web-browser.png b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/internet-web-browser.png new file mode 100644 index 0000000..307d6ac Binary files /dev/null and b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/internet-web-browser.png differ diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/logos/build-by-maven-black.png b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/logos/build-by-maven-black.png new file mode 100644 index 0000000..919fd0f Binary files /dev/null and b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/logos/build-by-maven-black.png differ diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/logos/build-by-maven-white.png b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/logos/build-by-maven-white.png new file mode 100644 index 0000000..7d44c9c Binary files /dev/null and b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/logos/build-by-maven-white.png differ diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/logos/maven-feather.png b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/logos/maven-feather.png new file mode 100644 index 0000000..b5ada83 Binary files /dev/null and b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/logos/maven-feather.png differ diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/network-server.png b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/network-server.png new file mode 100644 index 0000000..1d12e19 Binary files /dev/null and b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/network-server.png differ diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/package-x-generic.png b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/package-x-generic.png new file mode 100644 index 0000000..8b7e9e6 Binary files /dev/null and b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/package-x-generic.png differ diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/profiles/pre-release.png b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/profiles/pre-release.png new file mode 100644 index 0000000..d448e85 Binary files /dev/null and b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/profiles/pre-release.png differ diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/profiles/retired.png b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/profiles/retired.png new file mode 100644 index 0000000..f89f6a2 Binary files /dev/null and b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/profiles/retired.png differ diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/profiles/sandbox.png b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/profiles/sandbox.png new file mode 100644 index 0000000..f88b362 Binary files /dev/null and b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/profiles/sandbox.png differ diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/remove.gif b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/remove.gif new file mode 100644 index 0000000..fc65631 Binary files /dev/null and b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/remove.gif differ diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/rss.png b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/rss.png new file mode 100644 index 0000000..a9850ee Binary files /dev/null and b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/rss.png differ diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/update.gif b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/update.gif new file mode 100644 index 0000000..b2a6d0b Binary files /dev/null and b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/update.gif differ diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/window-new.png b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/window-new.png new file mode 100644 index 0000000..0e12ef9 Binary files /dev/null and b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/images/window-new.png differ diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/img/glyphicons-halflings-white.png b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/img/glyphicons-halflings-white.png new file mode 100644 index 0000000..3bf6484 Binary files /dev/null and b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/img/glyphicons-halflings-white.png differ diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/img/glyphicons-halflings.png b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/img/glyphicons-halflings.png new file mode 100644 index 0000000..a996999 Binary files /dev/null and b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/img/glyphicons-halflings.png differ diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/index.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/index.html new file mode 100644 index 0000000..286d602 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/index.html @@ -0,0 +1,52 @@ + + + + + + + + Web-BPM Docs – About + + + + + + +
    +
    + + + +
    +
    +
    +

    About resources

    +

    There is currently no description associated with this project.

    +
    +
    +
    +
    +
    +
    +

    © 2023 +Micord +

    +
    +

    Built by Maven +

    +
    +
    + + diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/js/apache-maven-fluido-1.9.min.js b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/js/apache-maven-fluido-1.9.min.js new file mode 100644 index 0000000..1324fb4 --- /dev/null +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/js/apache-maven-fluido-1.9.min.js @@ -0,0 +1,25 @@ +/*! + * jQuery JavaScript Library v1.11.2 + * http://jquery.com/ + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * + * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2014-12-17T15:27Z + */ +(function(b,a){if(typeof module==="object"&&typeof module.exports==="object"){module.exports=b.document?a(b,true):function(c){if(!c.document){throw new Error("jQuery requires a window with a document")}return a(c)}}else{a(b)}}(typeof window!=="undefined"?window:this,function(a5,av){var aP=[];var P=aP.slice;var az=aP.concat;var x=aP.push;var bU=aP.indexOf;var ac={};var y=ac.toString;var K=ac.hasOwnProperty;var D={};var ai="1.11.2",bI=function(e,i){return new bI.fn.init(e,i)},E=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,bS=/^-ms-/,aW=/-([\da-z])/gi,O=function(e,i){return i.toUpperCase()};bI.fn=bI.prototype={jquery:ai,constructor:bI,selector:"",length:0,toArray:function(){return P.call(this)},get:function(e){return e!=null?(e<0?this[e+this.length]:this[e]):P.call(this)},pushStack:function(e){var i=bI.merge(this.constructor(),e);i.prevObject=this;i.context=this.context;return i},each:function(i,e){return bI.each(this,i,e)},map:function(e){return this.pushStack(bI.map(this,function(b7,b6){return e.call(b7,b6,b7)}))},slice:function(){return this.pushStack(P.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(b7){var e=this.length,b6=+b7+(b7<0?e:0);return this.pushStack(b6>=0&&b6=0},isEmptyObject:function(i){var e;for(e in i){return false}return true},isPlainObject:function(b7){var i;if(!b7||bI.type(b7)!=="object"||b7.nodeType||bI.isWindow(b7)){return false}try{if(b7.constructor&&!K.call(b7,"constructor")&&!K.call(b7.constructor.prototype,"isPrototypeOf")){return false}}catch(b6){return false}if(D.ownLast){for(i in b7){return K.call(b7,i)}}for(i in b7){}return i===undefined||K.call(b7,i)},type:function(e){if(e==null){return e+""}return typeof e==="object"||typeof e==="function"?ac[y.call(e)]||"object":typeof e},globalEval:function(e){if(e&&bI.trim(e)){(a5.execScript||function(i){a5["eval"].call(a5,i)})(e)}},camelCase:function(e){return e.replace(bS,"ms-").replace(aW,O)},nodeName:function(i,e){return i.nodeName&&i.nodeName.toLowerCase()===e.toLowerCase()},each:function(ca,cb,b6){var b9,b7=0,b8=ca.length,e=ad(ca);if(b6){if(e){for(;b70&&(i-1) in b6}var m= +/*! + * Sizzle CSS Selector Engine v2.2.0-pre + * http://sizzlejs.com/ + * + * Copyright 2008, 2014 jQuery Foundation, Inc. and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2014-12-16 + */ +(function(de){var cy,dh,cn,cH,cK,ci,cW,dg,dm,cI,cX,cZ,cC,co,c8,c3,df,ce,cF,da="sizzle"+1*new Date(),cJ=de.document,di=0,c4=0,b9=cA(),c9=cA(),cG=cA(),cE=function(i,e){if(i===e){cX=true}return 0},cQ=1<<31,cO=({}).hasOwnProperty,dc=[],dd=dc.pop,cM=dc.push,b7=dc.push,cm=dc.slice,cd=function(dq,dp){var dn=0,e=dq.length;for(;dn+~]|"+cp+")"+cp+"*"),ct=new RegExp("="+cp+"*([^\\]'\"]*?)"+cp+"*\\]","g"),cS=new RegExp(ck),cU=new RegExp("^"+cL+"$"),c2={ID:new RegExp("^#("+b6+")"),CLASS:new RegExp("^\\.("+b6+")"),TAG:new RegExp("^("+b6.replace("w","w*")+")"),ATTR:new RegExp("^"+c6),PSEUDO:new RegExp("^"+ck),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+cp+"*(even|odd|(([+-]|)(\\d*)n|)"+cp+"*(?:([+-]|)"+cp+"*(\\d+)|))"+cp+"*\\)|)","i"),bool:new RegExp("^(?:"+b8+")$","i"),needsContext:new RegExp("^"+cp+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+cp+"*((?:-\\d)?\\d*)"+cp+"*\\)|)(?=[^-]|$)","i")},cc=/^(?:input|select|textarea|button)$/i,cl=/^h\d$/i,cP=/^[^{]+\{\s*\[native \w/,cR=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,c1=/[+~]/,cN=/'|\\/g,cs=new RegExp("\\\\([\\da-f]{1,6}"+cp+"?|("+cp+")|.)","ig"),c5=function(e,dp,i){var dn="0x"+dp-65536;return dn!==dn||i?dp:dn<0?String.fromCharCode(dn+65536):String.fromCharCode(dn>>10|55296,dn&1023|56320)},dl=function(){cZ()};try{b7.apply((dc=cm.call(cJ.childNodes)),cJ.childNodes);dc[cJ.childNodes.length].nodeType}catch(cD){b7={apply:dc.length?function(i,e){cM.apply(i,cm.call(e))}:function(dq,dp){var e=dq.length,dn=0;while((dq[e++]=dp[dn++])){}dq.length=e-1}}}function cw(dv,dn,dz,dB){var dA,ds,dt,dx,dy,dr,dq,e,dp,dw;if((dn?dn.ownerDocument||dn:cJ)!==cC){cZ(dn)}dn=dn||cC;dz=dz||[];dx=dn.nodeType;if(typeof dv!=="string"||!dv||dx!==1&&dx!==9&&dx!==11){return dz}if(!dB&&c8){if(dx!==11&&(dA=cR.exec(dv))){if((dt=dA[1])){if(dx===9){ds=dn.getElementById(dt);if(ds&&ds.parentNode){if(ds.id===dt){dz.push(ds);return dz}}else{return dz}}else{if(dn.ownerDocument&&(ds=dn.ownerDocument.getElementById(dt))&&cF(dn,ds)&&ds.id===dt){dz.push(ds);return dz}}}else{if(dA[2]){b7.apply(dz,dn.getElementsByTagName(dv));return dz}else{if((dt=dA[3])&&dh.getElementsByClassName){b7.apply(dz,dn.getElementsByClassName(dt));return dz}}}}if(dh.qsa&&(!c3||!c3.test(dv))){e=dq=da;dp=dn;dw=dx!==1&&dv;if(dx===1&&dn.nodeName.toLowerCase()!=="object"){dr=ci(dv);if((dq=dn.getAttribute("id"))){e=dq.replace(cN,"\\$&")}else{dn.setAttribute("id",e)}e="[id='"+e+"'] ";dy=dr.length;while(dy--){dr[dy]=e+ch(dr[dy])}dp=c1.test(dv)&&cT(dn.parentNode)||dn;dw=dr.join(",")}if(dw){try{b7.apply(dz,dp.querySelectorAll(dw));return dz}catch(du){}finally{if(!dq){dn.removeAttribute("id")}}}}}return dg(dv.replace(cr,"$1"),dn,dz,dB)}function cA(){var i=[];function e(dn,dp){if(i.push(dn+" ")>cn.cacheLength){delete e[i.shift()]}return(e[dn+" "]=dp)}return e}function cj(e){e[da]=true;return e}function cf(i){var dp=cC.createElement("div");try{return !!i(dp)}catch(dn){return false}finally{if(dp.parentNode){dp.parentNode.removeChild(dp)}dp=null}}function dj(dn,dq){var e=dn.split("|"),dp=dn.length;while(dp--){cn.attrHandle[e[dp]]=dq}}function ca(i,e){var dp=e&&i,dn=dp&&i.nodeType===1&&e.nodeType===1&&(~e.sourceIndex||cQ)-(~i.sourceIndex||cQ);if(dn){return dn}if(dp){while((dp=dp.nextSibling)){if(dp===e){return -1}}}return i?1:-1}function cx(e){return function(dn){var i=dn.nodeName.toLowerCase();return i==="input"&&dn.type===e}}function cb(e){return function(dn){var i=dn.nodeName.toLowerCase();return(i==="input"||i==="button")&&dn.type===e}}function c7(e){return cj(function(i){i=+i;return cj(function(dn,ds){var dq,dp=e([],dn.length,i),dr=dp.length;while(dr--){if(dn[(dq=dp[dr])]){dn[dq]=!(ds[dq]=dn[dq])}}})})}function cT(e){return e&&typeof e.getElementsByTagName!=="undefined"&&e}dh=cw.support={};cK=cw.isXML=function(e){var i=e&&(e.ownerDocument||e).documentElement;return i?i.nodeName!=="HTML":false};cZ=cw.setDocument=function(dn){var e,i,dp=dn?dn.ownerDocument||dn:cJ;if(dp===cC||dp.nodeType!==9||!dp.documentElement){return cC}cC=dp;co=dp.documentElement;i=dp.defaultView;if(i&&i!==i.top){if(i.addEventListener){i.addEventListener("unload",dl,false)}else{if(i.attachEvent){i.attachEvent("onunload",dl)}}}c8=!cK(dp);dh.attributes=cf(function(dq){dq.className="i";return !dq.getAttribute("className")});dh.getElementsByTagName=cf(function(dq){dq.appendChild(dp.createComment(""));return !dq.getElementsByTagName("*").length});dh.getElementsByClassName=cP.test(dp.getElementsByClassName);dh.getById=cf(function(dq){co.appendChild(dq).id=da;return !dp.getElementsByName||!dp.getElementsByName(da).length});if(dh.getById){cn.find.ID=function(ds,dr){if(typeof dr.getElementById!=="undefined"&&c8){var dq=dr.getElementById(ds);return dq&&dq.parentNode?[dq]:[]}};cn.filter.ID=function(dr){var dq=dr.replace(cs,c5);return function(ds){return ds.getAttribute("id")===dq}}}else{delete cn.find.ID;cn.filter.ID=function(dr){var dq=dr.replace(cs,c5);return function(dt){var ds=typeof dt.getAttributeNode!=="undefined"&&dt.getAttributeNode("id");return ds&&ds.value===dq}}}cn.find.TAG=dh.getElementsByTagName?function(dq,dr){if(typeof dr.getElementsByTagName!=="undefined"){return dr.getElementsByTagName(dq)}else{if(dh.qsa){return dr.querySelectorAll(dq)}}}:function(dq,du){var dv,dt=[],ds=0,dr=du.getElementsByTagName(dq);if(dq==="*"){while((dv=dr[ds++])){if(dv.nodeType===1){dt.push(dv)}}return dt}return dr};cn.find.CLASS=dh.getElementsByClassName&&function(dr,dq){if(c8){return dq.getElementsByClassName(dr)}};df=[];c3=[];if((dh.qsa=cP.test(dp.querySelectorAll))){cf(function(dq){co.appendChild(dq).innerHTML="";if(dq.querySelectorAll("[msallowcapture^='']").length){c3.push("[*^$]="+cp+"*(?:''|\"\")")}if(!dq.querySelectorAll("[selected]").length){c3.push("\\["+cp+"*(?:value|"+b8+")")}if(!dq.querySelectorAll("[id~="+da+"-]").length){c3.push("~=")}if(!dq.querySelectorAll(":checked").length){c3.push(":checked")}if(!dq.querySelectorAll("a#"+da+"+*").length){c3.push(".#.+[+~]")}});cf(function(dr){var dq=dp.createElement("input");dq.setAttribute("type","hidden");dr.appendChild(dq).setAttribute("name","D");if(dr.querySelectorAll("[name=d]").length){c3.push("name"+cp+"*[*^$|!~]?=")}if(!dr.querySelectorAll(":enabled").length){c3.push(":enabled",":disabled")}dr.querySelectorAll("*,:x");c3.push(",.*:")})}if((dh.matchesSelector=cP.test((ce=co.matches||co.webkitMatchesSelector||co.mozMatchesSelector||co.oMatchesSelector||co.msMatchesSelector)))){cf(function(dq){dh.disconnectedMatch=ce.call(dq,"div");ce.call(dq,"[s!='']:x");df.push("!=",ck)})}c3=c3.length&&new RegExp(c3.join("|"));df=df.length&&new RegExp(df.join("|"));e=cP.test(co.compareDocumentPosition);cF=e||cP.test(co.contains)?function(dr,dq){var dt=dr.nodeType===9?dr.documentElement:dr,ds=dq&&dq.parentNode;return dr===ds||!!(ds&&ds.nodeType===1&&(dt.contains?dt.contains(ds):dr.compareDocumentPosition&&dr.compareDocumentPosition(ds)&16))}:function(dr,dq){if(dq){while((dq=dq.parentNode)){if(dq===dr){return true}}}return false};cE=e?function(dr,dq){if(dr===dq){cX=true;return 0}var ds=!dr.compareDocumentPosition-!dq.compareDocumentPosition;if(ds){return ds}ds=(dr.ownerDocument||dr)===(dq.ownerDocument||dq)?dr.compareDocumentPosition(dq):1;if(ds&1||(!dh.sortDetached&&dq.compareDocumentPosition(dr)===ds)){if(dr===dp||dr.ownerDocument===cJ&&cF(cJ,dr)){return -1}if(dq===dp||dq.ownerDocument===cJ&&cF(cJ,dq)){return 1}return cI?(cd(cI,dr)-cd(cI,dq)):0}return ds&4?-1:1}:function(dr,dq){if(dr===dq){cX=true;return 0}var dx,du=0,dw=dr.parentNode,dt=dq.parentNode,ds=[dr],dv=[dq];if(!dw||!dt){return dr===dp?-1:dq===dp?1:dw?-1:dt?1:cI?(cd(cI,dr)-cd(cI,dq)):0}else{if(dw===dt){return ca(dr,dq)}}dx=dr;while((dx=dx.parentNode)){ds.unshift(dx)}dx=dq;while((dx=dx.parentNode)){dv.unshift(dx)}while(ds[du]===dv[du]){du++}return du?ca(ds[du],dv[du]):ds[du]===cJ?-1:dv[du]===cJ?1:0};return dp};cw.matches=function(i,e){return cw(i,null,null,e)};cw.matchesSelector=function(dn,dq){if((dn.ownerDocument||dn)!==cC){cZ(dn)}dq=dq.replace(ct,"='$1']");if(dh.matchesSelector&&c8&&(!df||!df.test(dq))&&(!c3||!c3.test(dq))){try{var i=ce.call(dn,dq);if(i||dh.disconnectedMatch||dn.document&&dn.document.nodeType!==11){return i}}catch(dp){}}return cw(dq,cC,null,[dn]).length>0};cw.contains=function(e,i){if((e.ownerDocument||e)!==cC){cZ(e)}return cF(e,i)};cw.attr=function(dn,e){if((dn.ownerDocument||dn)!==cC){cZ(dn)}var i=cn.attrHandle[e.toLowerCase()],dp=i&&cO.call(cn.attrHandle,e.toLowerCase())?i(dn,e,!c8):undefined;return dp!==undefined?dp:dh.attributes||!c8?dn.getAttribute(e):(dp=dn.getAttributeNode(e))&&dp.specified?dp.value:null};cw.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)};cw.uniqueSort=function(dp){var dq,dr=[],e=0,dn=0;cX=!dh.detectDuplicates;cI=!dh.sortStable&&dp.slice(0);dp.sort(cE);if(cX){while((dq=dp[dn++])){if(dq===dp[dn]){e=dr.push(dn)}}while(e--){dp.splice(dr[e],1)}}cI=null;return dp};cH=cw.getText=function(dr){var dq,dn="",dp=0,e=dr.nodeType;if(!e){while((dq=dr[dp++])){dn+=cH(dq)}}else{if(e===1||e===9||e===11){if(typeof dr.textContent==="string"){return dr.textContent}else{for(dr=dr.firstChild;dr;dr=dr.nextSibling){dn+=cH(dr)}}}else{if(e===3||e===4){return dr.nodeValue}}}return dn};cn=cw.selectors={cacheLength:50,createPseudo:cj,match:c2,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:true}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:true},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){e[1]=e[1].replace(cs,c5);e[3]=(e[3]||e[4]||e[5]||"").replace(cs,c5);if(e[2]==="~="){e[3]=" "+e[3]+" "}return e.slice(0,4)},CHILD:function(e){e[1]=e[1].toLowerCase();if(e[1].slice(0,3)==="nth"){if(!e[3]){cw.error(e[0])}e[4]=+(e[4]?e[5]+(e[6]||1):2*(e[3]==="even"||e[3]==="odd"));e[5]=+((e[7]+e[8])||e[3]==="odd")}else{if(e[3]){cw.error(e[0])}}return e},PSEUDO:function(i){var e,dn=!i[6]&&i[2];if(c2.CHILD.test(i[0])){return null}if(i[3]){i[2]=i[4]||i[5]||""}else{if(dn&&cS.test(dn)&&(e=ci(dn,true))&&(e=dn.indexOf(")",dn.length-e)-dn.length)){i[0]=i[0].slice(0,e);i[2]=dn.slice(0,e)}}return i.slice(0,3)}},filter:{TAG:function(i){var e=i.replace(cs,c5).toLowerCase();return i==="*"?function(){return true}:function(dn){return dn.nodeName&&dn.nodeName.toLowerCase()===e}},CLASS:function(e){var i=b9[e+" "];return i||(i=new RegExp("(^|"+cp+")"+e+"("+cp+"|$)"))&&b9(e,function(dn){return i.test(typeof dn.className==="string"&&dn.className||typeof dn.getAttribute!=="undefined"&&dn.getAttribute("class")||"")})},ATTR:function(dn,i,e){return function(dq){var dp=cw.attr(dq,dn);if(dp==null){return i==="!="}if(!i){return true}dp+="";return i==="="?dp===e:i==="!="?dp!==e:i==="^="?e&&dp.indexOf(e)===0:i==="*="?e&&dp.indexOf(e)>-1:i==="$="?e&&dp.slice(-e.length)===e:i==="~="?(" "+dp.replace(cu," ")+" ").indexOf(e)>-1:i==="|="?dp===e||dp.slice(0,e.length+1)===e+"-":false}},CHILD:function(i,dq,dp,dr,dn){var dt=i.slice(0,3)!=="nth",e=i.slice(-4)!=="last",ds=dq==="of-type";return dr===1&&dn===0?function(du){return !!du.parentNode}:function(dA,dy,dD){var du,dG,dB,dF,dC,dx,dz=dt!==e?"nextSibling":"previousSibling",dE=dA.parentNode,dw=ds&&dA.nodeName.toLowerCase(),dv=!dD&&!ds;if(dE){if(dt){while(dz){dB=dA;while((dB=dB[dz])){if(ds?dB.nodeName.toLowerCase()===dw:dB.nodeType===1){return false}}dx=dz=i==="only"&&!dx&&"nextSibling"}return true}dx=[e?dE.firstChild:dE.lastChild];if(e&&dv){dG=dE[da]||(dE[da]={});du=dG[i]||[];dC=du[0]===di&&du[1];dF=du[0]===di&&du[2];dB=dC&&dE.childNodes[dC];while((dB=++dC&&dB&&dB[dz]||(dF=dC=0)||dx.pop())){if(dB.nodeType===1&&++dF&&dB===dA){dG[i]=[di,dC,dF];break}}}else{if(dv&&(du=(dA[da]||(dA[da]={}))[i])&&du[0]===di){dF=du[1]}else{while((dB=++dC&&dB&&dB[dz]||(dF=dC=0)||dx.pop())){if((ds?dB.nodeName.toLowerCase()===dw:dB.nodeType===1)&&++dF){if(dv){(dB[da]||(dB[da]={}))[i]=[di,dF]}if(dB===dA){break}}}}}dF-=dn;return dF===dr||(dF%dr===0&&dF/dr>=0)}}},PSEUDO:function(dp,dn){var e,i=cn.pseudos[dp]||cn.setFilters[dp.toLowerCase()]||cw.error("unsupported pseudo: "+dp);if(i[da]){return i(dn)}if(i.length>1){e=[dp,dp,"",dn];return cn.setFilters.hasOwnProperty(dp.toLowerCase())?cj(function(ds,du){var dr,dq=i(ds,dn),dt=dq.length;while(dt--){dr=cd(ds,dq[dt]);ds[dr]=!(du[dr]=dq[dt])}}):function(dq){return i(dq,0,e)}}return i}},pseudos:{not:cj(function(e){var i=[],dn=[],dp=cW(e.replace(cr,"$1"));return dp[da]?cj(function(dr,dw,du,ds){var dv,dq=dp(dr,null,ds,[]),dt=dr.length;while(dt--){if((dv=dq[dt])){dr[dt]=!(dw[dt]=dv)}}}):function(ds,dr,dq){i[0]=ds;dp(i,null,dq,dn);i[0]=null;return !dn.pop()}}),has:cj(function(e){return function(i){return cw(e,i).length>0}}),contains:cj(function(e){e=e.replace(cs,c5);return function(i){return(i.textContent||i.innerText||cH(i)).indexOf(e)>-1}}),lang:cj(function(e){if(!cU.test(e||"")){cw.error("unsupported lang: "+e)}e=e.replace(cs,c5).toLowerCase();return function(dn){var i;do{if((i=c8?dn.lang:dn.getAttribute("xml:lang")||dn.getAttribute("lang"))){i=i.toLowerCase();return i===e||i.indexOf(e+"-")===0}}while((dn=dn.parentNode)&&dn.nodeType===1);return false}}),target:function(e){var i=de.location&&de.location.hash;return i&&i.slice(1)===e.id},root:function(e){return e===co},focus:function(e){return e===cC.activeElement&&(!cC.hasFocus||cC.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===false},disabled:function(e){return e.disabled===true},checked:function(e){var i=e.nodeName.toLowerCase();return(i==="input"&&!!e.checked)||(i==="option"&&!!e.selected)},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling){if(e.nodeType<6){return false}}return true},parent:function(e){return !cn.pseudos.empty(e)},header:function(e){return cl.test(e.nodeName)},input:function(e){return cc.test(e.nodeName)},button:function(i){var e=i.nodeName.toLowerCase();return e==="input"&&i.type==="button"||e==="button"},text:function(i){var e;return i.nodeName.toLowerCase()==="input"&&i.type==="text"&&((e=i.getAttribute("type"))==null||e.toLowerCase()==="text")},first:c7(function(){return[0]}),last:c7(function(e,i){return[i-1]}),eq:c7(function(e,dn,i){return[i<0?i+dn:i]}),even:c7(function(e,dp){var dn=0;for(;dn=0;){e.push(dn)}return e}),gt:c7(function(e,dq,dp){var dn=dp<0?dp+dq:dp;for(;++dn1?function(dr,dq,dn){var dp=e.length;while(dp--){if(!e[dp](dr,dq,dn)){return false}}return true}:e[0]}function cz(dn,dr,dq){var dp=0,e=dr.length;for(;dp-1){dC[dE]=!(dz[dE]=dw)}}}}else{dy=c0(dy===dz?dy.splice(dt,dy.length):dy);if(dr){dr(null,dz,dy,dB)}else{b7.apply(dz,dy)}}})}function db(dt){var dn,dr,dp,ds=dt.length,dw=cn.relative[dt[0].type],dx=dw||cn.relative[" "],dq=dw?1:0,du=cq(function(i){return i===dn},dx,true),dv=cq(function(i){return cd(dn,i)>-1},dx,true),e=[function(dA,dz,dy){var i=(!dw&&(dy||dz!==dm))||((dn=dz).nodeType?du(dA,dz,dy):dv(dA,dz,dy));dn=null;return i}];for(;dq1&&dk(e),dq>1&&ch(dt.slice(0,dq-1).concat({value:dt[dq-2].type===" "?"*":""})).replace(cr,"$1"),dr,dq0,dq=dp.length>0,i=function(dA,du,dz,dy,dD){var dv,dw,dB,dF=0,dx="0",dr=dA&&[],dG=[],dE=dm,dt=dA||dq&&cn.find.TAG("*",dD),ds=(di+=dE==null?1:Math.random()||0.1),dC=dt.length;if(dD){dm=du!==cC&&du}for(;dx!==dC&&(dv=dt[dx])!=null;dx++){if(dq&&dv){dw=0;while((dB=dp[dw++])){if(dB(dv,du,dz)){dy.push(dv);break}}if(dD){di=ds}}if(e){if((dv=!dB&&dv)){dF--}if(dA){dr.push(dv)}}}dF+=dx;if(e&&dx!==dF){dw=0;while((dB=dn[dw++])){dB(dr,dG,du,dz)}if(dA){if(dF>0){while(dx--){if(!(dr[dx]||dG[dx])){dG[dx]=dd.call(dy)}}}dG=c0(dG)}b7.apply(dy,dG);if(dD&&!dA&&dG.length>0&&(dF+dn.length)>1){cw.uniqueSort(dy)}}if(dD){di=ds;dm=dE}return dr};return e?cj(i):i}cW=cw.compile=function(e,dp){var dq,dn=[],ds=[],dr=cG[e+" "];if(!dr){if(!dp){dp=ci(e)}dq=dp.length;while(dq--){dr=db(dp[dq]);if(dr[da]){dn.push(dr)}else{ds.push(dr)}}dr=cG(e,cY(ds,dn));dr.selector=e}return dr};dg=cw.select=function(dp,e,dq,dt){var dr,dw,dn,dx,du,dv=typeof dp==="function"&&dp,ds=!dt&&ci((dp=dv.selector||dp));dq=dq||[];if(ds.length===1){dw=ds[0]=ds[0].slice(0);if(dw.length>2&&(dn=dw[0]).type==="ID"&&dh.getById&&e.nodeType===9&&c8&&cn.relative[dw[1].type]){e=(cn.find.ID(dn.matches[0].replace(cs,c5),e)||[])[0];if(!e){return dq}else{if(dv){e=e.parentNode}}dp=dp.slice(dw.shift().value.length)}dr=c2.needsContext.test(dp)?0:dw.length;while(dr--){dn=dw[dr];if(cn.relative[(dx=dn.type)]){break}if((du=cn.find[dx])){if((dt=du(dn.matches[0].replace(cs,c5),c1.test(dw[0].type)&&cT(e.parentNode)||e))){dw.splice(dr,1);dp=dt.length&&ch(dw);if(!dp){b7.apply(dq,dt);return dq}break}}}}(dv||cW(dp,ds))(dt,e,!c8,dq,c1.test(dp)&&cT(e.parentNode)||e);return dq};dh.sortStable=da.split("").sort(cE).join("")===da;dh.detectDuplicates=!!cX;cZ();dh.sortDetached=cf(function(e){return e.compareDocumentPosition(cC.createElement("div"))&1});if(!cf(function(e){e.innerHTML="";return e.firstChild.getAttribute("href")==="#"})){dj("type|href|height|width",function(i,e,dn){if(!dn){return i.getAttribute(e,e.toLowerCase()==="type"?1:2)}})}if(!dh.attributes||!cf(function(e){e.innerHTML="";e.firstChild.setAttribute("value","");return e.firstChild.getAttribute("value")===""})){dj("value",function(i,e,dn){if(!dn&&i.nodeName.toLowerCase()==="input"){return i.defaultValue}})}if(!cf(function(e){return e.getAttribute("disabled")==null})){dj(b8,function(i,e,dp){var dn;if(!dp){return i[e]===true?e.toLowerCase():(dn=i.getAttributeNode(e))&&dn.specified?dn.value:null}})}return cw})(a5);bI.find=m;bI.expr=m.selectors;bI.expr[":"]=bI.expr.pseudos;bI.unique=m.uniqueSort;bI.text=m.getText;bI.isXMLDoc=m.isXML;bI.contains=m.contains;var A=bI.expr.match.needsContext;var a=(/^<(\w+)\s*\/?>(?:<\/\1>|)$/);var aL=/^.[^:#\[\.,]*$/;function aR(b6,e,i){if(bI.isFunction(e)){return bI.grep(b6,function(b8,b7){return !!e.call(b8,b7,b8)!==i})}if(e.nodeType){return bI.grep(b6,function(b7){return(b7===e)!==i})}if(typeof e==="string"){if(aL.test(e)){return bI.filter(e,b6,i)}e=bI.filter(e,b6)}return bI.grep(b6,function(b7){return(bI.inArray(b7,e)>=0)!==i})}bI.filter=function(b7,e,b6){var i=e[0];if(b6){b7=":not("+b7+")"}return e.length===1&&i.nodeType===1?bI.find.matchesSelector(i,b7)?[i]:[]:bI.find.matches(b7,bI.grep(e,function(b8){return b8.nodeType===1}))};bI.fn.extend({find:function(b6){var b9,b8=[],b7=this,e=b7.length;if(typeof b6!=="string"){return this.pushStack(bI(b6).filter(function(){for(b9=0;b91?bI.unique(b8):b8);b8.selector=this.selector?this.selector+" "+b6:b6;return b8},filter:function(e){return this.pushStack(aR(this,e||[],false))},not:function(e){return this.pushStack(aR(this,e||[],true))},is:function(e){return !!aR(this,typeof e==="string"&&A.test(e)?bI(e):e||[],false).length}});var z,n=a5.document,bt=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,bV=bI.fn.init=function(e,b6){var i,b7;if(!e){return this}if(typeof e==="string"){if(e.charAt(0)==="<"&&e.charAt(e.length-1)===">"&&e.length>=3){i=[null,e,null]}else{i=bt.exec(e)}if(i&&(i[1]||!b6)){if(i[1]){b6=b6 instanceof bI?b6[0]:b6;bI.merge(this,bI.parseHTML(i[1],b6&&b6.nodeType?b6.ownerDocument||b6:n,true));if(a.test(i[1])&&bI.isPlainObject(b6)){for(i in b6){if(bI.isFunction(this[i])){this[i](b6[i])}else{this.attr(i,b6[i])}}}return this}else{b7=n.getElementById(i[2]);if(b7&&b7.parentNode){if(b7.id!==i[2]){return z.find(e)}this.length=1;this[0]=b7}this.context=n;this.selector=e;return this}}else{if(!b6||b6.jquery){return(b6||z).find(e)}else{return this.constructor(b6).find(e)}}}else{if(e.nodeType){this.context=this[0]=e;this.length=1;return this}else{if(bI.isFunction(e)){return typeof z.ready!=="undefined"?z.ready(e):e(bI)}}}if(e.selector!==undefined){this.selector=e.selector;this.context=e.context}return bI.makeArray(e,this)};bV.prototype=bI.fn;z=bI(n);var bv=/^(?:parents|prev(?:Until|All))/,bz={children:true,contents:true,next:true,prev:true};bI.extend({dir:function(b6,i,b8){var e=[],b7=b6[i];while(b7&&b7.nodeType!==9&&(b8===undefined||b7.nodeType!==1||!bI(b7).is(b8))){if(b7.nodeType===1){e.push(b7)}b7=b7[i]}return e},sibling:function(b6,i){var e=[];for(;b6;b6=b6.nextSibling){if(b6.nodeType===1&&b6!==i){e.push(b6)}}return e}});bI.fn.extend({has:function(b8){var b7,b6=bI(b8,this),e=b6.length;return this.filter(function(){for(b7=0;b7-1:ca.nodeType===1&&bI.find.matchesSelector(ca,b9))){e.push(ca);break}}}return this.pushStack(e.length>1?bI.unique(e):e)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.first().prevAll().length:-1}if(typeof e==="string"){return bI.inArray(this[0],bI(e))}return bI.inArray(e.jquery?e[0]:e,this)},add:function(e,i){return this.pushStack(bI.unique(bI.merge(this.get(),bI(e,i))))},addBack:function(e){return this.add(e==null?this.prevObject:this.prevObject.filter(e))}});function aY(i,e){do{i=i[e]}while(i&&i.nodeType!==1);return i}bI.each({parent:function(i){var e=i.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return bI.dir(e,"parentNode")},parentsUntil:function(b6,e,b7){return bI.dir(b6,"parentNode",b7)},next:function(e){return aY(e,"nextSibling")},prev:function(e){return aY(e,"previousSibling")},nextAll:function(e){return bI.dir(e,"nextSibling")},prevAll:function(e){return bI.dir(e,"previousSibling")},nextUntil:function(b6,e,b7){return bI.dir(b6,"nextSibling",b7)},prevUntil:function(b6,e,b7){return bI.dir(b6,"previousSibling",b7)},siblings:function(e){return bI.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return bI.sibling(e.firstChild)},contents:function(e){return bI.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:bI.merge([],e.childNodes)}},function(e,i){bI.fn[e]=function(b8,b6){var b7=bI.map(this,i,b8);if(e.slice(-5)!=="Until"){b6=b8}if(b6&&typeof b6==="string"){b7=bI.filter(b6,b7)}if(this.length>1){if(!bz[e]){b7=bI.unique(b7)}if(bv.test(e)){b7=b7.reverse()}}return this.pushStack(b7)}});var aF=(/\S+/g);var b2={};function af(i){var e=b2[i]={};bI.each(i.match(aF)||[],function(b7,b6){e[b6]=true});return e}bI.Callbacks=function(ce){ce=typeof ce==="string"?(b2[ce]||af(ce)):bI.extend({},ce);var b8,b7,e,b9,ca,b6,cb=[],cc=!ce.once&&[],i=function(cf){b7=ce.memory&&cf;e=true;ca=b6||0;b6=0;b9=cb.length;b8=true;for(;cb&&ca-1){cb.splice(cg,1);if(b8){if(cg<=b9){b9--}if(cg<=ca){ca--}}}})}return this},has:function(cf){return cf?bI.inArray(cf,cb)>-1:!!(cb&&cb.length)},empty:function(){cb=[];b9=0;return this},disable:function(){cb=cc=b7=undefined;return this},disabled:function(){return !cb},lock:function(){cc=undefined;if(!b7){cd.disable()}return this},locked:function(){return !cc},fireWith:function(cg,cf){if(cb&&(!e||cc)){cf=cf||[];cf=[cg,cf.slice?cf.slice():cf];if(b8){cc.push(cf)}else{i(cf)}}return this},fire:function(){cd.fireWith(this,arguments);return this},fired:function(){return !!e}};return cd};bI.extend({Deferred:function(b6){var i=[["resolve","done",bI.Callbacks("once memory"),"resolved"],["reject","fail",bI.Callbacks("once memory"),"rejected"],["notify","progress",bI.Callbacks("memory")]],b7="pending",b8={state:function(){return b7},always:function(){e.done(arguments).fail(arguments);return this},then:function(){var b9=arguments;return bI.Deferred(function(ca){bI.each(i,function(cc,cb){var cd=bI.isFunction(b9[cc])&&b9[cc];e[cb[1]](function(){var ce=cd&&cd.apply(this,arguments);if(ce&&bI.isFunction(ce.promise)){ce.promise().done(ca.resolve).fail(ca.reject).progress(ca.notify)}else{ca[cb[0]+"With"](this===b8?ca.promise():this,cd?[ce]:arguments)}})});b9=null}).promise()},promise:function(b9){return b9!=null?bI.extend(b9,b8):b8}},e={};b8.pipe=b8.then;bI.each(i,function(ca,b9){var cc=b9[2],cb=b9[3];b8[b9[1]]=cc.add;if(cb){cc.add(function(){b7=cb},i[ca^1][2].disable,i[2][2].lock)}e[b9[0]]=function(){e[b9[0]+"With"](this===e?b8:this,arguments);return this};e[b9[0]+"With"]=cc.fireWith});b8.promise(e);if(b6){b6.call(e,e)}return e},when:function(b9){var b7=0,cb=P.call(arguments),e=cb.length,b6=e!==1||(b9&&bI.isFunction(b9.promise))?e:0,ce=b6===1?b9:bI.Deferred(),b8=function(cg,ch,cf){return function(i){ch[cg]=this;cf[cg]=arguments.length>1?P.call(arguments):i;if(cf===cd){ce.notifyWith(ch,cf)}else{if(!(--b6)){ce.resolveWith(ch,cf)}}}},cd,ca,cc;if(e>1){cd=new Array(e);ca=new Array(e);cc=new Array(e);for(;b70){return}ak.resolveWith(n,[bI]);if(bI.fn.triggerHandler){bI(n).triggerHandler("ready");bI(n).off("ready")}}});function bm(){if(n.addEventListener){n.removeEventListener("DOMContentLoaded",bZ,false);a5.removeEventListener("load",bZ,false)}else{n.detachEvent("onreadystatechange",bZ);a5.detachEvent("onload",bZ)}}function bZ(){if(n.addEventListener||event.type==="load"||n.readyState==="complete"){bm();bI.ready()}}bI.ready.promise=function(b8){if(!ak){ak=bI.Deferred();if(n.readyState==="complete"){setTimeout(bI.ready)}else{if(n.addEventListener){n.addEventListener("DOMContentLoaded",bZ,false);a5.addEventListener("load",bZ,false)}else{n.attachEvent("onreadystatechange",bZ);a5.attachEvent("onload",bZ);var b7=false;try{b7=a5.frameElement==null&&n.documentElement}catch(b6){}if(b7&&b7.doScroll){(function i(){if(!bI.isReady){try{b7.doScroll("left")}catch(b9){return setTimeout(i,50)}bm();bI.ready()}})()}}}}return ak.promise(b8)};var aC=typeof undefined;var bh;for(bh in bI(D)){break}D.ownLast=bh!=="0";D.inlineBlockNeedsLayout=false;bI(function(){var b6,b7,e,i;e=n.getElementsByTagName("body")[0];if(!e||!e.style){return}b7=n.createElement("div");i=n.createElement("div");i.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px";e.appendChild(i).appendChild(b7);if(typeof b7.style.zoom!==aC){b7.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1";D.inlineBlockNeedsLayout=b6=b7.offsetWidth===3;if(b6){e.style.zoom=1}}e.removeChild(i)});(function(){var b6=n.createElement("div");if(D.deleteExpando==null){D.deleteExpando=true;try{delete b6.test}catch(i){D.deleteExpando=false}}b6=null})();bI.acceptData=function(b6){var i=bI.noData[(b6.nodeName+" ").toLowerCase()],e=+b6.nodeType||1;return e!==1&&e!==9?false:!i||i!==true&&b6.getAttribute("classid")===i};var by=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,aQ=/([A-Z])/g;function bA(b7,b6,b8){if(b8===undefined&&b7.nodeType===1){var i="data-"+b6.replace(aQ,"-$1").toLowerCase();b8=b7.getAttribute(i);if(typeof b8==="string"){try{b8=b8==="true"?true:b8==="false"?false:b8==="null"?null:+b8+""===b8?+b8:by.test(b8)?bI.parseJSON(b8):b8}catch(b9){}bI.data(b7,b6,b8)}else{b8=undefined}}return b8}function Q(i){var e;for(e in i){if(e==="data"&&bI.isEmptyObject(i[e])){continue}if(e!=="toJSON"){return false}}return true}function bc(b7,i,b9,b8){if(!bI.acceptData(b7)){return}var cb,ca,cc=bI.expando,cd=b7.nodeType,e=cd?bI.cache:b7,b6=cd?b7[cc]:b7[cc]&&cc;if((!b6||!e[b6]||(!b8&&!e[b6].data))&&b9===undefined&&typeof i==="string"){return}if(!b6){if(cd){b6=b7[cc]=aP.pop()||bI.guid++}else{b6=cc}}if(!e[b6]){e[b6]=cd?{}:{toJSON:bI.noop}}if(typeof i==="object"||typeof i==="function"){if(b8){e[b6]=bI.extend(e[b6],i)}else{e[b6].data=bI.extend(e[b6].data,i)}}ca=e[b6];if(!b8){if(!ca.data){ca.data={}}ca=ca.data}if(b9!==undefined){ca[bI.camelCase(i)]=b9}if(typeof i==="string"){cb=ca[i];if(cb==null){cb=ca[bI.camelCase(i)]}}else{cb=ca}return cb}function ab(b9,b7,e){if(!bI.acceptData(b9)){return}var cb,b8,ca=b9.nodeType,b6=ca?bI.cache:b9,cc=ca?b9[bI.expando]:bI.expando;if(!b6[cc]){return}if(b7){cb=e?b6[cc]:b6[cc].data;if(cb){if(!bI.isArray(b7)){if(b7 in cb){b7=[b7]}else{b7=bI.camelCase(b7);if(b7 in cb){b7=[b7]}else{b7=b7.split(" ")}}}else{b7=b7.concat(bI.map(b7,bI.camelCase))}b8=b7.length;while(b8--){delete cb[b7[b8]]}if(e?!Q(cb):!bI.isEmptyObject(cb)){return}}}if(!e){delete b6[cc].data;if(!Q(b6[cc])){return}}if(ca){bI.cleanData([b9],true)}else{if(D.deleteExpando||b6!=b6.window){delete b6[cc]}else{b6[cc]=null}}}bI.extend({cache:{},noData:{"applet ":true,"embed ":true,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){e=e.nodeType?bI.cache[e[bI.expando]]:e[bI.expando];return !!e&&!Q(e)},data:function(i,e,b6){return bc(i,e,b6)},removeData:function(i,e){return ab(i,e)},_data:function(i,e,b6){return bc(i,e,b6,true)},_removeData:function(i,e){return ab(i,e,true)}});bI.fn.extend({data:function(b8,cb){var b7,b6,ca,b9=this[0],e=b9&&b9.attributes;if(b8===undefined){if(this.length){ca=bI.data(b9);if(b9.nodeType===1&&!bI._data(b9,"parsedAttrs")){b7=e.length;while(b7--){if(e[b7]){b6=e[b7].name;if(b6.indexOf("data-")===0){b6=bI.camelCase(b6.slice(5));bA(b9,b6,ca[b6])}}}bI._data(b9,"parsedAttrs",true)}}return ca}if(typeof b8==="object"){return this.each(function(){bI.data(this,b8)})}return arguments.length>1?this.each(function(){bI.data(this,b8,cb)}):b9?bA(b9,b8,bI.data(b9,b8)):undefined},removeData:function(e){return this.each(function(){bI.removeData(this,e)})}});bI.extend({queue:function(b6,i,b7){var e;if(b6){i=(i||"fx")+"queue";e=bI._data(b6,i);if(b7){if(!e||bI.isArray(b7)){e=bI._data(b6,i,bI.makeArray(b7))}else{e.push(b7)}}return e||[]}},dequeue:function(b9,b8){b8=b8||"fx";var i=bI.queue(b9,b8),ca=i.length,b7=i.shift(),e=bI._queueHooks(b9,b8),b6=function(){bI.dequeue(b9,b8)};if(b7==="inprogress"){b7=i.shift();ca--}if(b7){if(b8==="fx"){i.unshift("inprogress")}delete e.stop;b7.call(b9,b6,e)}if(!ca&&e){e.empty.fire()}},_queueHooks:function(b6,i){var e=i+"queueHooks";return bI._data(b6,e)||bI._data(b6,e,{empty:bI.Callbacks("once memory").add(function(){bI._removeData(b6,i+"queue");bI._removeData(b6,e)})})}});bI.fn.extend({queue:function(e,i){var b6=2;if(typeof e!=="string"){i=e;e="fx";b6--}if(arguments.length
    a";D.leadingWhitespace=b8.firstChild.nodeType===3;D.tbody=!b8.getElementsByTagName("tbody").length;D.htmlSerialize=!!b8.getElementsByTagName("link").length;D.html5Clone=n.createElement("nav").cloneNode(true).outerHTML!=="<:nav>";i.type="checkbox";i.checked=true;b6.appendChild(i);D.appendChecked=i.checked;b8.innerHTML="";D.noCloneChecked=!!b8.cloneNode(true).lastChild.defaultValue;b6.appendChild(b8);b8.innerHTML="";D.checkClone=b8.cloneNode(true).cloneNode(true).lastChild.checked;D.noCloneEvent=true;if(b8.attachEvent){b8.attachEvent("onclick",function(){D.noCloneEvent=false});b8.cloneNode(true).click()}if(D.deleteExpando==null){D.deleteExpando=true;try{delete b8.test}catch(b7){D.deleteExpando=false}}})();(function(){var b6,e,b7=n.createElement("div");for(b6 in {submit:true,change:true,focusin:true}){e="on"+b6;if(!(D[b6+"Bubbles"]=e in a5)){b7.setAttribute(e,"t");D[b6+"Bubbles"]=b7.attributes[e].expando===false}}b7=null})();var bG=/^(?:input|select|textarea)$/i,a6=/^key/,bM=/^(?:mouse|pointer|contextmenu)|click/,bC=/^(?:focusinfocus|focusoutblur)$/,bx=/^([^.]*)(?:\.(.+)|)$/;function U(){return true}function Z(){return false}function am(){try{return n.activeElement}catch(e){}}bI.event={global:{},add:function(b8,cd,ci,ca,b9){var cb,cj,ck,b6,cf,cc,ch,b7,cg,e,i,ce=bI._data(b8);if(!ce){return}if(ci.handler){b6=ci;ci=b6.handler;b9=b6.selector}if(!ci.guid){ci.guid=bI.guid++}if(!(cj=ce.events)){cj=ce.events={}}if(!(cc=ce.handle)){cc=ce.handle=function(cl){return typeof bI!==aC&&(!cl||bI.event.triggered!==cl.type)?bI.event.dispatch.apply(cc.elem,arguments):undefined};cc.elem=b8}cd=(cd||"").match(aF)||[""];ck=cd.length;while(ck--){cb=bx.exec(cd[ck])||[];cg=i=cb[1];e=(cb[2]||"").split(".").sort();if(!cg){continue}cf=bI.event.special[cg]||{};cg=(b9?cf.delegateType:cf.bindType)||cg;cf=bI.event.special[cg]||{};ch=bI.extend({type:cg,origType:i,data:ca,handler:ci,guid:ci.guid,selector:b9,needsContext:b9&&bI.expr.match.needsContext.test(b9),namespace:e.join(".")},b6);if(!(b7=cj[cg])){b7=cj[cg]=[];b7.delegateCount=0;if(!cf.setup||cf.setup.call(b8,ca,e,cc)===false){if(b8.addEventListener){b8.addEventListener(cg,cc,false)}else{if(b8.attachEvent){b8.attachEvent("on"+cg,cc)}}}}if(cf.add){cf.add.call(b8,ch);if(!ch.handler.guid){ch.handler.guid=ci.guid}}if(b9){b7.splice(b7.delegateCount++,0,ch)}else{b7.push(ch)}bI.event.global[cg]=true}b8=null},remove:function(b7,cd,ck,b8,cc){var ca,ch,cb,b9,cj,ci,cf,b6,cg,e,i,ce=bI.hasData(b7)&&bI._data(b7);if(!ce||!(ci=ce.events)){return}cd=(cd||"").match(aF)||[""];cj=cd.length;while(cj--){cb=bx.exec(cd[cj])||[];cg=i=cb[1];e=(cb[2]||"").split(".").sort();if(!cg){for(cg in ci){bI.event.remove(b7,cg+cd[cj],ck,b8,true)}continue}cf=bI.event.special[cg]||{};cg=(b8?cf.delegateType:cf.bindType)||cg;b6=ci[cg]||[];cb=cb[2]&&new RegExp("(^|\\.)"+e.join("\\.(?:.*\\.|)")+"(\\.|$)");b9=ca=b6.length;while(ca--){ch=b6[ca];if((cc||i===ch.origType)&&(!ck||ck.guid===ch.guid)&&(!cb||cb.test(ch.namespace))&&(!b8||b8===ch.selector||b8==="**"&&ch.selector)){b6.splice(ca,1);if(ch.selector){b6.delegateCount--}if(cf.remove){cf.remove.call(b7,ch)}}}if(b9&&!b6.length){if(!cf.teardown||cf.teardown.call(b7,e,ce.handle)===false){bI.removeEvent(b7,cg,ce.handle)}delete ci[cg]}}if(bI.isEmptyObject(ci)){delete ce.handle;bI._removeData(b7,"events")}},trigger:function(b6,cd,b9,ck){var ce,b8,ci,cj,cg,cc,cb,ca=[b9||n],ch=K.call(b6,"type")?b6.type:b6,b7=K.call(b6,"namespace")?b6.namespace.split("."):[];ci=cc=b9=b9||n;if(b9.nodeType===3||b9.nodeType===8){return}if(bC.test(ch+bI.event.triggered)){return}if(ch.indexOf(".")>=0){b7=ch.split(".");ch=b7.shift();b7.sort()}b8=ch.indexOf(":")<0&&"on"+ch;b6=b6[bI.expando]?b6:new bI.Event(ch,typeof b6==="object"&&b6);b6.isTrigger=ck?2:3;b6.namespace=b7.join(".");b6.namespace_re=b6.namespace?new RegExp("(^|\\.)"+b7.join("\\.(?:.*\\.|)")+"(\\.|$)"):null;b6.result=undefined;if(!b6.target){b6.target=b9}cd=cd==null?[b6]:bI.makeArray(cd,[b6]);cg=bI.event.special[ch]||{};if(!ck&&cg.trigger&&cg.trigger.apply(b9,cd)===false){return}if(!ck&&!cg.noBubble&&!bI.isWindow(b9)){cj=cg.delegateType||ch;if(!bC.test(cj+ch)){ci=ci.parentNode}for(;ci;ci=ci.parentNode){ca.push(ci);cc=ci}if(cc===(b9.ownerDocument||n)){ca.push(cc.defaultView||cc.parentWindow||a5)}}cb=0;while((ci=ca[cb++])&&!b6.isPropagationStopped()){b6.type=cb>1?cj:cg.bindType||ch;ce=(bI._data(ci,"events")||{})[b6.type]&&bI._data(ci,"handle");if(ce){ce.apply(ci,cd)}ce=b8&&ci[b8];if(ce&&ce.apply&&bI.acceptData(ci)){b6.result=ce.apply(ci,cd);if(b6.result===false){b6.preventDefault()}}}b6.type=ch;if(!ck&&!b6.isDefaultPrevented()){if((!cg._default||cg._default.apply(ca.pop(),cd)===false)&&bI.acceptData(b9)){if(b8&&b9[ch]&&!bI.isWindow(b9)){cc=b9[b8];if(cc){b9[b8]=null}bI.event.triggered=ch;try{b9[ch]()}catch(cf){}bI.event.triggered=undefined;if(cc){b9[b8]=cc}}}}return b6.result},dispatch:function(e){e=bI.event.fix(e);var b9,ca,ce,b6,b8,cd=[],cc=P.call(arguments),b7=(bI._data(this,"events")||{})[e.type]||[],cb=bI.event.special[e.type]||{};cc[0]=e;e.delegateTarget=this;if(cb.preDispatch&&cb.preDispatch.call(this,e)===false){return}cd=bI.event.handlers.call(this,e,b7);b9=0;while((b6=cd[b9++])&&!e.isPropagationStopped()){e.currentTarget=b6.elem;b8=0;while((ce=b6.handlers[b8++])&&!e.isImmediatePropagationStopped()){if(!e.namespace_re||e.namespace_re.test(ce.namespace)){e.handleObj=ce;e.data=ce.data;ca=((bI.event.special[ce.origType]||{}).handle||ce.handler).apply(b6.elem,cc);if(ca!==undefined){if((e.result=ca)===false){e.preventDefault();e.stopPropagation()}}}}}if(cb.postDispatch){cb.postDispatch.call(this,e)}return e.result},handlers:function(e,b7){var b6,cc,ca,b9,cb=[],b8=b7.delegateCount,cd=e.target;if(b8&&cd.nodeType&&(!e.button||e.type!=="click")){for(;cd!=this;cd=cd.parentNode||this){if(cd.nodeType===1&&(cd.disabled!==true||e.type!=="click")){ca=[];for(b9=0;b9=0:bI.find(b6,this,null,[cd]).length}if(ca[b6]){ca.push(cc)}}if(ca.length){cb.push({elem:cd,handlers:ca})}}}}if(b8]","i"),b5=/^\s+/,aH=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,o=/<([\w:]+)/,b0=/\s*$/g,W={option:[1,""],legend:[1,"
    ","
    "],area:[1,"",""],param:[1,"",""],thead:[1,"","
    "],tr:[2,"","
    "],col:[2,"","
    "],td:[3,"","
    "],_default:D.htmlSerialize?[0,"",""]:[1,"X
    ","
    "]},aT=B(n),k=aT.appendChild(n.createElement("div"));W.optgroup=W.option;W.tbody=W.tfoot=W.colgroup=W.caption=W.thead;W.th=W.td;function l(b8,e){var b6,b9,b7=0,ca=typeof b8.getElementsByTagName!==aC?b8.getElementsByTagName(e||"*"):typeof b8.querySelectorAll!==aC?b8.querySelectorAll(e||"*"):undefined;if(!ca){for(ca=[],b6=b8.childNodes||b8;(b9=b6[b7])!=null;b7++){if(!e||bI.nodeName(b9,e)){ca.push(b9)}else{bI.merge(ca,l(b9,e))}}}return e===undefined||e&&bI.nodeName(b8,e)?bI.merge([b8],ca):ca}function bY(e){if(aM.test(e.type)){e.defaultChecked=e.checked}}function a3(i,e){return bI.nodeName(i,"table")&&bI.nodeName(e.nodeType!==11?e:e.firstChild,"tr")?i.getElementsByTagName("tbody")[0]||i.appendChild(i.ownerDocument.createElement("tbody")):i}function u(e){e.type=(bI.find.attr(e,"type")!==null)+"/"+e.type;return e}function bf(i){var e=ar.exec(i.type);if(e){i.type=e[1]}else{i.removeAttribute("type")}return i}function bu(e,b7){var b8,b6=0;for(;(b8=e[b6])!=null;b6++){bI._data(b8,"globalEval",!b7||bI._data(b7[b6],"globalEval"))}}function at(cc,b6){if(b6.nodeType!==1||!bI.hasData(cc)){return}var b9,b8,e,cb=bI._data(cc),ca=bI._data(b6,cb),b7=cb.events;if(b7){delete ca.handle;ca.events={};for(b9 in b7){for(b8=0,e=b7[b9].length;b8")){cd=b6.cloneNode(true)}else{k.innerHTML=b6.outerHTML;k.removeChild(cd=k.firstChild)}if((!D.noCloneEvent||!D.noCloneChecked)&&(b6.nodeType===1||b6.nodeType===11)&&!bI.isXMLDoc(b6)){ca=l(cd);cb=l(b6);for(b9=0;(b7=cb[b9])!=null;++b9){if(ca[b9]){T(b7,ca[b9])}}}if(b8){if(e){cb=cb||l(b6);ca=ca||l(cd);for(b9=0;(b7=cb[b9])!=null;b9++){at(b7,ca[b9])}}else{at(b6,cd)}}ca=l(cd,"script");if(ca.length>0){bu(ca,!cc&&l(b6,"script"))}ca=cb=b7=null;return cd},buildFragment:function(b6,b8,cd,ci){var ce,ca,cc,ch,cj,cg,b7,cb=b6.length,b9=B(b8),e=[],cf=0;for(;cf")+b7[2];ce=b7[0];while(ce--){ch=ch.lastChild}if(!D.leadingWhitespace&&b5.test(ca)){e.push(b8.createTextNode(b5.exec(ca)[0]))}if(!D.tbody){ca=cj==="table"&&!b0.test(ca)?ch.firstChild:b7[1]===""&&!b0.test(ca)?ch:0;ce=ca&&ca.childNodes.length;while(ce--){if(bI.nodeName((cg=ca.childNodes[ce]),"tbody")&&!cg.childNodes.length){ca.removeChild(cg)}}}bI.merge(e,ch.childNodes);ch.textContent="";while(ch.firstChild){ch.removeChild(ch.firstChild)}ch=b9.lastChild}}}}if(ch){b9.removeChild(ch)}if(!D.appendChecked){bI.grep(l(e,"input"),bY)}cf=0;while((ca=e[cf++])){if(ci&&bI.inArray(ca,ci)!==-1){continue}cc=bI.contains(ca.ownerDocument,ca);ch=l(b9.appendChild(ca),"script");if(cc){bu(ch)}if(cd){ce=0;while((ca=ch[ce++])){if(bB.test(ca.type||"")){cd.push(ca)}}}}ch=null;return b9},cleanData:function(b6,ce){var b8,cd,b7,b9,ca=0,cf=bI.expando,e=bI.cache,cb=D.deleteExpando,cc=bI.event.special;for(;(b8=b6[ca])!=null;ca++){if(ce||bI.acceptData(b8)){b7=b8[cf];b9=b7&&e[b7];if(b9){if(b9.events){for(cd in b9.events){if(cc[cd]){bI.event.remove(b8,cd)}else{bI.removeEvent(b8,cd,b9.handle)}}}if(e[b7]){delete e[b7];if(cb){delete b8[cf]}else{if(typeof b8.removeAttribute!==aC){b8.removeAttribute(cf)}else{b8[cf]=null}}aP.push(b7)}}}}}});bI.fn.extend({text:function(e){return aB(this,function(i){return i===undefined?bI.text(this):this.empty().append((this[0]&&this[0].ownerDocument||n).createTextNode(i))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(this.nodeType===1||this.nodeType===11||this.nodeType===9){var i=a3(this,e);i.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(this.nodeType===1||this.nodeType===11||this.nodeType===9){var i=a3(this,e);i.insertBefore(e,i.firstChild)}})},before:function(){return this.domManip(arguments,function(e){if(this.parentNode){this.parentNode.insertBefore(e,this)}})},after:function(){return this.domManip(arguments,function(e){if(this.parentNode){this.parentNode.insertBefore(e,this.nextSibling)}})},remove:function(e,b9){var b8,b6=e?bI.filter(e,this):this,b7=0;for(;(b8=b6[b7])!=null;b7++){if(!b9&&b8.nodeType===1){bI.cleanData(l(b8))}if(b8.parentNode){if(b9&&bI.contains(b8.ownerDocument,b8)){bu(l(b8,"script"))}b8.parentNode.removeChild(b8)}}return this},empty:function(){var b6,e=0;for(;(b6=this[e])!=null;e++){if(b6.nodeType===1){bI.cleanData(l(b6,false))}while(b6.firstChild){b6.removeChild(b6.firstChild)}if(b6.options&&bI.nodeName(b6,"select")){b6.options.length=0}}return this},clone:function(i,e){i=i==null?false:i;e=e==null?i:e;return this.map(function(){return bI.clone(this,i,e)})},html:function(e){return aB(this,function(b9){var b8=this[0]||{},b7=0,b6=this.length;if(b9===undefined){return b8.nodeType===1?b8.innerHTML.replace(aD,""):undefined}if(typeof b9==="string"&&!an.test(b9)&&(D.htmlSerialize||!M.test(b9))&&(D.leadingWhitespace||!b5.test(b9))&&!W[(o.exec(b9)||["",""])[1].toLowerCase()]){b9=b9.replace(aH,"<$1>");try{for(;b71&&typeof ce==="string"&&!D.checkClone&&bW.test(ce))){return this.each(function(cj){var i=cf.eq(cj);if(b6){cd[0]=ce.call(this,cj,i.html())}i.domManip(cd,ci)})}if(b8){cc=bI.buildFragment(cd,this[0].ownerDocument,false,this);cb=cc.firstChild;if(cc.childNodes.length===1){cc=cb}if(cb){b9=bI.map(l(cc,"script"),u);e=b9.length;for(;ca")).appendTo(i.documentElement);i=(aI[0].contentWindow||aI[0].contentDocument).document;i.write();i.close();e=a4(b6,i);aI.detach()}bl[b6]=e}return e}(function(){var e;D.shrinkWrapBlocks=function(){if(e!=null){return e}e=false;var b7,i,b6;i=n.getElementsByTagName("body")[0];if(!i||!i.style){return}b7=n.createElement("div");b6=n.createElement("div");b6.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px";i.appendChild(b6).appendChild(b7);if(typeof b7.style.zoom!==aC){b7.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1";b7.appendChild(n.createElement("div")).style.width="5px";e=b7.offsetWidth!==3}i.removeChild(b6);return e}})();var aZ=(/^margin/);var Y=new RegExp("^("+aE+")(?!px)[a-z%]+$","i");var bq,G,bo=/^(top|right|bottom|left)$/;if(a5.getComputedStyle){bq=function(e){if(e.ownerDocument.defaultView.opener){return e.ownerDocument.defaultView.getComputedStyle(e,null)}return a5.getComputedStyle(e,null)};G=function(cb,i,ca){var b8,b7,b9,e,b6=cb.style;ca=ca||bq(cb);e=ca?ca.getPropertyValue(i)||ca[i]:undefined;if(ca){if(e===""&&!bI.contains(cb.ownerDocument,cb)){e=bI.style(cb,i)}if(Y.test(e)&&aZ.test(i)){b8=b6.width;b7=b6.minWidth;b9=b6.maxWidth;b6.minWidth=b6.maxWidth=b6.width=e;e=ca.width;b6.width=b8;b6.minWidth=b7;b6.maxWidth=b9}}return e===undefined?e:e+""}}else{if(n.documentElement.currentStyle){bq=function(e){return e.currentStyle};G=function(ca,b7,b9){var cb,i,e,b6,b8=ca.style;b9=b9||bq(ca);b6=b9?b9[b7]:undefined;if(b6==null&&b8&&b8[b7]){b6=b8[b7]}if(Y.test(b6)&&!bo.test(b7)){cb=b8.left;i=ca.runtimeStyle;e=i&&i.left;if(e){i.left=ca.currentStyle.left}b8.left=b7==="fontSize"?"1em":b6;b6=b8.pixelLeft+"px";b8.left=cb;if(e){i.left=e}}return b6===undefined?b6:b6+""||"auto"}}}function a7(e,i){return{get:function(){var b6=e();if(b6==null){return}if(b6){delete this.get;return}return(this.get=i).apply(this,arguments)}}}(function(){var cb,b9,b7,ca,b6,b8,i;cb=n.createElement("div");cb.innerHTML="
    a";b7=cb.getElementsByTagName("a")[0];b9=b7&&b7.style;if(!b9){return}b9.cssText="float:left;opacity:.5";D.opacity=b9.opacity==="0.5";D.cssFloat=!!b9.cssFloat;cb.style.backgroundClip="content-box";cb.cloneNode(true).style.backgroundClip="";D.clearCloneStyle=cb.style.backgroundClip==="content-box";D.boxSizing=b9.boxSizing===""||b9.MozBoxSizing===""||b9.WebkitBoxSizing==="";bI.extend(D,{reliableHiddenOffsets:function(){if(b8==null){e()}return b8},boxSizingReliable:function(){if(b6==null){e()}return b6},pixelPosition:function(){if(ca==null){e()}return ca},reliableMarginRight:function(){if(i==null){e()}return i}});function e(){var cf,cc,cd,ce;cc=n.getElementsByTagName("body")[0];if(!cc||!cc.style){return}cf=n.createElement("div");cd=n.createElement("div");cd.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px";cc.appendChild(cd).appendChild(cf);cf.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute";ca=b6=false;i=true;if(a5.getComputedStyle){ca=(a5.getComputedStyle(cf,null)||{}).top!=="1%";b6=(a5.getComputedStyle(cf,null)||{width:"4px"}).width==="4px";ce=cf.appendChild(n.createElement("div"));ce.style.cssText=cf.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0";ce.style.marginRight=ce.style.width="0";cf.style.width="1px";i=!parseFloat((a5.getComputedStyle(ce,null)||{}).marginRight);cf.removeChild(ce)}cf.innerHTML="
    t
    ";ce=cf.getElementsByTagName("td");ce[0].style.cssText="margin:0;border:0;padding:0;display:none";b8=ce[0].offsetHeight===0;if(b8){ce[0].style.display="";ce[1].style.display="none";b8=ce[0].offsetHeight===0}cc.removeChild(cd)}})();bI.swap=function(b9,b8,ca,b7){var b6,i,e={};for(i in b8){e[i]=b9.style[i];b9.style[i]=b8[i]}b6=ca.apply(b9,b7||[]);for(i in b8){b9.style[i]=e[i]}return b6};var bj=/alpha\([^)]*\)/i,aU=/opacity\s*=\s*([^)]*)/,H=/^(none|table(?!-c[ea]).+)/,bb=new RegExp("^("+aE+")(.*)$","i"),V=new RegExp("^([+-])=("+aE+")","i"),be={position:"absolute",visibility:"hidden",display:"block"},bD={letterSpacing:"0",fontWeight:"400"},aw=["Webkit","O","Moz","ms"];function c(b8,b6){if(b6 in b8){return b6}var b9=b6.charAt(0).toUpperCase()+b6.slice(1),e=b6,b7=aw.length;while(b7--){b6=aw[b7]+b9;if(b6 in b8){return b6}}return e}function s(ca,e){var cb,b8,b9,i=[],b6=0,b7=ca.length;for(;b6=1||b9==="")&&bI.trim(b6.replace(bj,""))===""&&b7.removeAttribute){b7.removeAttribute("filter");if(b9===""||i&&!i.filter){return}}b7.filter=bj.test(b6)?b6.replace(bj,e):b6+" "+e}}}bI.cssHooks.marginRight=a7(D.reliableMarginRight,function(i,e){if(e){return bI.swap(i,{display:"inline-block"},G,[i,"marginRight"])}});bI.each({margin:"",padding:"",border:"Width"},function(e,i){bI.cssHooks[e+i]={expand:function(b8){var b7=0,b6={},b9=typeof b8==="string"?b8.split(" "):[b8];for(;b7<4;b7++){b6[e+bT[b7]+i]=b9[b7]||b9[b7-2]||b9[0]}return b6}};if(!aZ.test(e)){bI.cssHooks[e+i].set=aN}});bI.fn.extend({css:function(e,i){return aB(this,function(ca,b7,cb){var b9,b6,cc={},b8=0;if(bI.isArray(b7)){b9=bq(ca);b6=b7.length;for(;b81)},show:function(){return s(this,true)},hide:function(){return s(this)},toggle:function(e){if(typeof e==="boolean"){return e?this.show():this.hide()}return this.each(function(){if(S(this)){bI(this).show()}else{bI(this).hide()}})}});function J(b6,i,b8,e,b7){return new J.prototype.init(b6,i,b8,e,b7)}bI.Tween=J;J.prototype={constructor:J,init:function(b7,i,b9,e,b8,b6){this.elem=b7;this.prop=b9;this.easing=b8||"swing";this.options=i;this.start=this.now=this.cur();this.end=e;this.unit=b6||(bI.cssNumber[b9]?"":"px")},cur:function(){var e=J.propHooks[this.prop];return e&&e.get?e.get(this):J.propHooks._default.get(this)},run:function(b6){var i,e=J.propHooks[this.prop];if(this.options.duration){this.pos=i=bI.easing[this.easing](b6,this.options.duration*b6,0,1,this.options.duration)}else{this.pos=i=b6}this.now=(this.end-this.start)*i+this.start;if(this.options.step){this.options.step.call(this.elem,this.now,this)}if(e&&e.set){e.set(this)}else{J.propHooks._default.set(this)}return this}};J.prototype.init.prototype=J.prototype;J.propHooks={_default:{get:function(i){var e;if(i.elem[i.prop]!=null&&(!i.elem.style||i.elem.style[i.prop]==null)){return i.elem[i.prop]}e=bI.css(i.elem,i.prop,"");return !e||e==="auto"?0:e},set:function(e){if(bI.fx.step[e.prop]){bI.fx.step[e.prop](e)}else{if(e.elem.style&&(e.elem.style[bI.cssProps[e.prop]]!=null||bI.cssHooks[e.prop])){bI.style(e.elem,e.prop,e.now+e.unit)}else{e.elem[e.prop]=e.now}}}}};J.propHooks.scrollTop=J.propHooks.scrollLeft={set:function(e){if(e.elem.nodeType&&e.elem.parentNode){e.elem[e.prop]=e.now}}};bI.easing={linear:function(e){return e},swing:function(e){return 0.5-Math.cos(e*Math.PI)/2}};bI.fx=J.prototype.init;bI.fx.step={};var N,ae,bR=/^(?:toggle|show|hide)$/,bJ=new RegExp("^(?:([+-])=|)("+aE+")([a-z%]*)$","i"),bP=/queueHooks$/,aG=[h],a2={"*":[function(e,ca){var cc=this.createTween(e,ca),b8=cc.cur(),b7=bJ.exec(ca),cb=b7&&b7[3]||(bI.cssNumber[e]?"":"px"),i=(bI.cssNumber[e]||cb!=="px"&&+b8)&&bJ.exec(bI.css(cc.elem,e)),b6=1,b9=20;if(i&&i[3]!==cb){cb=cb||i[3];b7=b7||[];i=+b8||1;do{b6=b6||".5";i=i/b6;bI.style(cc.elem,e,i+cb)}while(b6!==(b6=cc.cur()/b8)&&b6!==1&&--b9)}if(b7){i=cc.start=+i||+b8||0;cc.unit=cb;cc.end=b7[1]?i+(b7[1]+1)*b7[2]:+b7[2]}return cc}]};function bn(){setTimeout(function(){N=undefined});return(N=bI.now())}function bH(b7,b9){var b8,e={height:b7},b6=0;b9=b9?1:0;for(;b6<4;b6+=2-b9){b8=bT[b6];e["margin"+b8]=e["padding"+b8]=b7}if(b9){e.opacity=e.width=b7}return e}function bd(b8,ca,b7){var i,b9=(a2[ca]||[]).concat(a2["*"]),e=0,b6=b9.length;for(;e
    a";i=b8.getElementsByTagName("a")[0];e=n.createElement("select");b7=e.appendChild(n.createElement("option"));b6=b8.getElementsByTagName("input")[0];i.style.cssText="top:1px";D.getSetAttribute=b8.className!=="t";D.style=/top/.test(i.getAttribute("style"));D.hrefNormalized=i.getAttribute("href")==="/a";D.checkOn=!!b6.value;D.optSelected=b7.selected;D.enctype=!!n.createElement("form").enctype;e.disabled=true;D.optDisabled=!b7.disabled;b6=n.createElement("input");b6.setAttribute("value","");D.input=b6.getAttribute("value")==="";b6.value="t";b6.setAttribute("type","radio");D.radioValue=b6.value==="t"})();var al=/\r/g;bI.fn.extend({val:function(b7){var e,i,b8,b6=this[0];if(!arguments.length){if(b6){e=bI.valHooks[b6.type]||bI.valHooks[b6.nodeName.toLowerCase()];if(e&&"get" in e&&(i=e.get(b6,"value"))!==undefined){return i}i=b6.value;return typeof i==="string"?i.replace(al,""):i==null?"":i}return}b8=bI.isFunction(b7);return this.each(function(b9){var ca;if(this.nodeType!==1){return}if(b8){ca=b7.call(this,b9,bI(this).val())}else{ca=b7}if(ca==null){ca=""}else{if(typeof ca==="number"){ca+=""}else{if(bI.isArray(ca)){ca=bI.map(ca,function(cb){return cb==null?"":cb+""})}}}e=bI.valHooks[this.type]||bI.valHooks[this.nodeName.toLowerCase()];if(!e||!("set" in e)||e.set(this,ca,"value")===undefined){this.value=ca}})}});bI.extend({valHooks:{option:{get:function(e){var i=bI.find.attr(e,"value");return i!=null?i:bI.trim(bI.text(e))}},select:{get:function(e){var cb,b7,cd=e.options,b9=e.selectedIndex,b8=e.type==="select-one"||b9<0,cc=b8?null:[],ca=b8?b9+1:cd.length,b6=b9<0?ca:b8?b9:0;for(;b6=0){try{b9.selected=cc=true}catch(b6){b9.scrollHeight}}else{b9.selected=false}}if(!cc){ca.selectedIndex=-1}return b7}}}});bI.each(["radio","checkbox"],function(){bI.valHooks[this]={set:function(e,i){if(bI.isArray(i)){return(e.checked=bI.inArray(bI(e).val(),i)>=0)}}};if(!D.checkOn){bI.valHooks[this].get=function(e){return e.getAttribute("value")===null?"on":e.value}}});var ba,b3,bO=bI.expr.attrHandle,aq=/^(?:checked|selected)$/i,bN=D.getSetAttribute,bF=D.input;bI.fn.extend({attr:function(e,i){return aB(this,bI.attr,e,i,arguments.length>1)},removeAttr:function(e){return this.each(function(){bI.removeAttr(this,e)})}});bI.extend({attr:function(b8,b7,b9){var e,b6,i=b8.nodeType;if(!b8||i===3||i===8||i===2){return}if(typeof b8.getAttribute===aC){return bI.prop(b8,b7,b9)}if(i!==1||!bI.isXMLDoc(b8)){b7=b7.toLowerCase();e=bI.attrHooks[b7]||(bI.expr.match.bool.test(b7)?b3:ba)}if(b9!==undefined){if(b9===null){bI.removeAttr(b8,b7)}else{if(e&&"set" in e&&(b6=e.set(b8,b9,b7))!==undefined){return b6}else{b8.setAttribute(b7,b9+"");return b9}}}else{if(e&&"get" in e&&(b6=e.get(b8,b7))!==null){return b6}else{b6=bI.find.attr(b8,b7);return b6==null?undefined:b6}}},removeAttr:function(b7,b9){var e,b8,b6=0,ca=b9&&b9.match(aF);if(ca&&b7.nodeType===1){while((e=ca[b6++])){b8=bI.propFix[e]||e;if(bI.expr.match.bool.test(e)){if(bF&&bN||!aq.test(e)){b7[b8]=false}else{b7[bI.camelCase("default-"+e)]=b7[b8]=false}}else{bI.attr(b7,e,"")}b7.removeAttribute(bN?e:b8)}}},attrHooks:{type:{set:function(e,i){if(!D.radioValue&&i==="radio"&&bI.nodeName(e,"input")){var b6=e.value;e.setAttribute("type",i);if(b6){e.value=b6}return i}}}}});b3={set:function(i,b6,e){if(b6===false){bI.removeAttr(i,e)}else{if(bF&&bN||!aq.test(e)){i.setAttribute(!bN&&bI.propFix[e]||e,e)}else{i[bI.camelCase("default-"+e)]=i[e]=true}}return e}};bI.each(bI.expr.match.bool.source.match(/\w+/g),function(b7,b6){var e=bO[b6]||bI.find.attr;bO[b6]=bF&&bN||!aq.test(b6)?function(b9,b8,cb){var i,ca;if(!cb){ca=bO[b8];bO[b8]=i;i=e(b9,b8,cb)!=null?b8.toLowerCase():null;bO[b8]=ca}return i}:function(b8,i,b9){if(!b9){return b8[bI.camelCase("default-"+i)]?i.toLowerCase():null}}});if(!bF||!bN){bI.attrHooks.value={set:function(i,b6,e){if(bI.nodeName(i,"input")){i.defaultValue=b6}else{return ba&&ba.set(i,b6,e)}}}}if(!bN){ba={set:function(b6,b7,i){var e=b6.getAttributeNode(i);if(!e){b6.setAttributeNode((e=b6.ownerDocument.createAttribute(i)))}e.value=b7+="";if(i==="value"||b7===b6.getAttribute(i)){return b7}}};bO.id=bO.name=bO.coords=function(b6,i,b7){var e;if(!b7){return(e=b6.getAttributeNode(i))&&e.value!==""?e.value:null}};bI.valHooks.button={get:function(b6,i){var e=b6.getAttributeNode(i);if(e&&e.specified){return e.value}},set:ba.set};bI.attrHooks.contenteditable={set:function(i,b6,e){ba.set(i,b6===""?false:b6,e)}};bI.each(["width","height"],function(b6,e){bI.attrHooks[e]={set:function(i,b7){if(b7===""){i.setAttribute(e,"auto");return b7}}}})}if(!D.style){bI.attrHooks.style={get:function(e){return e.style.cssText||undefined},set:function(e,i){return(e.style.cssText=i+"")}}}var aJ=/^(?:input|select|textarea|button|object)$/i,F=/^(?:a|area)$/i;bI.fn.extend({prop:function(e,i){return aB(this,bI.prop,e,i,arguments.length>1)},removeProp:function(e){e=bI.propFix[e]||e;return this.each(function(){try{this[e]=undefined;delete this[e]}catch(i){}})}});bI.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(b9,b7,ca){var b6,e,b8,i=b9.nodeType;if(!b9||i===3||i===8||i===2){return}b8=i!==1||!bI.isXMLDoc(b9);if(b8){b7=bI.propFix[b7]||b7;e=bI.propHooks[b7]}if(ca!==undefined){return e&&"set" in e&&(b6=e.set(b9,ca,b7))!==undefined?b6:(b9[b7]=ca)}else{return e&&"get" in e&&(b6=e.get(b9,b7))!==null?b6:b9[b7]}},propHooks:{tabIndex:{get:function(i){var e=bI.find.attr(i,"tabindex");return e?parseInt(e,10):aJ.test(i.nodeName)||F.test(i.nodeName)&&i.href?0:-1}}}});if(!D.hrefNormalized){bI.each(["href","src"],function(b6,e){bI.propHooks[e]={get:function(i){return i.getAttribute(e,4)}}})}if(!D.optSelected){bI.propHooks.selected={get:function(i){var e=i.parentNode;if(e){e.selectedIndex;if(e.parentNode){e.parentNode.selectedIndex}}return null}}}bI.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){bI.propFix[this.toLowerCase()]=this});if(!D.enctype){bI.propFix.enctype="encoding"}var bL=/[\t\r\n\f]/g;bI.fn.extend({addClass:function(cd){var b7,b6,ce,cb,b8,e,b9=0,ca=this.length,cc=typeof cd==="string"&&cd;if(bI.isFunction(cd)){return this.each(function(i){bI(this).addClass(cd.call(this,i,this.className))})}if(cc){b7=(cd||"").match(aF)||[];for(;b9=0){ce=ce.replace(" "+cb+" "," ")}}e=cd?bI.trim(ce):"";if(b6.className!==e){b6.className=e}}}}return this},toggleClass:function(b6,e){var i=typeof b6;if(typeof e==="boolean"&&i==="string"){return e?this.addClass(b6):this.removeClass(b6)}if(bI.isFunction(b6)){return this.each(function(b7){bI(this).toggleClass(b6.call(this,b7,this.className,e),e)})}return this.each(function(){if(i==="string"){var b9,b8=0,b7=bI(this),ca=b6.match(aF)||[];while((b9=ca[b8++])){if(b7.hasClass(b9)){b7.removeClass(b9)}else{b7.addClass(b9)}}}else{if(i===aC||i==="boolean"){if(this.className){bI._data(this,"__className__",this.className)}this.className=this.className||b6===false?"":bI._data(this,"__className__")||""}}})},hasClass:function(e){var b8=" "+e+" ",b7=0,b6=this.length;for(;b7=0){return true}}return false}});bI.each(("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu").split(" "),function(b6,e){bI.fn[e]=function(b7,i){return arguments.length>0?this.on(e,null,b7,i):this.trigger(e)}});bI.fn.extend({hover:function(e,i){return this.mouseenter(e).mouseleave(i||e)},bind:function(e,b6,i){return this.on(e,null,b6,i)},unbind:function(e,i){return this.off(e,null,i)},delegate:function(e,i,b7,b6){return this.on(i,e,b7,b6)},undelegate:function(e,i,b6){return arguments.length===1?this.off(e,"**"):this.off(i,e||"**",b6)}});var bp=bI.now();var bQ=(/\?/);var a1=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;bI.parseJSON=function(e){if(a5.JSON&&a5.JSON.parse){return a5.JSON.parse(e+"")}var b7,b6=null,i=bI.trim(e+"");return i&&!bI.trim(i.replace(a1,function(ca,b8,b9,cb){if(b7&&b8){b6=0}if(b6===0){return ca}b7=b9||b8;b6+=!cb-!b9;return""}))?(Function("return "+i))():bI.error("Invalid JSON: "+e)};bI.parseXML=function(b7){var i,b6;if(!b7||typeof b7!=="string"){return null}try{if(a5.DOMParser){b6=new DOMParser();i=b6.parseFromString(b7,"text/xml")}else{i=new ActiveXObject("Microsoft.XMLDOM");i.async="false";i.loadXML(b7)}}catch(b8){i=undefined}if(!i||!i.documentElement||i.getElementsByTagName("parsererror").length){bI.error("Invalid XML: "+b7)}return i};var b4,aa,ap=/#.*$/,R=/([?&])_=[^&]*/,ah=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,C=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,r=/^(?:GET|HEAD)$/,aK=/^\/\//,aV=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,w={},a9={},aX="*/".concat("*");try{aa=location.href}catch(bi){aa=n.createElement("a");aa.href="";aa=aa.href}b4=aV.exec(aa.toLowerCase())||[];function bK(e){return function(b9,ca){if(typeof b9!=="string"){ca=b9;b9="*"}var b6,b7=0,b8=b9.toLowerCase().match(aF)||[];if(bI.isFunction(ca)){while((b6=b8[b7++])){if(b6.charAt(0)==="+"){b6=b6.slice(1)||"*";(e[b6]=e[b6]||[]).unshift(ca)}else{(e[b6]=e[b6]||[]).push(ca)}}}}}function p(e,b6,ca,b7){var i={},b8=(e===a9);function b9(cb){var cc;i[cb]=true;bI.each(e[cb]||[],function(ce,cd){var cf=cd(b6,ca,b7);if(typeof cf==="string"&&!b8&&!i[cf]){b6.dataTypes.unshift(cf);b9(cf);return false}else{if(b8){return !(cc=cf)}}});return cc}return b9(b6.dataTypes[0])||!i["*"]&&b9("*")}function t(b6,b7){var e,i,b8=bI.ajaxSettings.flatOptions||{};for(i in b7){if(b7[i]!==undefined){(b8[i]?b6:(e||(e={})))[i]=b7[i]}}if(e){bI.extend(true,b6,e)}return b6}function g(cc,cb,b8){var e,b7,b6,b9,i=cc.contents,ca=cc.dataTypes;while(ca[0]==="*"){ca.shift();if(b7===undefined){b7=cc.mimeType||cb.getResponseHeader("Content-Type")}}if(b7){for(b9 in i){if(i[b9]&&i[b9].test(b7)){ca.unshift(b9);break}}}if(ca[0] in b8){b6=ca[0]}else{for(b9 in b8){if(!ca[0]||cc.converters[b9+" "+ca[0]]){b6=b9;break}if(!e){e=b9}}b6=b6||e}if(b6){if(b6!==ca[0]){ca.unshift(b6)}return b8[b6]}}function ag(cg,b8,cd,b6){var i,cb,ce,b9,b7,cf={},cc=cg.dataTypes.slice();if(cc[1]){for(ce in cg.converters){cf[ce.toLowerCase()]=cg.converters[ce]}}cb=cc.shift();while(cb){if(cg.responseFields[cb]){cd[cg.responseFields[cb]]=b8}if(!b7&&b6&&cg.dataFilter){b8=cg.dataFilter(b8,cg.dataType)}b7=cb;cb=cc.shift();if(cb){if(cb==="*"){cb=b7}else{if(b7!=="*"&&b7!==cb){ce=cf[b7+" "+cb]||cf["* "+cb];if(!ce){for(i in cf){b9=i.split(" ");if(b9[1]===cb){ce=cf[b7+" "+b9[0]]||cf["* "+b9[0]];if(ce){if(ce===true){ce=cf[i]}else{if(cf[i]!==true){cb=b9[0];cc.unshift(b9[1])}}break}}}}if(ce!==true){if(ce&&cg["throws"]){b8=ce(b8)}else{try{b8=ce(b8)}catch(ca){return{state:"parsererror",error:ce?ca:"No conversion from "+b7+" to "+cb}}}}}}}}return{state:"success",data:b8}}bI.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:aa,type:"GET",isLocal:C.test(b4[1]),global:true,processData:true,async:true,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":aX,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":true,"text json":bI.parseJSON,"text xml":bI.parseXML},flatOptions:{url:true,context:true}},ajaxSetup:function(i,e){return e?t(t(i,bI.ajaxSettings),e):t(bI.ajaxSettings,i)},ajaxPrefilter:bK(w),ajaxTransport:bK(a9),ajax:function(ca,b7){if(typeof ca==="object"){b7=ca;ca=undefined}b7=b7||{};var cj,cl,cb,cq,cf,b6,cm,b8,ce=bI.ajaxSetup({},b7),cs=ce.context||ce,ch=ce.context&&(cs.nodeType||cs.jquery)?bI(cs):bI.event,cr=bI.Deferred(),co=bI.Callbacks("once memory"),cc=ce.statusCode||{},ci={},cp={},b9=0,cd="canceled",ck={readyState:0,getResponseHeader:function(i){var e;if(b9===2){if(!b8){b8={};while((e=ah.exec(cq))){b8[e[1].toLowerCase()]=e[2]}}e=b8[i.toLowerCase()]}return e==null?null:e},getAllResponseHeaders:function(){return b9===2?cq:null},setRequestHeader:function(i,ct){var e=i.toLowerCase();if(!b9){i=cp[e]=cp[e]||i;ci[i]=ct}return this},overrideMimeType:function(e){if(!b9){ce.mimeType=e}return this},statusCode:function(i){var e;if(i){if(b9<2){for(e in i){cc[e]=[cc[e],i[e]]}}else{ck.always(i[ck.status])}}return this},abort:function(i){var e=i||cd;if(cm){cm.abort(e)}cg(0,e);return this}};cr.promise(ck).complete=co.add;ck.success=ck.done;ck.error=ck.fail;ce.url=((ca||ce.url||aa)+"").replace(ap,"").replace(aK,b4[1]+"//");ce.type=b7.method||b7.type||ce.method||ce.type;ce.dataTypes=bI.trim(ce.dataType||"*").toLowerCase().match(aF)||[""];if(ce.crossDomain==null){cj=aV.exec(ce.url.toLowerCase());ce.crossDomain=!!(cj&&(cj[1]!==b4[1]||cj[2]!==b4[2]||(cj[3]||(cj[1]==="http:"?"80":"443"))!==(b4[3]||(b4[1]==="http:"?"80":"443"))))}if(ce.data&&ce.processData&&typeof ce.data!=="string"){ce.data=bI.param(ce.data,ce.traditional)}p(w,ce,b7,ck);if(b9===2){return ck}b6=bI.event&&ce.global;if(b6&&bI.active++===0){bI.event.trigger("ajaxStart")}ce.type=ce.type.toUpperCase();ce.hasContent=!r.test(ce.type);cb=ce.url;if(!ce.hasContent){if(ce.data){cb=(ce.url+=(bQ.test(cb)?"&":"?")+ce.data);delete ce.data}if(ce.cache===false){ce.url=R.test(cb)?cb.replace(R,"$1_="+bp++):cb+(bQ.test(cb)?"&":"?")+"_="+bp++}}if(ce.ifModified){if(bI.lastModified[cb]){ck.setRequestHeader("If-Modified-Since",bI.lastModified[cb])}if(bI.etag[cb]){ck.setRequestHeader("If-None-Match",bI.etag[cb])}}if(ce.data&&ce.hasContent&&ce.contentType!==false||b7.contentType){ck.setRequestHeader("Content-Type",ce.contentType)}ck.setRequestHeader("Accept",ce.dataTypes[0]&&ce.accepts[ce.dataTypes[0]]?ce.accepts[ce.dataTypes[0]]+(ce.dataTypes[0]!=="*"?", "+aX+"; q=0.01":""):ce.accepts["*"]);for(cl in ce.headers){ck.setRequestHeader(cl,ce.headers[cl])}if(ce.beforeSend&&(ce.beforeSend.call(cs,ck,ce)===false||b9===2)){return ck.abort()}cd="abort";for(cl in {success:1,error:1,complete:1}){ck[cl](ce[cl])}cm=p(a9,ce,b7,ck);if(!cm){cg(-1,"No Transport")}else{ck.readyState=1;if(b6){ch.trigger("ajaxSend",[ck,ce])}if(ce.async&&ce.timeout>0){cf=setTimeout(function(){ck.abort("timeout")},ce.timeout)}try{b9=1;cm.send(ci,cg)}catch(cn){if(b9<2){cg(-1,cn)}else{throw cn}}}function cg(cw,i,cx,cu){var e,cA,cy,cv,cz,ct=i;if(b9===2){return}b9=2;if(cf){clearTimeout(cf)}cm=undefined;cq=cu||"";ck.readyState=cw>0?4:0;e=cw>=200&&cw<300||cw===304;if(cx){cv=g(ce,ck,cx)}cv=ag(ce,cv,ck,e);if(e){if(ce.ifModified){cz=ck.getResponseHeader("Last-Modified");if(cz){bI.lastModified[cb]=cz}cz=ck.getResponseHeader("etag");if(cz){bI.etag[cb]=cz}}if(cw===204||ce.type==="HEAD"){ct="nocontent"}else{if(cw===304){ct="notmodified"}else{ct=cv.state;cA=cv.data;cy=cv.error;e=!cy}}}else{cy=ct;if(cw||!ct){ct="error";if(cw<0){cw=0}}}ck.status=cw;ck.statusText=(i||ct)+"";if(e){cr.resolveWith(cs,[cA,ct,ck])}else{cr.rejectWith(cs,[ck,ct,cy])}ck.statusCode(cc);cc=undefined;if(b6){ch.trigger(e?"ajaxSuccess":"ajaxError",[ck,ce,e?cA:cy])}co.fireWith(cs,[ck,ct]);if(b6){ch.trigger("ajaxComplete",[ck,ce]);if(!(--bI.active)){bI.event.trigger("ajaxStop")}}}return ck},getJSON:function(e,i,b6){return bI.get(e,i,b6,"json")},getScript:function(e,i){return bI.get(e,undefined,i,"script")}});bI.each(["get","post"],function(e,b6){bI[b6]=function(i,b8,b9,b7){if(bI.isFunction(b8)){b7=b7||b9;b9=b8;b8=undefined}return bI.ajax({url:i,type:b6,dataType:b7,data:b8,success:b9})}});bI._evalUrl=function(e){return bI.ajax({url:e,type:"GET",dataType:"script",async:false,global:false,"throws":true})};bI.fn.extend({wrapAll:function(e){if(bI.isFunction(e)){return this.each(function(b6){bI(this).wrapAll(e.call(this,b6))})}if(this[0]){var i=bI(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){i.insertBefore(this[0])}i.map(function(){var b6=this;while(b6.firstChild&&b6.firstChild.nodeType===1){b6=b6.firstChild}return b6}).append(this)}return this},wrapInner:function(e){if(bI.isFunction(e)){return this.each(function(b6){bI(this).wrapInner(e.call(this,b6))})}return this.each(function(){var i=bI(this),b6=i.contents();if(b6.length){b6.wrapAll(e)}else{i.append(e)}})},wrap:function(e){var i=bI.isFunction(e);return this.each(function(b6){bI(this).wrapAll(i?e.call(this,b6):e)})},unwrap:function(){return this.parent().each(function(){if(!bI.nodeName(this,"body")){bI(this).replaceWith(this.childNodes)}}).end()}});bI.expr.filters.hidden=function(e){return e.offsetWidth<=0&&e.offsetHeight<=0||(!D.reliableHiddenOffsets()&&((e.style&&e.style.display)||bI.css(e,"display"))==="none")};bI.expr.filters.visible=function(e){return !bI.expr.filters.hidden(e)};var bw=/%20/g,aS=/\[\]$/,X=/\r?\n/g,b=/^(?:submit|button|image|reset|file)$/i,au=/^(?:input|select|textarea|keygen)/i;function j(b6,b8,i,b7){var e;if(bI.isArray(b8)){bI.each(b8,function(ca,b9){if(i||aS.test(b6)){b7(b6,b9)}else{j(b6+"["+(typeof b9==="object"?ca:"")+"]",b9,i,b7)}})}else{if(!i&&bI.type(b8)==="object"){for(e in b8){j(b6+"["+e+"]",b8[e],i,b7)}}else{b7(b6,b8)}}}bI.param=function(e,b6){var b7,i=[],b8=function(b9,ca){ca=bI.isFunction(ca)?ca():(ca==null?"":ca);i[i.length]=encodeURIComponent(b9)+"="+encodeURIComponent(ca)};if(b6===undefined){b6=bI.ajaxSettings&&bI.ajaxSettings.traditional}if(bI.isArray(e)||(e.jquery&&!bI.isPlainObject(e))){bI.each(e,function(){b8(this.name,this.value)})}else{for(b7 in e){j(b7,e[b7],b6,b8)}}return i.join("&").replace(bw,"+")};bI.fn.extend({serialize:function(){return bI.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=bI.prop(this,"elements");return e?bI.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!bI(this).is(":disabled")&&au.test(this.nodeName)&&!b.test(e)&&(this.checked||!aM.test(e))}).map(function(e,b6){var b7=bI(this).val();return b7==null?null:bI.isArray(b7)?bI.map(b7,function(i){return{name:b6.name,value:i.replace(X,"\r\n")}}):{name:b6.name,value:b7.replace(X,"\r\n")}}).get()}});bI.ajaxSettings.xhr=a5.ActiveXObject!==undefined?function(){return !this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&bE()||bg()}:bE;var aA=0,aj={},ay=bI.ajaxSettings.xhr();if(a5.attachEvent){a5.attachEvent("onunload",function(){for(var e in aj){aj[e](undefined,true)}})}D.cors=!!ay&&("withCredentials" in ay);ay=D.ajax=!!ay;if(ay){bI.ajaxTransport(function(e){if(!e.crossDomain||D.cors){var i;return{send:function(b9,b6){var b7,b8=e.xhr(),ca=++aA;b8.open(e.type,e.url,e.async,e.username,e.password);if(e.xhrFields){for(b7 in e.xhrFields){b8[b7]=e.xhrFields[b7]}}if(e.mimeType&&b8.overrideMimeType){b8.overrideMimeType(e.mimeType)}if(!e.crossDomain&&!b9["X-Requested-With"]){b9["X-Requested-With"]="XMLHttpRequest"}for(b7 in b9){if(b9[b7]!==undefined){b8.setRequestHeader(b7,b9[b7]+"")}}b8.send((e.hasContent&&e.data)||null);i=function(cd,cc){var cb,cg,ce;if(i&&(cc||b8.readyState===4)){delete aj[ca];i=undefined;b8.onreadystatechange=bI.noop;if(cc){if(b8.readyState!==4){b8.abort()}}else{ce={};cb=b8.status;if(typeof b8.responseText==="string"){ce.text=b8.responseText}try{cg=b8.statusText}catch(cf){cg=""}if(!cb&&e.isLocal&&!e.crossDomain){cb=ce.text?200:404}else{if(cb===1223){cb=204}}}}if(ce){b6(cb,cg,ce,b8.getAllResponseHeaders())}};if(!e.async){i()}else{if(b8.readyState===4){setTimeout(i)}else{b8.onreadystatechange=aj[ca]=i}}},abort:function(){if(i){i(undefined,true)}}}}})}function bE(){try{return new a5.XMLHttpRequest()}catch(i){}}function bg(){try{return new a5.ActiveXObject("Microsoft.XMLHTTP")}catch(i){}}bI.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){bI.globalEval(e);return e}}});bI.ajaxPrefilter("script",function(e){if(e.cache===undefined){e.cache=false}if(e.crossDomain){e.type="GET";e.global=false}});bI.ajaxTransport("script",function(b6){if(b6.crossDomain){var e,i=n.head||bI("head")[0]||n.documentElement;return{send:function(b7,b8){e=n.createElement("script");e.async=true;if(b6.scriptCharset){e.charset=b6.scriptCharset}e.src=b6.url;e.onload=e.onreadystatechange=function(ca,b9){if(b9||!e.readyState||/loaded|complete/.test(e.readyState)){e.onload=e.onreadystatechange=null;if(e.parentNode){e.parentNode.removeChild(e)}e=null;if(!b9){b8(200,"success")}}};i.insertBefore(e,i.firstChild)},abort:function(){if(e){e.onload(undefined,true)}}}}});var bs=[],a8=/(=)\?(?=&|$)|\?\?/;bI.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=bs.pop()||(bI.expando+"_"+(bp++));this[e]=true;return e}});bI.ajaxPrefilter("json jsonp",function(b7,e,b8){var ca,i,b6,b9=b7.jsonp!==false&&(a8.test(b7.url)?"url":typeof b7.data==="string"&&!(b7.contentType||"").indexOf("application/x-www-form-urlencoded")&&a8.test(b7.data)&&"data");if(b9||b7.dataTypes[0]==="jsonp"){ca=b7.jsonpCallback=bI.isFunction(b7.jsonpCallback)?b7.jsonpCallback():b7.jsonpCallback;if(b9){b7[b9]=b7[b9].replace(a8,"$1"+ca)}else{if(b7.jsonp!==false){b7.url+=(bQ.test(b7.url)?"&":"?")+b7.jsonp+"="+ca}}b7.converters["script json"]=function(){if(!b6){bI.error(ca+" was not called")}return b6[0]};b7.dataTypes[0]="json";i=a5[ca];a5[ca]=function(){b6=arguments};b8.always(function(){a5[ca]=i;if(b7[ca]){b7.jsonpCallback=e.jsonpCallback;bs.push(ca)}if(b6&&bI.isFunction(i)){i(b6[0])}b6=i=undefined});return"script"}});bI.parseHTML=function(b8,b6,b7){if(!b8||typeof b8!=="string"){return null}if(typeof b6==="boolean"){b7=b6;b6=false}b6=b6||n;var i=a.exec(b8),e=!b7&&[];if(i){return[b6.createElement(i[1])]}i=bI.buildFragment([b8],b6,e);if(e&&e.length){bI(e).remove()}return bI.merge([],i.childNodes)};var b1=bI.fn.load;bI.fn.load=function(b7,ca,cb){if(typeof b7!=="string"&&b1){return b1.apply(this,arguments)}var e,b6,b8,i=this,b9=b7.indexOf(" ");if(b9>=0){e=bI.trim(b7.slice(b9,b7.length));b7=b7.slice(0,b9)}if(bI.isFunction(ca)){cb=ca;ca=undefined}else{if(ca&&typeof ca==="object"){b8="POST"}}if(i.length>0){bI.ajax({url:b7,type:b8,dataType:"html",data:ca}).done(function(cc){b6=arguments;i.html(e?bI("
    ").append(bI.parseHTML(cc)).find(e):cc)}).complete(cb&&function(cd,cc){i.each(cb,b6||[cd.responseText,cc,cd])})}return this};bI.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,b6){bI.fn[b6]=function(i){return this.on(b6,i)}});bI.expr.filters.animated=function(e){return bI.grep(bI.timers,function(i){return e===i.elem}).length};var bX=a5.document.documentElement;function br(e){return bI.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}bI.offset={setOffset:function(b7,ch,cb){var cd,ca,e,b8,b6,cf,cg,cc=bI.css(b7,"position"),b9=bI(b7),ce={};if(cc==="static"){b7.style.position="relative"}b6=b9.offset();e=bI.css(b7,"top");cf=bI.css(b7,"left");cg=(cc==="absolute"||cc==="fixed")&&bI.inArray("auto",[e,cf])>-1;if(cg){cd=b9.position();b8=cd.top;ca=cd.left}else{b8=parseFloat(e)||0;ca=parseFloat(cf)||0}if(bI.isFunction(ch)){ch=ch.call(b7,cb,b6)}if(ch.top!=null){ce.top=(ch.top-b6.top)+b8}if(ch.left!=null){ce.left=(ch.left-b6.left)+ca}if("using" in ch){ch.using.call(b7,ce)}else{b9.css(ce)}}};bI.fn.extend({offset:function(i){if(arguments.length){return i===undefined?this:this.each(function(ca){bI.offset.setOffset(this,i,ca)})}var e,b9,b7={top:0,left:0},b6=this[0],b8=b6&&b6.ownerDocument;if(!b8){return}e=b8.documentElement;if(!bI.contains(e,b6)){return b7}if(typeof b6.getBoundingClientRect!==aC){b7=b6.getBoundingClientRect()}b9=br(b8);return{top:b7.top+(b9.pageYOffset||e.scrollTop)-(e.clientTop||0),left:b7.left+(b9.pageXOffset||e.scrollLeft)-(e.clientLeft||0)}},position:function(){if(!this[0]){return}var b6,b7,e={top:0,left:0},i=this[0];if(bI.css(i,"position")==="fixed"){b7=i.getBoundingClientRect()}else{b6=this.offsetParent();b7=this.offset();if(!bI.nodeName(b6[0],"html")){e=b6.offset()}e.top+=bI.css(b6[0],"borderTopWidth",true);e.left+=bI.css(b6[0],"borderLeftWidth",true)}return{top:b7.top-e.top-bI.css(i,"marginTop",true),left:b7.left-e.left-bI.css(i,"marginLeft",true)}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||bX;while(e&&(!bI.nodeName(e,"html")&&bI.css(e,"position")==="static")){e=e.offsetParent}return e||bX})}});bI.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(b6,i){var e=/Y/.test(i);bI.fn[b6]=function(b7){return aB(this,function(b8,cb,ca){var b9=br(b8);if(ca===undefined){return b9?(i in b9)?b9[i]:b9.document.documentElement[cb]:b8[cb]}if(b9){b9.scrollTo(!e?ca:bI(b9).scrollLeft(),e?ca:bI(b9).scrollTop())}else{b8[cb]=ca}},b6,b7,arguments.length,null)}});bI.each(["top","left"],function(e,b6){bI.cssHooks[b6]=a7(D.pixelPosition,function(b7,i){if(i){i=G(b7,b6);return Y.test(i)?bI(b7).position()[b6]+"px":i}})});bI.each({Height:"height",Width:"width"},function(e,i){bI.each({padding:"inner"+e,content:i,"":"outer"+e},function(b6,b7){bI.fn[b7]=function(cb,ca){var b9=arguments.length&&(b6||typeof cb!=="boolean"),b8=b6||(cb===true||ca===true?"margin":"border");return aB(this,function(cd,cc,ce){var cf;if(bI.isWindow(cd)){return cd.document.documentElement["client"+e]}if(cd.nodeType===9){cf=cd.documentElement;return Math.max(cd.body["scroll"+e],cf["scroll"+e],cd.body["offset"+e],cf["offset"+e],cf["client"+e])}return ce===undefined?bI.css(cd,cc,b8):bI.style(cd,cc,ce,b8)},i,b9?cb:undefined,b9,null)}})});bI.fn.size=function(){return this.length};bI.fn.andSelf=bI.fn.addBack;if(typeof define==="function"&&define.amd){define("jquery",[],function(){return bI})}var bk=a5.jQuery,I=a5.$;bI.noConflict=function(e){if(a5.$===bI){a5.$=I}if(e&&a5.jQuery===bI){a5.jQuery=bk}return bI};if(typeof av===aC){a5.jQuery=a5.$=bI}return bI}));!function(a){a(function(){a.support.transition=(function(){var b=(function(){var e=document.createElement("bootstrap"),d={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"},c;for(c in d){if(e.style[c]!==undefined){return d[c]}}}());return b&&{end:b}})()})}(window.jQuery);!function(d){var c='[data-dismiss="alert"]',b=function(e){d(e).on("click",c,this.close)};b.prototype.close=function(j){var i=d(this),g=i.attr("data-target"),h;if(!g){g=i.attr("href");g=g&&g.replace(/.*(?=#[^\s]*$)/,"")}h=d(g);j&&j.preventDefault();h.length||(h=i.hasClass("alert")?i:i.parent());h.trigger(j=d.Event("close"));if(j.isDefaultPrevented()){return}h.removeClass("in");function f(){h.trigger("closed").remove()}d.support.transition&&h.hasClass("fade")?h.on(d.support.transition.end,f):f()};var a=d.fn.alert;d.fn.alert=function(e){return this.each(function(){var g=d(this),f=g.data("alert");if(!f){g.data("alert",(f=new b(this)))}if(typeof e=="string"){f[e].call(g)}})};d.fn.alert.Constructor=b;d.fn.alert.noConflict=function(){d.fn.alert=a;return this};d(document).on("click.alert.data-api",c,b.prototype.close)}(window.jQuery);!function(c){var b=function(e,d){this.$element=c(e);this.options=c.extend({},c.fn.button.defaults,d)};b.prototype.setState=function(g){var i="disabled",e=this.$element,f=e.data(),h=e.is("input")?"val":"html";g=g+"Text";f.resetText||e.data("resetText",e[h]());e[h](f[g]||this.options[g]);setTimeout(function(){g=="loadingText"?e.addClass(i).attr(i,i):e.removeClass(i).removeAttr(i)},0)};b.prototype.toggle=function(){var d=this.$element.closest('[data-toggle="buttons-radio"]');d&&d.find(".active").removeClass("active");this.$element.toggleClass("active")};var a=c.fn.button;c.fn.button=function(d){return this.each(function(){var g=c(this),f=g.data("button"),e=typeof d=="object"&&d;if(!f){g.data("button",(f=new b(this,e)))}if(d=="toggle"){f.toggle()}else{if(d){f.setState(d)}}})};c.fn.button.defaults={loadingText:"loading..."};c.fn.button.Constructor=b;c.fn.button.noConflict=function(){c.fn.button=a;return this};c(document).on("click.button.data-api","[data-toggle^=button]",function(f){var d=c(f.target);if(!d.hasClass("btn")){d=d.closest(".btn")}d.button("toggle")})}(window.jQuery);!function(b){var c=function(e,d){this.$element=b(e);this.$indicators=this.$element.find(".carousel-indicators");this.options=d;this.options.pause=="hover"&&this.$element.on("mouseenter",b.proxy(this.pause,this)).on("mouseleave",b.proxy(this.cycle,this))};c.prototype={cycle:function(d){if(!d){this.paused=false}if(this.interval){clearInterval(this.interval)}this.options.interval&&!this.paused&&(this.interval=setInterval(b.proxy(this.next,this),this.options.interval));return this},getActiveIndex:function(){this.$active=this.$element.find(".item.active");this.$items=this.$active.parent().children();return this.$items.index(this.$active)},to:function(f){var d=this.getActiveIndex(),e=this;if(f>(this.$items.length-1)||f<0){return}if(this.sliding){return this.$element.one("slid",function(){e.to(f)})}if(d==f){return this.pause().cycle()}return this.slide(f>d?"next":"prev",b(this.$items[f]))},pause:function(d){if(!d){this.paused=true}if(this.$element.find(".next, .prev").length&&b.support.transition.end){this.$element.trigger(b.support.transition.end);this.cycle(true)}clearInterval(this.interval);this.interval=null;return this},next:function(){if(this.sliding){return}return this.slide("next")},prev:function(){if(this.sliding){return}return this.slide("prev")},slide:function(k,f){var m=this.$element.find(".item.active"),d=f||m[k](),j=this.interval,l=k=="next"?"left":"right",g=k=="next"?"first":"last",h=this,i;this.sliding=true;j&&this.pause();d=d.length?d:this.$element.find(".item")[g]();i=b.Event("slide",{relatedTarget:d[0],direction:l});if(d.hasClass("active")){return}if(this.$indicators.length){this.$indicators.find(".active").removeClass("active");this.$element.one("slid",function(){var e=b(h.$indicators.children()[h.getActiveIndex()]);e&&e.addClass("active")})}if(b.support.transition&&this.$element.hasClass("slide")){this.$element.trigger(i);if(i.isDefaultPrevented()){return}d.addClass(k);d[0].offsetWidth;m.addClass(l);d.addClass(l);this.$element.one(b.support.transition.end,function(){d.removeClass([k,l].join(" ")).addClass("active");m.removeClass(["active",l].join(" "));h.sliding=false;setTimeout(function(){h.$element.trigger("slid")},0)})}else{this.$element.trigger(i);if(i.isDefaultPrevented()){return}m.removeClass("active");d.addClass("active");this.sliding=false;this.$element.trigger("slid")}j&&this.cycle();return this}};var a=b.fn.carousel;b.fn.carousel=function(d){return this.each(function(){var h=b(this),g=h.data("carousel"),e=b.extend({},b.fn.carousel.defaults,typeof d=="object"&&d),f=typeof d=="string"?d:e.slide;if(!g){h.data("carousel",(g=new c(this,e)))}if(typeof d=="number"){g.to(d)}else{if(f){g[f]()}else{if(e.interval){g.pause().cycle()}}}})};b.fn.carousel.defaults={interval:5000,pause:"hover"};b.fn.carousel.Constructor=c;b.fn.carousel.noConflict=function(){b.fn.carousel=a;return this};b(document).on("click.carousel.data-api","[data-slide], [data-slide-to]",function(j){var i=b(this),f,d=b(i.attr("data-target")||(f=i.attr("href"))&&f.replace(/.*(?=#[^\s]+$)/,"")),g=b.extend({},d.data(),i.data()),h;d.carousel(g);if(h=i.attr("data-slide-to")){d.data("carousel").pause().to(h).cycle()}j.preventDefault()})}(window.jQuery);!function(b){var c=function(e,d){this.$element=b(e);this.options=b.extend({},b.fn.collapse.defaults,d);if(this.options.parent){this.$parent=b(this.options.parent)}this.options.toggle&&this.toggle()};c.prototype={constructor:c,dimension:function(){var d=this.$element.hasClass("width");return d?"width":"height"},show:function(){var g,d,f,e;if(this.transitioning||this.$element.hasClass("in")){return}g=this.dimension();d=b.camelCase(["scroll",g].join("-"));f=this.$parent&&this.$parent.find("> .accordion-group > .in");if(f&&f.length){e=f.data("collapse");if(e&&e.transitioning){return}f.collapse("hide");e||f.data("collapse",null)}this.$element[g](0);this.transition("addClass",b.Event("show"),"shown");b.support.transition&&this.$element[g](this.$element[0][d])},hide:function(){var d;if(this.transitioning||!this.$element.hasClass("in")){return}d=this.dimension();this.reset(this.$element[d]());this.transition("removeClass",b.Event("hide"),"hidden");this.$element[d](0)},reset:function(d){var e=this.dimension();this.$element.removeClass("collapse")[e](d||"auto")[0].offsetWidth;this.$element[d!==null?"addClass":"removeClass"]("collapse");return this},transition:function(h,e,f){var g=this,d=function(){if(e.type=="show"){g.reset()}g.transitioning=0;g.$element.trigger(f)};this.$element.trigger(e);if(e.isDefaultPrevented()){return}this.transitioning=1;this.$element[h]("in");b.support.transition&&this.$element.hasClass("collapse")?this.$element.one(b.support.transition.end,d):d()},toggle:function(){this[this.$element.hasClass("in")?"hide":"show"]()}};var a=b.fn.collapse;b.fn.collapse=function(d){return this.each(function(){var g=b(this),f=g.data("collapse"),e=b.extend({},b.fn.collapse.defaults,g.data(),typeof d=="object"&&d);if(!f){g.data("collapse",(f=new c(this,e)))}if(typeof d=="string"){f[d]()}})};b.fn.collapse.defaults={toggle:true};b.fn.collapse.Constructor=c;b.fn.collapse.noConflict=function(){b.fn.collapse=a;return this};b(document).on("click.collapse.data-api","[data-toggle=collapse]",function(i){var h=b(this),d,g=h.attr("data-target")||i.preventDefault()||(d=h.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""),f=b(g).data("collapse")?"toggle":h.data();h[b(g).hasClass("in")?"addClass":"removeClass"]("collapsed");b(g).collapse(f)})}(window.jQuery);!function(f){var b="[data-toggle=dropdown]",a=function(h){var g=f(h).on("click.dropdown.data-api",this.toggle);f("html").on("click.dropdown.data-api",function(){g.parent().removeClass("open")})};a.prototype={constructor:a,toggle:function(j){var i=f(this),h,g;if(i.is(".disabled, :disabled")){return}h=e(i);g=h.hasClass("open");d();if(!g){if("ontouchstart" in document.documentElement){f('