Merge branch 'hotfix/1.9.1'
This commit is contained in:
commit
88dd85a575
162 changed files with 2646 additions and 5774 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
|
@ -65,3 +65,5 @@ npm-debug.log
|
||||||
#Sublime project files
|
#Sublime project files
|
||||||
*.sublime-project
|
*.sublime-project
|
||||||
*.sublime-workspace
|
*.sublime-workspace
|
||||||
|
sync-backend.ps1
|
||||||
|
sync-frontend.ps1
|
||||||
|
|
|
||||||
|
|
@ -5,16 +5,12 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ru.micord.ervu.lkrp</groupId>
|
<groupId>ru.micord.ervu.lkrp</groupId>
|
||||||
<artifactId>ul</artifactId>
|
<artifactId>ul</artifactId>
|
||||||
<version>1.9.1</version>
|
<version>1.9.1-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
<groupId>ru.micord.ervu.lkrp.ul</groupId>
|
<groupId>ru.micord.ervu.lkrp.ul</groupId>
|
||||||
<artifactId>backend</artifactId>
|
<artifactId>backend</artifactId>
|
||||||
<packaging>war</packaging>
|
<packaging>war</packaging>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<dependency>
|
|
||||||
<groupId>org.springframework.security</groupId>
|
|
||||||
<artifactId>spring-security-jwt</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>io.jsonwebtoken</groupId>
|
<groupId>io.jsonwebtoken</groupId>
|
||||||
<artifactId>jjwt-api</artifactId>
|
<artifactId>jjwt-api</artifactId>
|
||||||
|
|
@ -33,23 +29,10 @@
|
||||||
<artifactId>resources</artifactId>
|
<artifactId>resources</artifactId>
|
||||||
<scope>runtime</scope>
|
<scope>runtime</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>ru.cg.webbpm.modules.reporting.reporting-jasper</groupId>
|
|
||||||
<artifactId>reporting-jasper-fonts</artifactId>
|
|
||||||
<scope>runtime</scope>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.ocpsoft.prettytime</groupId>
|
|
||||||
<artifactId>prettytime</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.jooq</groupId>
|
<groupId>org.jooq</groupId>
|
||||||
<artifactId>jooq</artifactId>
|
<artifactId>jooq</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>org.apache.santuario</groupId>
|
|
||||||
<artifactId>xmlsec</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>javax.servlet</groupId>
|
<groupId>javax.servlet</groupId>
|
||||||
<artifactId>javax.servlet-api</artifactId>
|
<artifactId>javax.servlet-api</artifactId>
|
||||||
|
|
@ -139,6 +122,10 @@
|
||||||
<artifactId>database-impl</artifactId>
|
<artifactId>database-impl</artifactId>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>javax.annotation</groupId>
|
||||||
|
<artifactId>javax.annotation-api</artifactId>
|
||||||
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>ru.cg.webbpm.modules.jndi</groupId>
|
<groupId>ru.cg.webbpm.modules.jndi</groupId>
|
||||||
<artifactId>jndi-beans</artifactId>
|
<artifactId>jndi-beans</artifactId>
|
||||||
|
|
@ -147,51 +134,10 @@
|
||||||
<groupId>ru.cg.webbpm.modules.jndi</groupId>
|
<groupId>ru.cg.webbpm.modules.jndi</groupId>
|
||||||
<artifactId>jndi-inject</artifactId>
|
<artifactId>jndi-inject</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>com.sun.mail</groupId>
|
|
||||||
<artifactId>javax.mail</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>ru.cg.webbpm.modules.database</groupId>
|
|
||||||
<artifactId>database-test</artifactId>
|
|
||||||
<scope>test</scope>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>ru.cg.webbpm.modules</groupId>
|
<groupId>ru.cg.webbpm.modules</groupId>
|
||||||
<artifactId>standard-annotations</artifactId>
|
<artifactId>standard-annotations</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>ru.cg.webbpm.modules.core</groupId>
|
|
||||||
<artifactId>metrics</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>ru.cg.webbpm.modules.reporting</groupId>
|
|
||||||
<artifactId>reporting-api</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>ru.cg.webbpm.modules.reporting</groupId>
|
|
||||||
<artifactId>reporting-runtime-api</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>ru.cg.webbpm.modules.reporting</groupId>
|
|
||||||
<artifactId>reporting-runtime-impl</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>ru.cg.webbpm.modules.reporting.reporting-jasper</groupId>
|
|
||||||
<artifactId>reporting-jasper-impl</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>ru.cg.webbpm.modules.reporting.reporting-jasper</groupId>
|
|
||||||
<artifactId>reporting-jasper-runtime-impl</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>ru.cg.webbpm.modules.reporting.reporting-xdoc</groupId>
|
|
||||||
<artifactId>reporting-xdoc-impl</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>ru.cg.webbpm.modules.reporting.reporting-xdoc</groupId>
|
|
||||||
<artifactId>reporting-xdoc-runtime-impl</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.liquibase</groupId>
|
<groupId>org.liquibase</groupId>
|
||||||
<artifactId>liquibase-core</artifactId>
|
<artifactId>liquibase-core</artifactId>
|
||||||
|
|
@ -200,22 +146,6 @@
|
||||||
<groupId>ru.cg.webbpm.modules</groupId>
|
<groupId>ru.cg.webbpm.modules</groupId>
|
||||||
<artifactId>webkit-base</artifactId>
|
<artifactId>webkit-base</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>xerces</groupId>
|
|
||||||
<artifactId>xercesImpl</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>com.google.guava</groupId>
|
|
||||||
<artifactId>guava</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>ru.micord.fias</groupId>
|
|
||||||
<artifactId>client</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.apache.tika</groupId>
|
|
||||||
<artifactId>tika-core</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>net.javacrumbs.shedlock</groupId>
|
<groupId>net.javacrumbs.shedlock</groupId>
|
||||||
<artifactId>shedlock-spring</artifactId>
|
<artifactId>shedlock-spring</artifactId>
|
||||||
|
|
@ -244,6 +174,10 @@
|
||||||
<groupId>org.apache.logging.log4j</groupId>
|
<groupId>org.apache.logging.log4j</groupId>
|
||||||
<artifactId>log4j-web</artifactId>
|
<artifactId>log4j-web</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.postgresql</groupId>
|
||||||
|
<artifactId>postgresql</artifactId>
|
||||||
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.github.lookfirst</groupId>
|
<groupId>com.github.lookfirst</groupId>
|
||||||
<artifactId>sardine</artifactId>
|
<artifactId>sardine</artifactId>
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,13 @@
|
||||||
package ru.micord.ervu.kafka.controller;
|
package ru.micord.ervu.kafka.controller;
|
||||||
|
|
||||||
|
import java.lang.invoke.MethodHandles;
|
||||||
import javax.servlet.http.Cookie;
|
import javax.servlet.http.Cookie;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
import ervu.client.fileupload.WebDavClient;
|
import ervu.client.fileupload.WebDavClient;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.core.io.Resource;
|
import org.springframework.core.io.Resource;
|
||||||
|
|
@ -22,6 +25,7 @@ import ru.micord.ervu.security.webbpm.jwt.service.JwtTokenService;
|
||||||
*/
|
*/
|
||||||
@RestController
|
@RestController
|
||||||
public class ErvuKafkaController {
|
public class ErvuKafkaController {
|
||||||
|
private static final Logger LOGGER = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private ReplyingKafkaService replyingKafkaService;
|
private ReplyingKafkaService replyingKafkaService;
|
||||||
|
|
@ -56,7 +60,14 @@ public class ErvuKafkaController {
|
||||||
objectMapper.writeValueAsString(data)
|
objectMapper.writeValueAsString(data)
|
||||||
);
|
);
|
||||||
ExcerptResponse excerptResponse = objectMapper.readValue(kafkaResponse, ExcerptResponse.class);
|
ExcerptResponse excerptResponse = objectMapper.readValue(kafkaResponse, ExcerptResponse.class);
|
||||||
return webDavClient.webDavDownloadFile(excerptResponse.getFileUrl());
|
if (!excerptResponse.getSuccess()) {
|
||||||
|
throw new RuntimeException("Error with getting excerpt url " + excerptResponse.getMessage());
|
||||||
|
}
|
||||||
|
else if (excerptResponse.getData() == null || excerptResponse.getData().getFileUrl() == null
|
||||||
|
|| excerptResponse.getData().getFileUrl().isEmpty()) {
|
||||||
|
return ResponseEntity.noContent().build();
|
||||||
|
}
|
||||||
|
return webDavClient.webDavDownloadFile(excerptResponse.getData().getFileUrl());
|
||||||
}
|
}
|
||||||
catch (Exception e) {
|
catch (Exception e) {
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,31 @@
|
||||||
|
package ru.micord.ervu.kafka.model;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Eduard Tihomirov
|
||||||
|
*/
|
||||||
|
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||||
|
public class ExcerptData implements Serializable {
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
private String orgId;
|
||||||
|
private String fileUrl;
|
||||||
|
|
||||||
|
public String getOrgId() {
|
||||||
|
return orgId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setOrgId(String orgId) {
|
||||||
|
this.orgId = orgId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFileUrl() {
|
||||||
|
return fileUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFileUrl(String fileUrl) {
|
||||||
|
this.fileUrl = fileUrl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -9,24 +9,31 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||||
public class ExcerptResponse implements Serializable {
|
public class ExcerptResponse implements Serializable {
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
private boolean success;
|
||||||
|
private String message;
|
||||||
|
private ExcerptData data;
|
||||||
|
|
||||||
private String orgId;
|
public boolean getSuccess() {
|
||||||
|
return success;
|
||||||
private String fileUrl;
|
|
||||||
|
|
||||||
public String getOrgId() {
|
|
||||||
return orgId;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setOrgId(String orgId) {
|
public void setSuccess(boolean success) {
|
||||||
this.orgId = orgId;
|
this.success = success;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getFileUrl() {
|
public String getMessage() {
|
||||||
return fileUrl;
|
return message;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setFileUrl(String fileUrl) {
|
public void setMessage(String message) {
|
||||||
this.fileUrl = fileUrl;
|
this.message = message;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ExcerptData getData() {
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setData(ExcerptData data) {
|
||||||
|
this.data = data;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
package ru.micord.ervu.property.grid;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author gulnaz
|
||||||
|
*/
|
||||||
|
public enum FilterType {
|
||||||
|
TEXT,
|
||||||
|
DATE,
|
||||||
|
NUMBER,
|
||||||
|
SET
|
||||||
|
}
|
||||||
|
|
@ -7,4 +7,5 @@ public class StaticColumn {
|
||||||
|
|
||||||
public String column;
|
public String column;
|
||||||
public String type;
|
public String type;
|
||||||
|
public FilterType filterType;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@ import org.springframework.security.web.AuthenticationEntryPoint;
|
||||||
import org.springframework.security.web.SecurityFilterChain;
|
import org.springframework.security.web.SecurityFilterChain;
|
||||||
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
|
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
|
||||||
import org.springframework.security.web.authentication.logout.LogoutFilter;
|
import org.springframework.security.web.authentication.logout.LogoutFilter;
|
||||||
|
import org.springframework.security.web.authentication.session.NullAuthenticatedSessionStrategy;
|
||||||
import org.springframework.security.web.csrf.CookieCsrfTokenRepository;
|
import org.springframework.security.web.csrf.CookieCsrfTokenRepository;
|
||||||
import org.springframework.security.web.csrf.CsrfTokenRequestHandler;
|
import org.springframework.security.web.csrf.CsrfTokenRequestHandler;
|
||||||
import org.springframework.security.web.csrf.XorCsrfTokenRequestAttributeHandler;
|
import org.springframework.security.web.csrf.XorCsrfTokenRequestAttributeHandler;
|
||||||
|
|
@ -49,29 +50,22 @@ public class SecurityConfig {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
|
public SecurityFilterChain filterChain(HttpSecurity http,
|
||||||
httpConfigure(http);
|
CookieCsrfTokenRepository tokenRepository)
|
||||||
http.addFilterBefore(jwtAuthenticationFilter, UsernamePasswordAuthenticationFilter.class);
|
throws Exception {
|
||||||
http.addFilterBefore(new RequestContextFilter(), LogoutFilter.class);
|
|
||||||
http.addFilterAfter(filterChainExceptionHandler, RequestContextFilter.class);
|
|
||||||
return http.build();
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void httpConfigure(HttpSecurity httpSecurity) throws Exception {
|
|
||||||
CookieCsrfTokenRepository tokenRepository = CookieCsrfTokenRepository.withHttpOnlyFalse();
|
|
||||||
tokenRepository.setCookiePath("/");
|
|
||||||
XorCsrfTokenRequestAttributeHandler delegate = new XorCsrfTokenRequestAttributeHandler();
|
XorCsrfTokenRequestAttributeHandler delegate = new XorCsrfTokenRequestAttributeHandler();
|
||||||
delegate.setCsrfRequestAttributeName(null);
|
delegate.setCsrfRequestAttributeName(null);
|
||||||
// Use only the handle() method of XorCsrfTokenRequestAttributeHandler and the
|
// Use only the handle() method of XorCsrfTokenRequestAttributeHandler and the
|
||||||
// default implementation of resolveCsrfTokenValue() from CsrfTokenRequestHandler
|
// default implementation of resolveCsrfTokenValue() from CsrfTokenRequestHandler
|
||||||
CsrfTokenRequestHandler requestHandler = delegate::handle;
|
CsrfTokenRequestHandler requestHandler = delegate::handle;
|
||||||
httpSecurity.authorizeHttpRequests(
|
http.authorizeHttpRequests(
|
||||||
(authorizeHttpRequests) -> authorizeHttpRequests.requestMatchers(PERMIT_ALL)
|
(authorizeHttpRequests) -> authorizeHttpRequests.requestMatchers(PERMIT_ALL)
|
||||||
.permitAll()
|
.permitAll()
|
||||||
.anyRequest()
|
.anyRequest()
|
||||||
.authenticated())
|
.authenticated())
|
||||||
.csrf((csrf) -> csrf.csrfTokenRepository(tokenRepository)
|
.csrf((csrf) -> csrf.csrfTokenRepository(tokenRepository)
|
||||||
.csrfTokenRequestHandler(requestHandler))
|
.csrfTokenRequestHandler(requestHandler)
|
||||||
|
.sessionAuthenticationStrategy(new NullAuthenticatedSessionStrategy()))
|
||||||
.logout((logout) -> logout.logoutUrl(ESIA_LOGOUT)
|
.logout((logout) -> logout.logoutUrl(ESIA_LOGOUT)
|
||||||
.logoutSuccessHandler(new LogoutSuccessHandler(tokenRepository, esiaAuthService)))
|
.logoutSuccessHandler(new LogoutSuccessHandler(tokenRepository, esiaAuthService)))
|
||||||
.exceptionHandling()
|
.exceptionHandling()
|
||||||
|
|
@ -79,6 +73,19 @@ public class SecurityConfig {
|
||||||
.and()
|
.and()
|
||||||
.sessionManagement()
|
.sessionManagement()
|
||||||
.sessionCreationPolicy(SessionCreationPolicy.STATELESS);
|
.sessionCreationPolicy(SessionCreationPolicy.STATELESS);
|
||||||
|
http.addFilterBefore(jwtAuthenticationFilter, UsernamePasswordAuthenticationFilter.class);
|
||||||
|
http.addFilterBefore(new RequestContextFilter(), LogoutFilter.class);
|
||||||
|
http.addFilterAfter(filterChainExceptionHandler, RequestContextFilter.class);
|
||||||
|
return http.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public CookieCsrfTokenRepository cookieCsrfTokenRepository() {
|
||||||
|
CookieCsrfTokenRepository tokenRepository = CookieCsrfTokenRepository.withHttpOnlyFalse();
|
||||||
|
tokenRepository.setCookieName(TokenConstants.CSRF_TOKEN_NAME);
|
||||||
|
tokenRepository.setHeaderName(TokenConstants.CSRF_HEADER_NAME);
|
||||||
|
tokenRepository.setCookiePath("/");
|
||||||
|
return tokenRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
public AuthenticationEntryPoint entryPoint() {
|
public AuthenticationEntryPoint entryPoint() {
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
package ru.micord.ervu.security;
|
||||||
|
|
||||||
|
public final class TokenConstants {
|
||||||
|
public static String CSRF_TOKEN_NAME = "XSRF-TOKEN-LKRP-UL";
|
||||||
|
public static String CSRF_HEADER_NAME = "X-XSRF-TOKEN-LKRP-UL";
|
||||||
|
|
||||||
|
private TokenConstants() {
|
||||||
|
//must be empty
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -22,6 +22,7 @@ import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
import ervu.service.okopf.OkopfService;
|
import ervu.service.okopf.OkopfService;
|
||||||
|
import org.springframework.security.authentication.AuthenticationManager;
|
||||||
import ru.micord.ervu.security.esia.token.TokensStore;
|
import ru.micord.ervu.security.esia.token.TokensStore;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
@ -50,7 +51,6 @@ import ru.micord.ervu.security.webbpm.jwt.JwtAuthentication;
|
||||||
import ru.micord.ervu.security.webbpm.jwt.helper.SecurityHelper;
|
import ru.micord.ervu.security.webbpm.jwt.helper.SecurityHelper;
|
||||||
import ru.micord.ervu.security.webbpm.jwt.service.JwtTokenService;
|
import ru.micord.ervu.security.webbpm.jwt.service.JwtTokenService;
|
||||||
import ru.micord.ervu.security.webbpm.jwt.model.Token;
|
import ru.micord.ervu.security.webbpm.jwt.model.Token;
|
||||||
import ru.micord.ervu.security.webbpm.jwt.util.SecurityUtil;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Eduard Tihomirov
|
* @author Eduard Tihomirov
|
||||||
|
|
@ -72,6 +72,8 @@ public class EsiaAuthService {
|
||||||
private OkopfService okopfService;
|
private OkopfService okopfService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private SecurityHelper securityHelper;
|
private SecurityHelper securityHelper;
|
||||||
|
@Autowired
|
||||||
|
private AuthenticationManager authenticationManager;
|
||||||
|
|
||||||
@Value("${ervu.kafka.org.reply.topic}")
|
@Value("${ervu.kafka.org.reply.topic}")
|
||||||
private String requestReplyTopic;
|
private String requestReplyTopic;
|
||||||
|
|
@ -211,16 +213,16 @@ public class EsiaAuthService {
|
||||||
if (tokenResponse.getError() != null) {
|
if (tokenResponse.getError() != null) {
|
||||||
throw new RuntimeException(tokenResponse.getError_description());
|
throw new RuntimeException(tokenResponse.getError_description());
|
||||||
}
|
}
|
||||||
String accessToken = tokenResponse.getAccess_token();
|
String esiaAccessTokenStr = tokenResponse.getAccess_token();
|
||||||
|
String esiaRefreshTokenStr = tokenResponse.getRefresh_token();
|
||||||
|
|
||||||
boolean hasRole = ulDataService.checkRole(accessToken);
|
boolean hasRole = ulDataService.checkRole(esiaAccessTokenStr);
|
||||||
EsiaAccessToken esiaAccessToken = ulDataService.readToken(accessToken);
|
EsiaAccessToken esiaAccessToken = ulDataService.readToken(esiaAccessTokenStr);
|
||||||
String prnOid = esiaAccessToken.getSbj_id();
|
String prnOid = esiaAccessToken.getSbj_id();
|
||||||
String refreshToken = tokenResponse.getRefresh_token();
|
String ervuId = getErvuId(esiaAccessTokenStr, prnOid);
|
||||||
String ervuId = getErvuId(accessToken, prnOid);
|
|
||||||
Long expiresIn = tokenResponse.getExpires_in();
|
Long expiresIn = tokenResponse.getExpires_in();
|
||||||
TokensStore.addAccessToken(prnOid, accessToken, expiresIn);
|
TokensStore.addAccessToken(prnOid, esiaAccessTokenStr, expiresIn);
|
||||||
TokensStore.addRefreshToken(prnOid, refreshToken, expiresIn);
|
TokensStore.addRefreshToken(prnOid, esiaRefreshTokenStr, expiresIn);
|
||||||
Token token = jwtTokenService.createAccessToken(esiaAccessToken.getSbj_id(), expiresIn, ervuId, hasRole);
|
Token token = jwtTokenService.createAccessToken(esiaAccessToken.getSbj_id(), expiresIn, ervuId, hasRole);
|
||||||
int expiry = tokenResponse.getExpires_in().intValue();
|
int expiry = tokenResponse.getExpires_in().intValue();
|
||||||
Cookie accessCookie = securityHelper.createAccessCookie(token.getValue(), expiry);
|
Cookie accessCookie = securityHelper.createAccessCookie(token.getValue(), expiry);
|
||||||
|
|
@ -228,9 +230,10 @@ public class EsiaAuthService {
|
||||||
UsernamePasswordAuthenticationToken usernamePasswordAuthenticationToken =
|
UsernamePasswordAuthenticationToken usernamePasswordAuthenticationToken =
|
||||||
new UsernamePasswordAuthenticationToken(token.getUserAccountId(), null);
|
new UsernamePasswordAuthenticationToken(token.getUserAccountId(), null);
|
||||||
SecurityContext context = SecurityContextHolder.createEmptyContext();
|
SecurityContext context = SecurityContextHolder.createEmptyContext();
|
||||||
JwtAuthentication authentication = new JwtAuthentication(usernamePasswordAuthenticationToken,
|
JwtAuthentication jwtAuthentication = new JwtAuthentication(usernamePasswordAuthenticationToken,
|
||||||
esiaAccessToken.getSbj_id(), token.getValue());
|
esiaAccessToken.getSbj_id(), token.getValue());
|
||||||
context.setAuthentication(authentication);
|
authenticationManager.authenticate(jwtAuthentication);
|
||||||
|
context.setAuthentication(jwtAuthentication);
|
||||||
SecurityContextHolder.setContext(context);
|
SecurityContextHolder.setContext(context);
|
||||||
Cookie authMarkerCookie = securityHelper.createAuthMarkerCookie("true", expiry);
|
Cookie authMarkerCookie = securityHelper.createAuthMarkerCookie("true", expiry);
|
||||||
response.addCookie(authMarkerCookie);
|
response.addCookie(authMarkerCookie);
|
||||||
|
|
|
||||||
|
|
@ -245,8 +245,10 @@ public class UlDataServiceImpl implements UlDataService {
|
||||||
JsonNode elementsNode = rootNode.path("elements");
|
JsonNode elementsNode = rootNode.path("elements");
|
||||||
StringBuilder names = new StringBuilder();
|
StringBuilder names = new StringBuilder();
|
||||||
for (JsonNode element : elementsNode) {
|
for (JsonNode element : elementsNode) {
|
||||||
String name = element.path("name").asText();
|
if (element.path("itSystem").asText().equals(esiaConfig.getClientId())) {
|
||||||
names.append(name).append("\n");
|
String name = element.path("name").asText();
|
||||||
|
names.append(name).append("\n");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return names.toString();
|
return names.toString();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,72 @@
|
||||||
|
package ru.micord.ervu.security.listener;
|
||||||
|
|
||||||
|
import java.lang.invoke.MethodHandles;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Objects;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.context.ApplicationListener;
|
||||||
|
import org.springframework.security.authentication.event.AuthenticationSuccessEvent;
|
||||||
|
import org.springframework.security.web.csrf.CsrfTokenRepository;
|
||||||
|
import org.springframework.security.web.csrf.CsrfTokenRequestAttributeHandler;
|
||||||
|
import org.springframework.security.web.csrf.CsrfTokenRequestHandler;
|
||||||
|
import org.springframework.security.web.csrf.DeferredCsrfToken;
|
||||||
|
import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
import org.springframework.util.Assert;
|
||||||
|
import org.springframework.web.context.request.RequestAttributes;
|
||||||
|
import org.springframework.web.context.request.RequestContextHolder;
|
||||||
|
import org.springframework.web.context.request.ServletRequestAttributes;
|
||||||
|
|
||||||
|
import static org.springframework.web.context.request.RequestAttributes.REFERENCE_REQUEST;
|
||||||
|
|
||||||
|
|
||||||
|
@Component
|
||||||
|
public class JwtUpdateListener implements ApplicationListener<AuthenticationSuccessEvent> {
|
||||||
|
private final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
|
||||||
|
|
||||||
|
private final CsrfTokenRepository tokenRepository;
|
||||||
|
private final Set<AntPathRequestMatcher> csrfUpdateRequiredPathMatchers;
|
||||||
|
|
||||||
|
private CsrfTokenRequestHandler requestHandler = new CsrfTokenRequestAttributeHandler();
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
public JwtUpdateListener(CsrfTokenRepository tokenRepository) {
|
||||||
|
Assert.notNull(tokenRepository, "tokenRepository cannot be null");
|
||||||
|
this.tokenRepository = tokenRepository;
|
||||||
|
this.csrfUpdateRequiredPathMatchers = Arrays.stream(new String[] {"/esia/auth"})
|
||||||
|
.map(AntPathRequestMatcher::new)
|
||||||
|
.collect(Collectors.toSet());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onApplicationEvent(AuthenticationSuccessEvent event) {
|
||||||
|
RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
|
||||||
|
HttpServletRequest request = (HttpServletRequest) Objects.requireNonNull(requestAttributes)
|
||||||
|
.resolveReference(
|
||||||
|
REFERENCE_REQUEST);
|
||||||
|
HttpServletResponse response = ((ServletRequestAttributes) requestAttributes).getResponse();
|
||||||
|
|
||||||
|
//if csrf cookie update is not required return
|
||||||
|
if (this.csrfUpdateRequiredPathMatchers.stream()
|
||||||
|
.noneMatch(matcher -> matcher.matches(request))) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
boolean containsToken = this.tokenRepository.loadToken(request) != null;
|
||||||
|
|
||||||
|
if (containsToken) {
|
||||||
|
this.tokenRepository.saveToken(null, request, response);
|
||||||
|
DeferredCsrfToken deferredCsrfToken = this.tokenRepository.loadDeferredToken(request,
|
||||||
|
response
|
||||||
|
);
|
||||||
|
this.requestHandler.handle(request, response, deferredCsrfToken::get);
|
||||||
|
this.logger.debug("Replaced CSRF Token");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
TZ=Europe/Moscow
|
TZ=Europe/Moscow
|
||||||
# App datasource
|
# App datasource
|
||||||
DB_APP_USERNAME=ervu-lkrp-ul
|
DB_APP_USERNAME=ervu_lkrp_ul
|
||||||
DB_APP_PASSWORD=ervu-lkrp-ul
|
DB_APP_PASSWORD=ervu_lkrp_ul
|
||||||
DB_APP_HOST=10.10.31.119
|
DB_APP_HOST=10.10.31.119
|
||||||
DB_APP_PORT=5432
|
DB_APP_PORT=5432
|
||||||
DB_APP_NAME=ervu-lkrp-ul
|
DB_APP_NAME=ervu_lkrp_ul
|
||||||
|
|
||||||
FILE_WEBDAV_UPLOAD_URL=https://ervu-webdav.k8s.micord.ru
|
FILE_WEBDAV_UPLOAD_URL=https://ervu-webdav.k8s.micord.ru
|
||||||
FILE_WEBDAV_UPLOAD_USERNAME=test
|
FILE_WEBDAV_UPLOAD_USERNAME=test
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ru.micord.ervu.lkrp</groupId>
|
<groupId>ru.micord.ervu.lkrp</groupId>
|
||||||
<artifactId>ul</artifactId>
|
<artifactId>ul</artifactId>
|
||||||
<version>1.9.1</version>
|
<version>1.9.1-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<groupId>ru.micord.ervu.lkrp.ul</groupId>
|
<groupId>ru.micord.ervu.lkrp.ul</groupId>
|
||||||
|
|
|
||||||
|
|
@ -1,10 +0,0 @@
|
||||||
{
|
|
||||||
"port": 8000,
|
|
||||||
"open": false,
|
|
||||||
"files": [
|
|
||||||
"./**/*.{html,htm,css,js}"
|
|
||||||
],
|
|
||||||
"server": {
|
|
||||||
"baseDir": "./"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
6832
frontend/package-lock.json
generated
6832
frontend/package-lock.json
generated
File diff suppressed because it is too large
Load diff
|
|
@ -2,7 +2,6 @@
|
||||||
"name": "ervu_lkrp_ul",
|
"name": "ervu_lkrp_ul",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"lite": "node ./node_modules/lite-server/bin/lite-server",
|
|
||||||
"cleanup": "npm run cleanup-ngc && node ./node_modules/rimraf/bin ./build ./dist",
|
"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-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",
|
"cleanup-and-ngc": "npm run cleanup && npm run ngc",
|
||||||
|
|
@ -26,8 +25,8 @@
|
||||||
"@angular/platform-browser": "7.2.15",
|
"@angular/platform-browser": "7.2.15",
|
||||||
"@angular/platform-browser-dynamic": "7.2.15",
|
"@angular/platform-browser-dynamic": "7.2.15",
|
||||||
"@angular/router": "7.2.15",
|
"@angular/router": "7.2.15",
|
||||||
"@ng-bootstrap/ng-bootstrap": "4.1.1",
|
"@ng-bootstrap/ng-bootstrap": "4.2.2-micord.1",
|
||||||
"@webbpm/base-package": "3.182.0",
|
"@webbpm/base-package": "3.185.0",
|
||||||
"ag-grid-angular": "29.0.0-micord.4",
|
"ag-grid-angular": "29.0.0-micord.4",
|
||||||
"ag-grid-community": "29.0.0-micord.4",
|
"ag-grid-community": "29.0.0-micord.4",
|
||||||
"angular-calendar": "0.28.28",
|
"angular-calendar": "0.28.28",
|
||||||
|
|
@ -40,16 +39,16 @@
|
||||||
"core-js": "2.4.1",
|
"core-js": "2.4.1",
|
||||||
"date-fns": "2.29.3",
|
"date-fns": "2.29.3",
|
||||||
"downloadjs": "1.4.8",
|
"downloadjs": "1.4.8",
|
||||||
"eonasdan-bootstrap-datetimepicker": "4.17.47-micord.4",
|
"eonasdan-bootstrap-datetimepicker": "4.17.47-micord.5",
|
||||||
"esmarttokenjs": "2.2.1-cg",
|
"esmarttokenjs": "2.2.1-cg",
|
||||||
"font-awesome": "4.7.0",
|
"font-awesome": "4.7.0",
|
||||||
"google-libphonenumber": "3.0.9",
|
"google-libphonenumber": "3.0.9",
|
||||||
"inputmask": "5.0.5-cg.2",
|
"inputmask": "5.0.5-cg.2",
|
||||||
"jquery": "3.3.1",
|
"jquery": "3.7.1",
|
||||||
"js-year-calendar": "1.0.0-cg.2",
|
"js-year-calendar": "1.0.0-cg.2",
|
||||||
"jsgantt-improved": "2.0.10-cg",
|
"jsgantt-improved": "2.0.10-cg",
|
||||||
"moment": "2.17.1",
|
"moment": "2.30.1",
|
||||||
"moment-timezone": "0.5.11",
|
"moment-timezone": "0.5.46",
|
||||||
"ng2-file-upload": "1.3.0",
|
"ng2-file-upload": "1.3.0",
|
||||||
"ngx-cookie": "3.0.1",
|
"ngx-cookie": "3.0.1",
|
||||||
"ngx-international-phone-number": "1.0.6",
|
"ngx-international-phone-number": "1.0.6",
|
||||||
|
|
@ -58,11 +57,11 @@
|
||||||
"reflect-metadata": "0.1.13",
|
"reflect-metadata": "0.1.13",
|
||||||
"rxjs": "6.4.0",
|
"rxjs": "6.4.0",
|
||||||
"rxjs-compat": "6.4.0",
|
"rxjs-compat": "6.4.0",
|
||||||
"selectize": "0.12.4-cg.10",
|
"selectize": "0.12.4-cg.11",
|
||||||
"systemjs": "0.21.4",
|
"systemjs": "0.21.4",
|
||||||
"systemjs-plugin-babel": "0.0.25",
|
"systemjs-plugin-babel": "0.0.25",
|
||||||
"tslib": "1.9.3",
|
"tslib": "1.9.3",
|
||||||
"zone.js": "0.8.29"
|
"zone.js": "0.11.8"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@angular-devkit/build-optimizer": "0.13.9",
|
"@angular-devkit/build-optimizer": "0.13.9",
|
||||||
|
|
@ -70,33 +69,33 @@
|
||||||
"@angular/cli": "7.3.9",
|
"@angular/cli": "7.3.9",
|
||||||
"@angular/compiler-cli": "7.2.15",
|
"@angular/compiler-cli": "7.2.15",
|
||||||
"@angular/platform-server": "7.2.15",
|
"@angular/platform-server": "7.2.15",
|
||||||
"@babel/core": "7.9.6",
|
"@babel/core": "7.18.10",
|
||||||
"@babel/preset-env": "7.9.6",
|
"@babel/preset-env": "7.18.10",
|
||||||
"@types/bootstrap": "3.3.39",
|
"@types/bootstrap": "3.3.39",
|
||||||
"@types/jquery": "2.0.49",
|
"@types/eslint": "7.2.5",
|
||||||
|
"@types/jquery": "3.5.5",
|
||||||
"@types/node": "7.0.5",
|
"@types/node": "7.0.5",
|
||||||
"@types/selectize": "0.12.33",
|
"@types/selectize": "0.12.33",
|
||||||
|
"ajv": "8.8.2",
|
||||||
"angular-router-loader": "0.8.5",
|
"angular-router-loader": "0.8.5",
|
||||||
"angular2-template-loader": "0.6.2",
|
"angular2-template-loader": "0.6.2",
|
||||||
"babel-loader": "8.1.0",
|
"babel-loader": "9.1.2",
|
||||||
"codelyzer": "5.2.1",
|
"codelyzer": "5.2.1",
|
||||||
"copy-webpack-plugin": "5.0.3",
|
"copy-webpack-plugin": "5.0.3",
|
||||||
"cross-env": "5.2.1",
|
"cross-env": "5.2.1",
|
||||||
"css-loader": "2.1.0",
|
"css-loader": "6.11.0",
|
||||||
"del": "2.2.2",
|
"del": "2.2.2",
|
||||||
"file-loader": "3.0.1",
|
"file-loader": "6.2.0",
|
||||||
"html-webpack-plugin": "4.5.2",
|
"html-webpack-plugin": "5.6.0",
|
||||||
"lite-server": "2.3.0",
|
"mini-css-extract-plugin": "2.9.1",
|
||||||
"mini-css-extract-plugin": "0.6.0",
|
"mkdirp": "3.0.1",
|
||||||
"mkdirp": "0.5.1",
|
"raw-loader": "4.0.2",
|
||||||
"raw-loader": "1.0.0",
|
"style-loader": "3.3.4",
|
||||||
"style-loader": "0.23.1",
|
"terser-webpack-plugin": "5.3.10",
|
||||||
"terser-webpack-plugin": "1.2.4",
|
|
||||||
"tslint": "5.13.1",
|
"tslint": "5.13.1",
|
||||||
"typescript": "3.2.4",
|
"typescript": "3.2.4",
|
||||||
"typescript-parser": "2.6.1-cg-fork",
|
"typescript-parser": "2.6.1-cg.2",
|
||||||
"webpack": "4.32.2",
|
"webpack": "5.90.1",
|
||||||
"webpack-bundle-analyzer": "3.3.2",
|
"webpack-cli": "5.0.2"
|
||||||
"webpack-cli": "3.3.2"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ru.micord.ervu.lkrp</groupId>
|
<groupId>ru.micord.ervu.lkrp</groupId>
|
||||||
<artifactId>ul</artifactId>
|
<artifactId>ul</artifactId>
|
||||||
<version>1.9.1</version>
|
<version>1.9.1-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<groupId>ru.micord.ervu.lkrp.ul</groupId>
|
<groupId>ru.micord.ervu.lkrp.ul</groupId>
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
"filter_cleanup_interval_hours": 720,
|
"filter_cleanup_interval_hours": 720,
|
||||||
"filter_cleanup_check_period_minutes": 30,
|
"filter_cleanup_check_period_minutes": 30,
|
||||||
"auth_method": "form",
|
"auth_method": "form",
|
||||||
"enable.version.in.url": "false",
|
"enable.version.in.url": "%enable.version.in.url%",
|
||||||
"backend.context": "ul",
|
"backend.context": "ul",
|
||||||
"guard.confirm_exit": false,
|
"guard.confirm_exit": false,
|
||||||
"message_service_error_timeout": "",
|
"message_service_error_timeout": "",
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
1.8.0-SNAPSHOT
|
%project.version%
|
||||||
|
|
|
||||||
|
|
@ -51,7 +51,7 @@
|
||||||
|
|
||||||
.webbpm.ervu_lkrp_ul .title {
|
.webbpm.ervu_lkrp_ul .title {
|
||||||
font-size: var(--size-text-title);
|
font-size: var(--size-text-title);
|
||||||
font-family: 'InterSB';
|
font-family: 'InterB';
|
||||||
padding-top: 0;
|
padding-top: 0;
|
||||||
padding-bottom: var(--indent-medium);
|
padding-bottom: var(--indent-medium);
|
||||||
}
|
}
|
||||||
|
|
@ -202,7 +202,7 @@
|
||||||
.webbpm.ervu_lkrp_ul .warning-group + field-set {
|
.webbpm.ervu_lkrp_ul .warning-group + field-set {
|
||||||
margin-top: var(--indent-medium);
|
margin-top: var(--indent-medium);
|
||||||
}
|
}
|
||||||
.webbpm.ervu_lkrp_ul .warning-group + .warning-group,
|
.webbpm.ervu_lkrp_ul .warning-group + .warning-group,
|
||||||
.webbpm.ervu_lkrp_ul .warning-group + .data-group {
|
.webbpm.ervu_lkrp_ul .warning-group + .data-group {
|
||||||
margin-top: var(--indent-small);
|
margin-top: var(--indent-small);
|
||||||
}
|
}
|
||||||
|
|
@ -279,6 +279,10 @@
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.webbpm.ervu_lkrp_ul .data-group .description {
|
||||||
|
color: var(--color-text-secondary);
|
||||||
|
}
|
||||||
|
|
||||||
.webbpm.ervu_lkrp_ul .pin + .pin {
|
.webbpm.ervu_lkrp_ul .pin + .pin {
|
||||||
margin-top: 12px;
|
margin-top: 12px;
|
||||||
}
|
}
|
||||||
|
|
@ -300,20 +304,20 @@
|
||||||
margin-bottom: 16px;
|
margin-bottom: 16px;
|
||||||
}
|
}
|
||||||
.webbpm.ervu_lkrp_ul .paragraph-group > .vertical-container > *:last-child {
|
.webbpm.ervu_lkrp_ul .paragraph-group > .vertical-container > *:last-child {
|
||||||
margin-bottom: 0;
|
margin-bottom: 0;
|
||||||
}
|
}
|
||||||
.webbpm.ervu_lkrp_ul .paragraph-group + .paragraph-group {
|
.webbpm.ervu_lkrp_ul .paragraph-group + .paragraph-group {
|
||||||
padding-top: 24px;
|
padding-top: 24px;
|
||||||
margin-top: 24px;
|
margin-top: 24px;
|
||||||
border-top: 1px solid var(--border-light);
|
border-top: 1px solid var(--border-light);
|
||||||
}
|
}
|
||||||
|
|
||||||
.webbpm.ervu_lkrp_ul .fieldset {
|
.webbpm.ervu_lkrp_ul .fieldset {
|
||||||
padding: 24px;
|
padding: 24px;
|
||||||
margin-bottom: 0;
|
margin-bottom: 0;
|
||||||
border: 1px solid var(--border-light);
|
border: 1px solid var(--border-light);
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
background-color: var(--bg-light);
|
background-color: var(--bg-light);
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
}
|
}
|
||||||
.webbpm.ervu_lkrp_ul .fieldset legend + div {
|
.webbpm.ervu_lkrp_ul .fieldset legend + div {
|
||||||
|
|
@ -392,7 +396,7 @@
|
||||||
margin-top: var(--indent-medium);
|
margin-top: var(--indent-medium);
|
||||||
}
|
}
|
||||||
|
|
||||||
.webbpm.ervu_lkrp_ul input,
|
.webbpm.ervu_lkrp_ul input,
|
||||||
.webbpm.ervu_lkrp_ul button {
|
.webbpm.ervu_lkrp_ul button {
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
box-shadow: none !important;
|
box-shadow: none !important;
|
||||||
|
|
@ -426,7 +430,7 @@
|
||||||
|
|
||||||
.webbpm.ervu_lkrp_ul ag-grid-angular {
|
.webbpm.ervu_lkrp_ul ag-grid-angular {
|
||||||
font-family: 'Inter';
|
font-family: 'Inter';
|
||||||
}
|
}
|
||||||
|
|
||||||
.webbpm.ervu_lkrp_ul ag-grid-angular .ag-popup .ag-select-list-item {
|
.webbpm.ervu_lkrp_ul ag-grid-angular .ag-popup .ag-select-list-item {
|
||||||
font-size: var(--size-text-secondary);
|
font-size: var(--size-text-secondary);
|
||||||
|
|
@ -440,31 +444,39 @@
|
||||||
width: 24px;
|
width: 24px;
|
||||||
height: 24px;
|
height: 24px;
|
||||||
}
|
}
|
||||||
.webbpm.ervu_lkrp_ul ag-grid-angular .ag-icon:is(.ag-icon-small-down, .ag-icon-filter)::before {
|
|
||||||
|
.webbpm.ervu_lkrp_ul ag-grid-angular .ag-icon:is(.ag-icon-small-down)::before {
|
||||||
content: "";
|
content: "";
|
||||||
width: 24px;
|
width: 24px;
|
||||||
height: 24px;
|
height: 24px;
|
||||||
top: 0;
|
top: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.webbpm.ervu_lkrp_ul ag-grid-angular .ag-icon.ag-icon-small-down::before {
|
.webbpm.ervu_lkrp_ul ag-grid-angular .ag-icon.ag-icon-small-down::before {
|
||||||
background-image: url(../img/svg/arrow-left.svg);
|
background-image: url(../img/svg/arrow-left.svg);
|
||||||
transform: rotate(-90deg);
|
transform: rotate(-90deg);
|
||||||
}
|
}
|
||||||
.webbpm.ervu_lkrp_ul ag-grid-angular .ag-icon.ag-icon-filter::before {
|
|
||||||
background-image: url(../img/svg/filter.svg);
|
.webbpm.ervu_lkrp_ul ag-grid-angular .ag-icon-menu {
|
||||||
top: -4px;
|
background: transparent url(../img/svg/filter.svg) center no-repeat;
|
||||||
left: -4px;
|
color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.webbpm.ervu_lkrp_ul ag-grid-angular .ag-header-cell-menu-button:not(.ag-header-menu-always-show) {
|
||||||
|
opacity: unset;
|
||||||
}
|
}
|
||||||
|
|
||||||
.webbpm.ervu_lkrp_ul ag-grid-angular .ag-filter-select {
|
.webbpm.ervu_lkrp_ul ag-grid-angular .ag-filter-select {
|
||||||
font-size: var(--size-text-secondary);
|
font-size: var(--size-text-secondary);
|
||||||
}
|
}
|
||||||
|
|
||||||
.webbpm.ervu_lkrp_ul ag-grid-angular .ag-filter-select .ag-picker-field-wrapper {
|
.webbpm.ervu_lkrp_ul ag-grid-angular .ag-filter-select .ag-picker-field-wrapper {
|
||||||
font-family: 'InterSB';
|
font-family: 'InterSB';
|
||||||
border: 0;
|
border: 0;
|
||||||
box-shadow: none !important;
|
box-shadow: none !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.webbpm.ervu_lkrp_ul ag-grid-angular .ag-filter-select .ag-picker-field-wrapper .ag-picker-field-display {
|
.webbpm.ervu_lkrp_ul ag-grid-angular .ag-filter-select .ag-picker-field-wrapper .ag-picker-field-display {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
|
|
@ -472,6 +484,7 @@
|
||||||
.webbpm.ervu_lkrp_ul ag-grid-angular .ag-filter-body {
|
.webbpm.ervu_lkrp_ul ag-grid-angular .ag-filter-body {
|
||||||
margin-bottom: 0;
|
margin-bottom: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.webbpm.ervu_lkrp_ul ag-grid-angular .ag-filter-body input {
|
.webbpm.ervu_lkrp_ul ag-grid-angular .ag-filter-body input {
|
||||||
color: var(--color-light);
|
color: var(--color-light);
|
||||||
font-size: var(--size-text-secondary);
|
font-size: var(--size-text-secondary);
|
||||||
|
|
@ -479,6 +492,43 @@
|
||||||
padding: 6px 12px !important;
|
padding: 6px 12px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.webbpm.ervu_lkrp_ul ag-grid-angular .ag-set-filter {
|
||||||
|
min-width: 100px;
|
||||||
|
padding: 10px 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.webbpm.ervu_lkrp_ul ag-grid-angular .ag-set-filter-item + .ag-set-filter-item {
|
||||||
|
margin-top: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.webbpm.ervu_lkrp_ul ag-grid-angular .ag-filter .ag-filter-checkbox {
|
||||||
|
width: 24px;
|
||||||
|
height: 24px;
|
||||||
|
border: 2px solid var(--color-link);
|
||||||
|
border-radius: 4px;
|
||||||
|
position: relative;
|
||||||
|
margin-right: 12px;
|
||||||
|
-webkit-appearance: none;
|
||||||
|
-moz-appearance: none;
|
||||||
|
appearance: none;
|
||||||
|
vertical-align: text-bottom;
|
||||||
|
}
|
||||||
|
|
||||||
|
.webbpm.ervu_lkrp_ul ag-grid-angular .ag-filter .ag-filter-checkbox:before {
|
||||||
|
content: '';
|
||||||
|
color: white;
|
||||||
|
position: absolute;
|
||||||
|
top: 3px;
|
||||||
|
left: 3px;
|
||||||
|
width: 14px;
|
||||||
|
height: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.webbpm.ervu_lkrp_ul ag-grid-angular .ag-filter .ag-filter-checkbox:checked:before {
|
||||||
|
border-radius: 2px;
|
||||||
|
background: var(--color-link) url(../img/svg/input-checked.svg);
|
||||||
|
}
|
||||||
|
|
||||||
.webbpm.ervu_lkrp_ul ag-grid-angular .ag-header-row {
|
.webbpm.ervu_lkrp_ul ag-grid-angular .ag-header-row {
|
||||||
font-family: 'InterSB';
|
font-family: 'InterSB';
|
||||||
}
|
}
|
||||||
|
|
@ -528,7 +578,7 @@
|
||||||
flex-direction: column-reverse;
|
flex-direction: column-reverse;
|
||||||
}
|
}
|
||||||
.webbpm.ervu_lkrp_ul .main-block .left-block {
|
.webbpm.ervu_lkrp_ul .main-block .left-block {
|
||||||
padding-right: 0;
|
padding-right: 0;
|
||||||
margin-top: var(--indent-medium);
|
margin-top: var(--indent-medium);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -542,8 +592,8 @@
|
||||||
top: 20px;
|
top: 20px;
|
||||||
left: auto;
|
left: auto;
|
||||||
right: 20px;
|
right: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.webbpm.ervu_lkrp_ul .left-block {
|
.webbpm.ervu_lkrp_ul .left-block {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
@ -702,7 +752,7 @@
|
||||||
background: none;
|
background: none;
|
||||||
}
|
}
|
||||||
.webbpm.ervu_lkrp_ul .modal.show .modal-content .warning-group > div > * + *:not([hidden]) {
|
.webbpm.ervu_lkrp_ul .modal.show .modal-content .warning-group > div > * + *:not([hidden]) {
|
||||||
margin-top: 8px;
|
margin-top: 8px;
|
||||||
}
|
}
|
||||||
.webbpm.ervu_lkrp_ul .modal.show .modal-content hyper-link.btn {
|
.webbpm.ervu_lkrp_ul .modal.show .modal-content hyper-link.btn {
|
||||||
padding: 0;
|
padding: 0;
|
||||||
|
|
@ -711,7 +761,7 @@
|
||||||
}
|
}
|
||||||
.webbpm.ervu_lkrp_ul .modal.show .modal-content hyper-link.btn .hyper-link {
|
.webbpm.ervu_lkrp_ul .modal.show .modal-content hyper-link.btn .hyper-link {
|
||||||
padding: 13px 38px;
|
padding: 13px 38px;
|
||||||
border: 1px solid var(--color-link);
|
border: 1px solid var(--color-link);
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
}
|
}
|
||||||
.webbpm.ervu_lkrp_ul .modal.show .modal-content hyper-link.btn .hyper-link:hover {
|
.webbpm.ervu_lkrp_ul .modal.show .modal-content hyper-link.btn .hyper-link:hover {
|
||||||
|
|
@ -814,7 +864,7 @@
|
||||||
.webbpm.ervu_lkrp_ul .modal.show ervu-file-upload .selected-file .selected-file-size::before {
|
.webbpm.ervu_lkrp_ul .modal.show ervu-file-upload .selected-file .selected-file-size::before {
|
||||||
position: relative;
|
position: relative;
|
||||||
content: "|";
|
content: "|";
|
||||||
margin-right: 8px;
|
margin-right: 8px;
|
||||||
}
|
}
|
||||||
.webbpm.ervu_lkrp_ul .modal.show ervu-file-upload .selected-file .selected-file-delete-btn {
|
.webbpm.ervu_lkrp_ul .modal.show ervu-file-upload .selected-file .selected-file-delete-btn {
|
||||||
color: var(--color-link);
|
color: var(--color-link);
|
||||||
|
|
@ -871,9 +921,19 @@
|
||||||
|
|
||||||
/* temp fix + add flex-wrap*/
|
/* temp fix + add flex-wrap*/
|
||||||
.webbpm.ervu_lkrp_ul :is(.fieldset, .warning-group) .horizontal-container text + button-component:not(.info) {
|
.webbpm.ervu_lkrp_ul :is(.fieldset, .warning-group) .horizontal-container text + button-component:not(.info) {
|
||||||
margin-top: -2px;
|
margin-top: -2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.webbpm.ervu_lkrp_ul .dialog-link {
|
.webbpm.ervu_lkrp_ul .dialog-link {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.webbpm.ervu_lkrp_ul #mydata .data-group:first-child .subtitle {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
.webbpm.ervu_lkrp_ul #mydata .right-block field-set:first-child .fieldset {
|
||||||
|
padding-top: 24px;
|
||||||
|
}
|
||||||
|
.webbpm.ervu_lkrp_ul #mydata .right-block field-set:first-child .fieldset::before {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
3
frontend/src/resources/img/svg/input-checked.svg
Normal file
3
frontend/src/resources/img/svg/input-checked.svg
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M2.56192 6.65976L5.83968 9.93751L11.4379 4.33928" stroke="white"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 179 B |
|
|
@ -1,12 +1,15 @@
|
||||||
import {ColDef, ICellRendererFunc, SuppressKeyboardEventParams} from "ag-grid-community";
|
import {
|
||||||
|
ColDef,
|
||||||
|
DateFilter,
|
||||||
|
ICellRendererFunc,
|
||||||
|
SuppressKeyboardEventParams
|
||||||
|
} from "ag-grid-community";
|
||||||
import {
|
import {
|
||||||
DateTimeUtil,
|
DateTimeUtil,
|
||||||
DefaultTooltip,
|
DefaultTooltip,
|
||||||
GridCellTooltipUtils,
|
GridCellTooltipUtils,
|
||||||
GridColumnComparatorUtils,
|
GridColumnComparatorUtils,
|
||||||
GridColumnFilterUtils,
|
|
||||||
GridColumnKeyboardUtils,
|
GridColumnKeyboardUtils,
|
||||||
GridSettingHeader,
|
|
||||||
GridValueFormatterUtils,
|
GridValueFormatterUtils,
|
||||||
GridValueRendererUtils,
|
GridValueRendererUtils,
|
||||||
PinnedType
|
PinnedType
|
||||||
|
|
@ -14,6 +17,7 @@ import {
|
||||||
import {Moment} from "moment";
|
import {Moment} from "moment";
|
||||||
import * as moment from "moment-timezone";
|
import * as moment from "moment-timezone";
|
||||||
import {StaticGridColumn} from "../../../generated/ru/micord/ervu/property/grid/StaticGridColumn";
|
import {StaticGridColumn} from "../../../generated/ru/micord/ervu/property/grid/StaticGridColumn";
|
||||||
|
import {CustomGridColumnFilterUtils} from "./filter/CustomGridColumnFilterUtils";
|
||||||
|
|
||||||
export class StaticColumnInitializer {
|
export class StaticColumnInitializer {
|
||||||
|
|
||||||
|
|
@ -50,40 +54,6 @@ export class StaticColumnInitializer {
|
||||||
let type = column.field.type;
|
let type = column.field.type;
|
||||||
|
|
||||||
if (type != null) {
|
if (type != null) {
|
||||||
|
|
||||||
if (column.filter !== false) {
|
|
||||||
columnDef.floatingFilter = gridRef.floatingFilter;
|
|
||||||
columnDef.filter = GridColumnFilterUtils.columnFilter(type);
|
|
||||||
|
|
||||||
if (columnDef.filter === 'agDateColumnFilter') {
|
|
||||||
columnDef.filterParams = {
|
|
||||||
comparator: function (filterLocalDateAtMidnight, cellValue) {
|
|
||||||
|
|
||||||
if (!cellValue) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
let filterMoment: Moment = moment.utc(filterLocalDateAtMidnight)
|
|
||||||
.add(-filterLocalDateAtMidnight.getTimezoneOffset(), 'm');
|
|
||||||
let cellMoment: Moment = DateTimeUtil.parseToMidnightUTC(cellValue);
|
|
||||||
|
|
||||||
if (filterMoment.isSame(cellMoment)) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (cellMoment.isBefore(filterMoment)) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (cellMoment.isAfter(filterMoment)) {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
browserDatePicker: true,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (gridRef.getRowModelType() == "clientSide") {
|
if (gridRef.getRowModelType() == "clientSide") {
|
||||||
columnDef.comparator = GridColumnComparatorUtils.columnComparator(type);
|
columnDef.comparator = GridColumnComparatorUtils.columnComparator(type);
|
||||||
}
|
}
|
||||||
|
|
@ -91,6 +61,39 @@ export class StaticColumnInitializer {
|
||||||
columnDef.cellRenderer = gridRef.createRenderer(column);
|
columnDef.cellRenderer = gridRef.createRenderer(column);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (column.filter !== false) {
|
||||||
|
columnDef.floatingFilter = gridRef.floatingFilter;
|
||||||
|
columnDef.filter = CustomGridColumnFilterUtils.columnFilter(column.field.filterType);
|
||||||
|
|
||||||
|
if (columnDef.filter === DateFilter) {
|
||||||
|
columnDef.filterParams = {
|
||||||
|
comparator: function (filterLocalDateAtMidnight, cellValue) {
|
||||||
|
|
||||||
|
if (!cellValue) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
let filterMoment: Moment = moment.utc(filterLocalDateAtMidnight)
|
||||||
|
.add(-filterLocalDateAtMidnight.getTimezoneOffset(), 'm');
|
||||||
|
let cellMoment: Moment = DateTimeUtil.parseToMidnightUTC(cellValue);
|
||||||
|
|
||||||
|
if (filterMoment.isSame(cellMoment)) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cellMoment.isBefore(filterMoment)) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cellMoment.isAfter(filterMoment)) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
browserDatePicker: true,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
columnDef.suppressKeyboardEvent = (params: SuppressKeyboardEventParams) => {
|
columnDef.suppressKeyboardEvent = (params: SuppressKeyboardEventParams) => {
|
||||||
return GridColumnKeyboardUtils.suppressHomeAndEndKeyboardEvent(params);
|
return GridColumnKeyboardUtils.suppressHomeAndEndKeyboardEvent(params);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,24 @@
|
||||||
|
import {FilterType} from "../../../../generated/ru/micord/ervu/property/grid/FilterType";
|
||||||
|
import {DateFilter, NumberFilter, TextFilter} from "ag-grid-community";
|
||||||
|
import {SetFilter} from "./SetFilter";
|
||||||
|
|
||||||
|
export class CustomGridColumnFilterUtils {
|
||||||
|
|
||||||
|
public static columnFilter(type: FilterType) {
|
||||||
|
if (!type) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (type) {
|
||||||
|
case FilterType.NUMBER:
|
||||||
|
return NumberFilter;
|
||||||
|
case FilterType.DATE:
|
||||||
|
return DateFilter;
|
||||||
|
case FilterType.SET:
|
||||||
|
return SetFilter;
|
||||||
|
case FilterType.TEXT:
|
||||||
|
default:
|
||||||
|
return TextFilter;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
111
frontend/src/ts/ervu/component/grid/filter/SetFilter.ts
Normal file
111
frontend/src/ts/ervu/component/grid/filter/SetFilter.ts
Normal file
|
|
@ -0,0 +1,111 @@
|
||||||
|
import {AgPromise, IDoesFilterPassParams, IFilterComp, IFilterParams} from "ag-grid-community";
|
||||||
|
|
||||||
|
export class SetFilter implements IFilterComp {
|
||||||
|
|
||||||
|
private OPTION_TEMPLATE = `<label class="ag-set-filter-item">
|
||||||
|
<input type="checkbox" class="ag-filter-checkbox" checked/>
|
||||||
|
<span class="ag-filter-value"></span>
|
||||||
|
</label>`;
|
||||||
|
|
||||||
|
private eGui!: HTMLDivElement;
|
||||||
|
private selectAll: HTMLInputElement;
|
||||||
|
private checkboxes: HTMLInputElement[] = [];
|
||||||
|
private values: any[] = [];
|
||||||
|
private initialValues: any[];
|
||||||
|
private filterActive: boolean;
|
||||||
|
private filterChangedCallback!: (additionalEventAttributes?: any) => void;
|
||||||
|
private filterParams!: IFilterParams;
|
||||||
|
private valueType: string;
|
||||||
|
|
||||||
|
init(params: IFilterParams): void {
|
||||||
|
this.eGui = document.createElement('div');
|
||||||
|
this.eGui.className = 'ag-set-filter';
|
||||||
|
let index = 0;
|
||||||
|
this.selectAll = this.initCheckBox('selectAll', 'Все', index);
|
||||||
|
this.checkboxes.push(this.selectAll);
|
||||||
|
|
||||||
|
params.api.getRenderedNodes()
|
||||||
|
.map(node => node.data[params.colDef.field])
|
||||||
|
.sort((n1, n2) => n1 > n2 ? 1 : n1 < n2 ? -1 : 0)
|
||||||
|
.forEach(value => {
|
||||||
|
if (this.values.includes(value)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
index++;
|
||||||
|
let id = `option-${index}`;
|
||||||
|
let checkbox = this.initCheckBox(id, value, index);
|
||||||
|
this.checkboxes.push(checkbox);
|
||||||
|
this.values.push(value);
|
||||||
|
});
|
||||||
|
this.initialValues = this.values.slice();
|
||||||
|
this.filterParams = params;
|
||||||
|
this.filterActive = false;
|
||||||
|
this.filterChangedCallback = params.filterChangedCallback;
|
||||||
|
|
||||||
|
if (this.values.length > 0) {
|
||||||
|
this.valueType = typeof this.values[0];
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
private initCheckBox(id: string, value: string, index: number): HTMLInputElement {
|
||||||
|
this.eGui.insertAdjacentHTML('beforeend', this.OPTION_TEMPLATE);
|
||||||
|
this.eGui.querySelectorAll('.ag-filter-value')[index].innerHTML = value;
|
||||||
|
let checkbox = this.eGui.querySelectorAll('.ag-filter-checkbox')[index] as HTMLInputElement;
|
||||||
|
checkbox.setAttribute('id', id);
|
||||||
|
checkbox.addEventListener('change', this.onCheckBoxChanged.bind(this));
|
||||||
|
return checkbox;
|
||||||
|
}
|
||||||
|
|
||||||
|
getGui(): HTMLDivElement {
|
||||||
|
return this.eGui;
|
||||||
|
};
|
||||||
|
|
||||||
|
onCheckBoxChanged(event: any) {
|
||||||
|
let checked = event.target.checked;
|
||||||
|
|
||||||
|
if (event.target === this.selectAll) {
|
||||||
|
this.checkboxes.forEach(checkbox => checkbox.checked = checked);
|
||||||
|
this.values = checked ? this.initialValues.slice() : [];
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
let value = event.target.nextElementSibling.textContent;
|
||||||
|
value = this.valueType === 'number' ? +value : value;
|
||||||
|
|
||||||
|
if (checked) {
|
||||||
|
this.values.push(value);
|
||||||
|
|
||||||
|
if (this.values.length == this.initialValues.length) {
|
||||||
|
this.selectAll.checked = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
let index = this.values.indexOf(value);
|
||||||
|
this.values.splice(index, 1);
|
||||||
|
this.selectAll.checked = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.filterActive = !this.selectAll.checked;
|
||||||
|
this.filterChangedCallback();
|
||||||
|
}
|
||||||
|
|
||||||
|
doesFilterPass(params: IDoesFilterPassParams): boolean {
|
||||||
|
let { field } = this.filterParams.colDef;
|
||||||
|
return this.values.includes(params.data[field]);
|
||||||
|
}
|
||||||
|
|
||||||
|
getModel(): any {
|
||||||
|
return this.isFilterActive() ? { value: this.values } : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
isFilterActive(): boolean {
|
||||||
|
return this.filterActive;
|
||||||
|
}
|
||||||
|
|
||||||
|
setModel(model: any): void | AgPromise<void> {
|
||||||
|
this.values = model == null ? [] : model.value;
|
||||||
|
}
|
||||||
|
|
||||||
|
destroy(): void {
|
||||||
|
this.checkboxes.forEach(checkBox => checkBox.removeEventListener('change', this.onCheckBoxChanged.bind(this)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
class EsiaErrorDetail {
|
export class EsiaErrorDetail {
|
||||||
private static errors: { [code: string]: string } = {
|
private static errors: { [code: string]: string } = {
|
||||||
'ESIA-007071': 'Запрос персональных данных по физическим лицам может быть выполнен только с указанием согласий',
|
'ESIA-007071': 'Запрос персональных данных по физическим лицам может быть выполнен только с указанием согласий',
|
||||||
'ESIA-007055': 'Вход в систему осуществляется с неподтвержденной учетной записью',
|
'ESIA-007055': 'Вход в систему осуществляется с неподтвержденной учетной записью',
|
||||||
|
|
@ -6,7 +6,7 @@ class EsiaErrorDetail {
|
||||||
'ESIA-007008': 'Сервис авторизации в настоящее время не может выполнить запрос из-за большой нагрузки или технических работ на сервере',
|
'ESIA-007008': 'Сервис авторизации в настоящее время не может выполнить запрос из-за большой нагрузки или технических работ на сервере',
|
||||||
};
|
};
|
||||||
|
|
||||||
static getDescription(code: string): string {
|
public static getDescription(code: string): string {
|
||||||
return this.errors[code] || 'Доступ запрещен. Обратитесь к системному администратору. Ошибка ' + code;
|
return this.errors[code] || 'Доступ запрещен. Обратитесь к системному администратору. Ошибка ' + code;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
export class TokenConstants {
|
export class TokenConstants {
|
||||||
public static readonly CSRF_TOKEN_NAME = "XSRF-TOKEN";
|
public static readonly CSRF_TOKEN_NAME = "XSRF-TOKEN-LKRP-UL";
|
||||||
public static readonly CSRF_HEADER_NAME = "X-XSRF-TOKEN";
|
public static readonly CSRF_HEADER_NAME = "X-XSRF-TOKEN-LKRP-UL";
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,6 @@
|
||||||
import {Injectable} from '@angular/core';
|
import {Injectable} from '@angular/core';
|
||||||
import {HttpClient} from '@angular/common/http';
|
import {HttpClient} from '@angular/common/http';
|
||||||
import {Observable} from "rxjs";
|
|
||||||
import {CookieService} from "ngx-cookie";
|
import {CookieService} from "ngx-cookie";
|
||||||
import {tap} from "rxjs/operators";
|
|
||||||
import {AppConfigService} from "@webbpm/base-package";
|
import {AppConfigService} from "@webbpm/base-package";
|
||||||
|
|
||||||
@Injectable({providedIn: 'root'})
|
@Injectable({providedIn: 'root'})
|
||||||
|
|
@ -14,7 +12,7 @@ export class AuthenticationService {
|
||||||
}
|
}
|
||||||
|
|
||||||
checkAuthentication(): Promise<any>{
|
checkAuthentication(): Promise<any>{
|
||||||
return this.appConfigService.load().then(value => this.http.get<any>("version").toPromise())
|
return this.appConfigService.load().then(() => this.http.get<any>("version").toPromise())
|
||||||
}
|
}
|
||||||
|
|
||||||
logout(): Promise<any> {
|
logout(): Promise<any> {
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ import {Observable} from "rxjs";
|
||||||
import {HttpClient, HttpParams} from "@angular/common/http";
|
import {HttpClient, HttpParams} from "@angular/common/http";
|
||||||
import {MessagesService} from "@webbpm/base-package";
|
import {MessagesService} from "@webbpm/base-package";
|
||||||
import {AuthenticationService} from "../authentication.service";
|
import {AuthenticationService} from "../authentication.service";
|
||||||
|
import {EsiaErrorDetail} from "../EsiaErrorDetail";
|
||||||
|
|
||||||
@Injectable({providedIn:'root'})
|
@Injectable({providedIn:'root'})
|
||||||
export abstract class AuthGuard implements CanActivate {
|
export abstract class AuthGuard implements CanActivate {
|
||||||
|
|
|
||||||
|
|
@ -1,26 +1,33 @@
|
||||||
import {HttpEvent, HttpHandler, HttpInterceptor, HttpRequest} from '@angular/common/http';
|
import {
|
||||||
|
HttpEvent,
|
||||||
|
HttpHandler,
|
||||||
|
HttpInterceptor,
|
||||||
|
HttpRequest,
|
||||||
|
HttpXsrfTokenExtractor
|
||||||
|
} from '@angular/common/http';
|
||||||
import {Injectable} from '@angular/core';
|
import {Injectable} from '@angular/core';
|
||||||
import {Observable} from 'rxjs';
|
import {Observable} from 'rxjs';
|
||||||
import {CookieService} from "ngx-cookie";
|
|
||||||
import {TokenConstants} from "../../security/TokenConstants";
|
import {TokenConstants} from "../../security/TokenConstants";
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class AbsoluteUrlCsrfInterceptor implements HttpInterceptor {
|
export class AbsoluteUrlCsrfInterceptor implements HttpInterceptor {
|
||||||
|
|
||||||
constructor(private cookieService: CookieService) {
|
constructor(private extractor: HttpXsrfTokenExtractor) {
|
||||||
}
|
}
|
||||||
|
|
||||||
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
|
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
|
||||||
|
|
||||||
let requestToForward = req;
|
if (req.method === 'GET' || req.method === 'HEAD') {
|
||||||
let token = this.cookieService.get(TokenConstants.CSRF_TOKEN_NAME) as string;
|
return next.handle(req);
|
||||||
|
|
||||||
if (token != null) {
|
|
||||||
let headers = {};
|
|
||||||
let headerName = TokenConstants.CSRF_HEADER_NAME;
|
|
||||||
headers[headerName] = token;
|
|
||||||
requestToForward = req.clone({setHeaders: headers});
|
|
||||||
}
|
}
|
||||||
return next.handle(requestToForward);
|
let token = this.extractor.getToken();
|
||||||
|
let headerName = TokenConstants.CSRF_HEADER_NAME;
|
||||||
|
|
||||||
|
if (token != null && !req.headers.has(headerName)) {
|
||||||
|
let headers = {};
|
||||||
|
headers[headerName] = token;
|
||||||
|
req = req.clone({setHeaders: headers});
|
||||||
|
}
|
||||||
|
return next.handle(req);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,6 @@ const path = require('path');
|
||||||
const webpack = require('webpack');
|
const webpack = require('webpack');
|
||||||
const CopyWebpackPlugin = require('copy-webpack-plugin');
|
const CopyWebpackPlugin = require('copy-webpack-plugin');
|
||||||
const HtmlWebpackPlugin = require('html-webpack-plugin');
|
const HtmlWebpackPlugin = require('html-webpack-plugin');
|
||||||
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
|
|
||||||
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
|
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
|
||||||
const TerserPlugin = require('terser-webpack-plugin');
|
const TerserPlugin = require('terser-webpack-plugin');
|
||||||
|
|
||||||
|
|
@ -14,9 +13,9 @@ function _path(p) {
|
||||||
module.exports = {
|
module.exports = {
|
||||||
mode: 'production',
|
mode: 'production',
|
||||||
entry: {
|
entry: {
|
||||||
'polyfills': './build/scripts/polyfills.js',
|
polyfills: './build/scripts/polyfills.js',
|
||||||
'vendor': './build/scripts/vendor.js',
|
vendor: './build/scripts/vendor.js',
|
||||||
'main': './build/scripts/main.aot.js'
|
main: './build/scripts/main.aot.js',
|
||||||
},
|
},
|
||||||
|
|
||||||
context: process.cwd(),
|
context: process.cwd(),
|
||||||
|
|
@ -24,26 +23,33 @@ module.exports = {
|
||||||
output: {
|
output: {
|
||||||
path: path.join(process.cwd(), './dist'),
|
path: path.join(process.cwd(), './dist'),
|
||||||
filename: '[name].[chunkhash].bundle.js',
|
filename: '[name].[chunkhash].bundle.js',
|
||||||
chunkFilename: '[id].[chunkhash].chunk.js'
|
chunkFilename: '[id].[chunkhash].chunk.js',
|
||||||
|
assetModuleFilename: 'src/resources/[base]',
|
||||||
|
publicPath: 'auto'
|
||||||
},
|
},
|
||||||
|
|
||||||
module: {
|
module: {
|
||||||
rules: [
|
rules: [
|
||||||
{
|
{
|
||||||
test: /\.js$/,
|
test: /\.js$/,
|
||||||
|
use: {
|
||||||
loader: 'babel-loader',
|
loader: 'babel-loader',
|
||||||
include: [path.resolve(__dirname, "node_modules")],
|
|
||||||
options: {
|
options: {
|
||||||
presets: ['@babel/preset-env']
|
presets: ['@babel/preset-env']
|
||||||
}
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
test: /\.js$/,
|
test: /\.js$/,
|
||||||
|
use: {
|
||||||
loader: 'angular-router-loader?aot=true'
|
loader: 'angular-router-loader?aot=true'
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
test: /\.html$/,
|
test: /\.html$/,
|
||||||
|
use: {
|
||||||
loader: 'raw-loader'
|
loader: 'raw-loader'
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
test: /\.css$/,
|
test: /\.css$/,
|
||||||
|
|
@ -56,12 +62,14 @@ module.exports = {
|
||||||
// publicPath: '../'
|
// publicPath: '../'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"css-loader"
|
{
|
||||||
|
loader: 'css-loader'
|
||||||
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
test: /\.(png|jpe?g|gif|svg|woff|woff2|ttf|eot|ico|otf)$/,
|
test: /\.(png|jpe?g|gif|svg|woff|woff2|ttf|eot|ico|otf)$/,
|
||||||
loader: 'file-loader?name=src/resources/[name].[hash].[ext]'
|
type: 'asset/resource'
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
@ -69,7 +77,6 @@ module.exports = {
|
||||||
optimization: {
|
optimization: {
|
||||||
minimizer: [
|
minimizer: [
|
||||||
new TerserPlugin({
|
new TerserPlugin({
|
||||||
cache: true,
|
|
||||||
parallel: true,
|
parallel: true,
|
||||||
terserOptions: {
|
terserOptions: {
|
||||||
// https://github.com/webpack-contrib/terser-webpack-plugin#terseroptions
|
// https://github.com/webpack-contrib/terser-webpack-plugin#terseroptions
|
||||||
|
|
@ -83,7 +90,6 @@ module.exports = {
|
||||||
},
|
},
|
||||||
|
|
||||||
plugins: [
|
plugins: [
|
||||||
// new BundleAnalyzerPlugin(),
|
|
||||||
new HtmlWebpackPlugin({
|
new HtmlWebpackPlugin({
|
||||||
template: 'index.webpack.html',
|
template: 'index.webpack.html',
|
||||||
filename: 'index.html',
|
filename: 'index.html',
|
||||||
|
|
@ -100,8 +106,8 @@ module.exports = {
|
||||||
{from: 'src/resources/landing', to: 'src/resources/landing'}
|
{from: 'src/resources/landing', to: 'src/resources/landing'}
|
||||||
]),
|
]),
|
||||||
new MiniCssExtractPlugin({
|
new MiniCssExtractPlugin({
|
||||||
filename: '[name].[hash].css',
|
filename: '[name].[fullhash].css',
|
||||||
chunkFilename: '[id].[hash].css'
|
chunkFilename: '[id].[fullhash].css'
|
||||||
}),
|
}),
|
||||||
new webpack.ProvidePlugin({
|
new webpack.ProvidePlugin({
|
||||||
$: "jquery",
|
$: "jquery",
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>ru.cg.webbpm.packages.base</groupId>
|
<groupId>ru.cg.webbpm.packages.base</groupId>
|
||||||
<artifactId>resources</artifactId>
|
<artifactId>resources</artifactId>
|
||||||
<version>3.182.0</version>
|
<version>3.185.0</version>
|
||||||
<organization>
|
<organization>
|
||||||
<name>Micord</name>
|
<name>Micord</name>
|
||||||
</organization>
|
</organization>
|
||||||
|
|
@ -28,13 +28,13 @@
|
||||||
<jooq.version>3.19.3</jooq.version>
|
<jooq.version>3.19.3</jooq.version>
|
||||||
<jupiter.version>5.10.2</jupiter.version>
|
<jupiter.version>5.10.2</jupiter.version>
|
||||||
<enforcer.manageVersions>true</enforcer.manageVersions>
|
<enforcer.manageVersions>true</enforcer.manageVersions>
|
||||||
<webbpm-platform.version>3.182.0</webbpm-platform.version>
|
<webbpm-platform.version>3.185.0</webbpm-platform.version>
|
||||||
<h2.version>1.4.200</h2.version>
|
<h2.version>1.4.200</h2.version>
|
||||||
<build.timestamp>1004163046</build.timestamp>
|
<build.timestamp>1107112530</build.timestamp>
|
||||||
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
||||||
<junit.platform.version>1.10.0</junit.platform.version>
|
<junit.platform.version>1.10.0</junit.platform.version>
|
||||||
<enforcer.manageExclusions>true</enforcer.manageExclusions>
|
<enforcer.manageExclusions>true</enforcer.manageExclusions>
|
||||||
<revision>3.182.0</revision>
|
<revision>3.185.0</revision>
|
||||||
<metadata.ts.filename>typescript.metadata.json</metadata.ts.filename>
|
<metadata.ts.filename>typescript.metadata.json</metadata.ts.filename>
|
||||||
<package.repository.url>https://repo.micord.ru</package.repository.url>
|
<package.repository.url>https://repo.micord.ru</package.repository.url>
|
||||||
<maven.build.timestamp.format>MMddHHmmss</maven.build.timestamp.format>
|
<maven.build.timestamp.format>MMddHHmmss</maven.build.timestamp.format>
|
||||||
|
|
@ -47,19 +47,19 @@
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>ru.cg.webbpm.packages.base</groupId>
|
<groupId>ru.cg.webbpm.packages.base</groupId>
|
||||||
<artifactId>converters</artifactId>
|
<artifactId>converters</artifactId>
|
||||||
<version>3.182.0</version>
|
<version>3.185.0</version>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>ru.cg.webbpm.packages.base</groupId>
|
<groupId>ru.cg.webbpm.packages.base</groupId>
|
||||||
<artifactId>backend</artifactId>
|
<artifactId>backend</artifactId>
|
||||||
<version>3.182.0</version>
|
<version>3.185.0</version>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>ru.cg.webbpm.packages.base</groupId>
|
<groupId>ru.cg.webbpm.packages.base</groupId>
|
||||||
<artifactId>frontend</artifactId>
|
<artifactId>frontend</artifactId>
|
||||||
<version>3.182.0</version>
|
<version>3.185.0</version>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
|
||||||
|
|
@ -60,7 +60,7 @@
|
||||||
<ul>
|
<ul>
|
||||||
|
|
||||||
<li>Образец внешней ссылки: <code>https://www.wildberries.ru/catalog/${sku}/detail.aspx</code></li>
|
<li>Образец внешней ссылки: <code>https://www.wildberries.ru/catalog/${sku}/detail.aspx</code></li>
|
||||||
<li>Образец внутренней ссылки: <code>products/ru.cg.webbpm.packages.base:resources:jar:3.182.0</code></li>
|
<li>Образец внутренней ссылки: <code>products/ru.cg.webbpm.packages.base:resources:jar:3.185.0</code></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
|
|
|
||||||
|
|
@ -4,17 +4,17 @@
|
||||||
<description>Base webbpm package</description>
|
<description>Base webbpm package</description>
|
||||||
<groupId>ru.cg.webbpm.packages.base</groupId>
|
<groupId>ru.cg.webbpm.packages.base</groupId>
|
||||||
<artifactId>resources</artifactId>
|
<artifactId>resources</artifactId>
|
||||||
<version>3.182.0</version>
|
<version>3.185.0</version>
|
||||||
<studioVersion>3.182.0</studioVersion>
|
<studioVersion>3.185.0</studioVersion>
|
||||||
|
|
||||||
<backendModule>
|
<backendModule>
|
||||||
<groupId>ru.cg.webbpm.packages.base</groupId>
|
<groupId>ru.cg.webbpm.packages.base</groupId>
|
||||||
<artifactId>backend</artifactId>
|
<artifactId>backend</artifactId>
|
||||||
<version>3.182.0</version>
|
<version>3.185.0</version>
|
||||||
</backendModule>
|
</backendModule>
|
||||||
<frontendModule>
|
<frontendModule>
|
||||||
<packageName>@webbpm/base-package</packageName>
|
<packageName>@webbpm/base-package</packageName>
|
||||||
<version>3.182.0</version>
|
<version>3.185.0</version>
|
||||||
</frontendModule>
|
</frontendModule>
|
||||||
</packageInfo>
|
</packageInfo>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,11 @@
|
||||||
<documentation>component/buttons/Кнопка.html</documentation>
|
<documentation>component/buttons/Кнопка.html</documentation>
|
||||||
<internal>false</internal>
|
<internal>false</internal>
|
||||||
<versions>
|
<versions>
|
||||||
<studioVersion>3.182.0</studioVersion>
|
<studioVersion>3.185.0</studioVersion>
|
||||||
<packageVersions>
|
<packageVersions>
|
||||||
<entry>
|
<entry>
|
||||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||||
<value>3.182.0</value>
|
<value>3.185.0</value>
|
||||||
</entry>
|
</entry>
|
||||||
</packageVersions>
|
</packageVersions>
|
||||||
</versions>
|
</versions>
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,11 @@
|
||||||
<documentation>component/buttons/Кнопка_отмены.html</documentation>
|
<documentation>component/buttons/Кнопка_отмены.html</documentation>
|
||||||
<internal>false</internal>
|
<internal>false</internal>
|
||||||
<versions>
|
<versions>
|
||||||
<studioVersion>3.182.0</studioVersion>
|
<studioVersion>3.185.0</studioVersion>
|
||||||
<packageVersions>
|
<packageVersions>
|
||||||
<entry>
|
<entry>
|
||||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||||
<value>3.182.0</value>
|
<value>3.185.0</value>
|
||||||
</entry>
|
</entry>
|
||||||
</packageVersions>
|
</packageVersions>
|
||||||
</versions>
|
</versions>
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,11 @@
|
||||||
<documentation>component/buttons/Кнопка_очистки_фильтра.html</documentation>
|
<documentation>component/buttons/Кнопка_очистки_фильтра.html</documentation>
|
||||||
<internal>false</internal>
|
<internal>false</internal>
|
||||||
<versions>
|
<versions>
|
||||||
<studioVersion>3.182.0</studioVersion>
|
<studioVersion>3.185.0</studioVersion>
|
||||||
<packageVersions>
|
<packageVersions>
|
||||||
<entry>
|
<entry>
|
||||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||||
<value>3.182.0</value>
|
<value>3.185.0</value>
|
||||||
</entry>
|
</entry>
|
||||||
</packageVersions>
|
</packageVersions>
|
||||||
</versions>
|
</versions>
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,11 @@
|
||||||
<documentation>component/buttons/Кнопка_удаления.html</documentation>
|
<documentation>component/buttons/Кнопка_удаления.html</documentation>
|
||||||
<internal>false</internal>
|
<internal>false</internal>
|
||||||
<versions>
|
<versions>
|
||||||
<studioVersion>3.182.0</studioVersion>
|
<studioVersion>3.185.0</studioVersion>
|
||||||
<packageVersions>
|
<packageVersions>
|
||||||
<entry>
|
<entry>
|
||||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||||
<value>3.182.0</value>
|
<value>3.185.0</value>
|
||||||
</entry>
|
</entry>
|
||||||
</packageVersions>
|
</packageVersions>
|
||||||
</versions>
|
</versions>
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,11 @@
|
||||||
<documentation>component/buttons/Кнопка_загрузки.html</documentation>
|
<documentation>component/buttons/Кнопка_загрузки.html</documentation>
|
||||||
<internal>false</internal>
|
<internal>false</internal>
|
||||||
<versions>
|
<versions>
|
||||||
<studioVersion>3.182.0</studioVersion>
|
<studioVersion>3.185.0</studioVersion>
|
||||||
<packageVersions>
|
<packageVersions>
|
||||||
<entry>
|
<entry>
|
||||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||||
<value>3.182.0</value>
|
<value>3.185.0</value>
|
||||||
</entry>
|
</entry>
|
||||||
</packageVersions>
|
</packageVersions>
|
||||||
</versions>
|
</versions>
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,11 @@
|
||||||
<documentation>component/buttons/Кнопка_вызова_ошибки.html</documentation>
|
<documentation>component/buttons/Кнопка_вызова_ошибки.html</documentation>
|
||||||
<internal>false</internal>
|
<internal>false</internal>
|
||||||
<versions>
|
<versions>
|
||||||
<studioVersion>3.182.0</studioVersion>
|
<studioVersion>3.185.0</studioVersion>
|
||||||
<packageVersions>
|
<packageVersions>
|
||||||
<entry>
|
<entry>
|
||||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||||
<value>3.182.0</value>
|
<value>3.185.0</value>
|
||||||
</entry>
|
</entry>
|
||||||
</packageVersions>
|
</packageVersions>
|
||||||
</versions>
|
</versions>
|
||||||
|
|
|
||||||
|
|
@ -7,11 +7,11 @@
|
||||||
<documentation>component/buttons/Кнопка_выполнения_бизнес-процесса.html</documentation>
|
<documentation>component/buttons/Кнопка_выполнения_бизнес-процесса.html</documentation>
|
||||||
<internal>false</internal>
|
<internal>false</internal>
|
||||||
<versions>
|
<versions>
|
||||||
<studioVersion>3.182.0</studioVersion>
|
<studioVersion>3.185.0</studioVersion>
|
||||||
<packageVersions>
|
<packageVersions>
|
||||||
<entry>
|
<entry>
|
||||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||||
<value>3.182.0</value>
|
<value>3.185.0</value>
|
||||||
</entry>
|
</entry>
|
||||||
</packageVersions>
|
</packageVersions>
|
||||||
</versions>
|
</versions>
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,11 @@
|
||||||
<documentation>component/buttons/Кнопка_выполнения_SQL.html</documentation>
|
<documentation>component/buttons/Кнопка_выполнения_SQL.html</documentation>
|
||||||
<internal>false</internal>
|
<internal>false</internal>
|
||||||
<versions>
|
<versions>
|
||||||
<studioVersion>3.182.0</studioVersion>
|
<studioVersion>3.185.0</studioVersion>
|
||||||
<packageVersions>
|
<packageVersions>
|
||||||
<entry>
|
<entry>
|
||||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||||
<value>3.182.0</value>
|
<value>3.185.0</value>
|
||||||
</entry>
|
</entry>
|
||||||
</packageVersions>
|
</packageVersions>
|
||||||
</versions>
|
</versions>
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,11 @@
|
||||||
<documentation>component/buttons/Кнопка_для_фильтрации.html</documentation>
|
<documentation>component/buttons/Кнопка_для_фильтрации.html</documentation>
|
||||||
<internal>false</internal>
|
<internal>false</internal>
|
||||||
<versions>
|
<versions>
|
||||||
<studioVersion>3.182.0</studioVersion>
|
<studioVersion>3.185.0</studioVersion>
|
||||||
<packageVersions>
|
<packageVersions>
|
||||||
<entry>
|
<entry>
|
||||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||||
<value>3.182.0</value>
|
<value>3.185.0</value>
|
||||||
</entry>
|
</entry>
|
||||||
</packageVersions>
|
</packageVersions>
|
||||||
</versions>
|
</versions>
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,11 @@
|
||||||
<documentation>component/buttons/Кнопка_навигации.html</documentation>
|
<documentation>component/buttons/Кнопка_навигации.html</documentation>
|
||||||
<internal>false</internal>
|
<internal>false</internal>
|
||||||
<versions>
|
<versions>
|
||||||
<studioVersion>3.182.0</studioVersion>
|
<studioVersion>3.185.0</studioVersion>
|
||||||
<packageVersions>
|
<packageVersions>
|
||||||
<entry>
|
<entry>
|
||||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||||
<value>3.182.0</value>
|
<value>3.185.0</value>
|
||||||
</entry>
|
</entry>
|
||||||
</packageVersions>
|
</packageVersions>
|
||||||
</versions>
|
</versions>
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,11 @@
|
||||||
<documentation>component/buttons/Кнопка_сохранения.html</documentation>
|
<documentation>component/buttons/Кнопка_сохранения.html</documentation>
|
||||||
<internal>false</internal>
|
<internal>false</internal>
|
||||||
<versions>
|
<versions>
|
||||||
<studioVersion>3.182.0</studioVersion>
|
<studioVersion>3.185.0</studioVersion>
|
||||||
<packageVersions>
|
<packageVersions>
|
||||||
<entry>
|
<entry>
|
||||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||||
<value>3.182.0</value>
|
<value>3.185.0</value>
|
||||||
</entry>
|
</entry>
|
||||||
</packageVersions>
|
</packageVersions>
|
||||||
</versions>
|
</versions>
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,11 @@
|
||||||
<documentation>component/buttons/Кнопка_выбора.html</documentation>
|
<documentation>component/buttons/Кнопка_выбора.html</documentation>
|
||||||
<internal>false</internal>
|
<internal>false</internal>
|
||||||
<versions>
|
<versions>
|
||||||
<studioVersion>3.182.0</studioVersion>
|
<studioVersion>3.185.0</studioVersion>
|
||||||
<packageVersions>
|
<packageVersions>
|
||||||
<entry>
|
<entry>
|
||||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||||
<value>3.182.0</value>
|
<value>3.185.0</value>
|
||||||
</entry>
|
</entry>
|
||||||
</packageVersions>
|
</packageVersions>
|
||||||
</versions>
|
</versions>
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,11 @@
|
||||||
<documentation>component/buttons/Кнопка_подписи.html</documentation>
|
<documentation>component/buttons/Кнопка_подписи.html</documentation>
|
||||||
<internal>false</internal>
|
<internal>false</internal>
|
||||||
<versions>
|
<versions>
|
||||||
<studioVersion>3.182.0</studioVersion>
|
<studioVersion>3.185.0</studioVersion>
|
||||||
<packageVersions>
|
<packageVersions>
|
||||||
<entry>
|
<entry>
|
||||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||||
<value>3.182.0</value>
|
<value>3.185.0</value>
|
||||||
</entry>
|
</entry>
|
||||||
</packageVersions>
|
</packageVersions>
|
||||||
</versions>
|
</versions>
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,11 @@
|
||||||
<documentation>component/buttons/Кнопка_запуска_бизнес-процесса.html</documentation>
|
<documentation>component/buttons/Кнопка_запуска_бизнес-процесса.html</documentation>
|
||||||
<internal>false</internal>
|
<internal>false</internal>
|
||||||
<versions>
|
<versions>
|
||||||
<studioVersion>3.182.0</studioVersion>
|
<studioVersion>3.185.0</studioVersion>
|
||||||
<packageVersions>
|
<packageVersions>
|
||||||
<entry>
|
<entry>
|
||||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||||
<value>3.182.0</value>
|
<value>3.185.0</value>
|
||||||
</entry>
|
</entry>
|
||||||
</packageVersions>
|
</packageVersions>
|
||||||
</versions>
|
</versions>
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,11 @@
|
||||||
<documentation>component/buttons/reporting/Кнопка_печати_из_графа_сущности.html</documentation>
|
<documentation>component/buttons/reporting/Кнопка_печати_из_графа_сущности.html</documentation>
|
||||||
<internal>false</internal>
|
<internal>false</internal>
|
||||||
<versions>
|
<versions>
|
||||||
<studioVersion>3.182.0</studioVersion>
|
<studioVersion>3.185.0</studioVersion>
|
||||||
<packageVersions>
|
<packageVersions>
|
||||||
<entry>
|
<entry>
|
||||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||||
<value>3.182.0</value>
|
<value>3.185.0</value>
|
||||||
</entry>
|
</entry>
|
||||||
</packageVersions>
|
</packageVersions>
|
||||||
</versions>
|
</versions>
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,11 @@
|
||||||
<documentation>component/buttons/reporting/Кнопка_печати_отчета_из_формы.html</documentation>
|
<documentation>component/buttons/reporting/Кнопка_печати_отчета_из_формы.html</documentation>
|
||||||
<internal>false</internal>
|
<internal>false</internal>
|
||||||
<versions>
|
<versions>
|
||||||
<studioVersion>3.182.0</studioVersion>
|
<studioVersion>3.185.0</studioVersion>
|
||||||
<packageVersions>
|
<packageVersions>
|
||||||
<entry>
|
<entry>
|
||||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||||
<value>3.182.0</value>
|
<value>3.185.0</value>
|
||||||
</entry>
|
</entry>
|
||||||
</packageVersions>
|
</packageVersions>
|
||||||
</versions>
|
</versions>
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,11 @@
|
||||||
<documentation>component/containers/Сворачиваемая_панель.html</documentation>
|
<documentation>component/containers/Сворачиваемая_панель.html</documentation>
|
||||||
<internal>false</internal>
|
<internal>false</internal>
|
||||||
<versions>
|
<versions>
|
||||||
<studioVersion>3.182.0</studioVersion>
|
<studioVersion>3.185.0</studioVersion>
|
||||||
<packageVersions>
|
<packageVersions>
|
||||||
<entry>
|
<entry>
|
||||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||||
<value>3.182.0</value>
|
<value>3.185.0</value>
|
||||||
</entry>
|
</entry>
|
||||||
</packageVersions>
|
</packageVersions>
|
||||||
</versions>
|
</versions>
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,11 @@
|
||||||
<documentation>component/containers/Диалог.html</documentation>
|
<documentation>component/containers/Диалог.html</documentation>
|
||||||
<internal>false</internal>
|
<internal>false</internal>
|
||||||
<versions>
|
<versions>
|
||||||
<studioVersion>3.182.0</studioVersion>
|
<studioVersion>3.185.0</studioVersion>
|
||||||
<packageVersions>
|
<packageVersions>
|
||||||
<entry>
|
<entry>
|
||||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||||
<value>3.182.0</value>
|
<value>3.185.0</value>
|
||||||
</entry>
|
</entry>
|
||||||
</packageVersions>
|
</packageVersions>
|
||||||
</versions>
|
</versions>
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,11 @@
|
||||||
<documentation>component/containers/Контейнер_с_кнопками.html</documentation>
|
<documentation>component/containers/Контейнер_с_кнопками.html</documentation>
|
||||||
<internal>false</internal>
|
<internal>false</internal>
|
||||||
<versions>
|
<versions>
|
||||||
<studioVersion>3.182.0</studioVersion>
|
<studioVersion>3.185.0</studioVersion>
|
||||||
<packageVersions>
|
<packageVersions>
|
||||||
<entry>
|
<entry>
|
||||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||||
<value>3.182.0</value>
|
<value>3.185.0</value>
|
||||||
</entry>
|
</entry>
|
||||||
</packageVersions>
|
</packageVersions>
|
||||||
</versions>
|
</versions>
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,11 @@
|
||||||
<documentation>component/containers/Группа_полей.html</documentation>
|
<documentation>component/containers/Группа_полей.html</documentation>
|
||||||
<internal>false</internal>
|
<internal>false</internal>
|
||||||
<versions>
|
<versions>
|
||||||
<studioVersion>3.182.0</studioVersion>
|
<studioVersion>3.185.0</studioVersion>
|
||||||
<packageVersions>
|
<packageVersions>
|
||||||
<entry>
|
<entry>
|
||||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||||
<value>3.182.0</value>
|
<value>3.185.0</value>
|
||||||
</entry>
|
</entry>
|
||||||
</packageVersions>
|
</packageVersions>
|
||||||
</versions>
|
</versions>
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,11 @@
|
||||||
<documentation>component/containers/Набор_фильтров.html</documentation>
|
<documentation>component/containers/Набор_фильтров.html</documentation>
|
||||||
<internal>false</internal>
|
<internal>false</internal>
|
||||||
<versions>
|
<versions>
|
||||||
<studioVersion>3.182.0</studioVersion>
|
<studioVersion>3.185.0</studioVersion>
|
||||||
<packageVersions>
|
<packageVersions>
|
||||||
<entry>
|
<entry>
|
||||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||||
<value>3.182.0</value>
|
<value>3.185.0</value>
|
||||||
</entry>
|
</entry>
|
||||||
</packageVersions>
|
</packageVersions>
|
||||||
</versions>
|
</versions>
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,11 @@
|
||||||
<documentation>component/containers/Форма.html</documentation>
|
<documentation>component/containers/Форма.html</documentation>
|
||||||
<internal>false</internal>
|
<internal>false</internal>
|
||||||
<versions>
|
<versions>
|
||||||
<studioVersion>3.182.0</studioVersion>
|
<studioVersion>3.185.0</studioVersion>
|
||||||
<packageVersions>
|
<packageVersions>
|
||||||
<entry>
|
<entry>
|
||||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||||
<value>3.182.0</value>
|
<value>3.185.0</value>
|
||||||
</entry>
|
</entry>
|
||||||
</packageVersions>
|
</packageVersions>
|
||||||
</versions>
|
</versions>
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,11 @@
|
||||||
<documentation>component/containers/Горизонтальный_контейнер.html</documentation>
|
<documentation>component/containers/Горизонтальный_контейнер.html</documentation>
|
||||||
<internal>false</internal>
|
<internal>false</internal>
|
||||||
<versions>
|
<versions>
|
||||||
<studioVersion>3.182.0</studioVersion>
|
<studioVersion>3.185.0</studioVersion>
|
||||||
<packageVersions>
|
<packageVersions>
|
||||||
<entry>
|
<entry>
|
||||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||||
<value>3.182.0</value>
|
<value>3.185.0</value>
|
||||||
</entry>
|
</entry>
|
||||||
</packageVersions>
|
</packageVersions>
|
||||||
</versions>
|
</versions>
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,11 @@
|
||||||
<documentation>component/containers/Контейнер_вкладок.html</documentation>
|
<documentation>component/containers/Контейнер_вкладок.html</documentation>
|
||||||
<internal>false</internal>
|
<internal>false</internal>
|
||||||
<versions>
|
<versions>
|
||||||
<studioVersion>3.182.0</studioVersion>
|
<studioVersion>3.185.0</studioVersion>
|
||||||
<packageVersions>
|
<packageVersions>
|
||||||
<entry>
|
<entry>
|
||||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||||
<value>3.182.0</value>
|
<value>3.185.0</value>
|
||||||
</entry>
|
</entry>
|
||||||
</packageVersions>
|
</packageVersions>
|
||||||
</versions>
|
</versions>
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,11 @@
|
||||||
<documentation>component/containers/Вкладка.html</documentation>
|
<documentation>component/containers/Вкладка.html</documentation>
|
||||||
<internal>false</internal>
|
<internal>false</internal>
|
||||||
<versions>
|
<versions>
|
||||||
<studioVersion>3.182.0</studioVersion>
|
<studioVersion>3.185.0</studioVersion>
|
||||||
<packageVersions>
|
<packageVersions>
|
||||||
<entry>
|
<entry>
|
||||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||||
<value>3.182.0</value>
|
<value>3.185.0</value>
|
||||||
</entry>
|
</entry>
|
||||||
</packageVersions>
|
</packageVersions>
|
||||||
</versions>
|
</versions>
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,11 @@
|
||||||
<documentation>component/containers/Вертикальный_контейнер.html</documentation>
|
<documentation>component/containers/Вертикальный_контейнер.html</documentation>
|
||||||
<internal>false</internal>
|
<internal>false</internal>
|
||||||
<versions>
|
<versions>
|
||||||
<studioVersion>3.182.0</studioVersion>
|
<studioVersion>3.185.0</studioVersion>
|
||||||
<packageVersions>
|
<packageVersions>
|
||||||
<entry>
|
<entry>
|
||||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||||
<value>3.182.0</value>
|
<value>3.185.0</value>
|
||||||
</entry>
|
</entry>
|
||||||
</packageVersions>
|
</packageVersions>
|
||||||
</versions>
|
</versions>
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,11 @@
|
||||||
<documentation>component/containers/Окно.html</documentation>
|
<documentation>component/containers/Окно.html</documentation>
|
||||||
<internal>false</internal>
|
<internal>false</internal>
|
||||||
<versions>
|
<versions>
|
||||||
<studioVersion>3.182.0</studioVersion>
|
<studioVersion>3.185.0</studioVersion>
|
||||||
<packageVersions>
|
<packageVersions>
|
||||||
<entry>
|
<entry>
|
||||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||||
<value>3.182.0</value>
|
<value>3.185.0</value>
|
||||||
</entry>
|
</entry>
|
||||||
</packageVersions>
|
</packageVersions>
|
||||||
</versions>
|
</versions>
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,11 @@
|
||||||
<documentation>component/editable-grids/EditableGrid.html</documentation>
|
<documentation>component/editable-grids/EditableGrid.html</documentation>
|
||||||
<internal>false</internal>
|
<internal>false</internal>
|
||||||
<versions>
|
<versions>
|
||||||
<studioVersion>3.182.0</studioVersion>
|
<studioVersion>3.185.0</studioVersion>
|
||||||
<packageVersions>
|
<packageVersions>
|
||||||
<entry>
|
<entry>
|
||||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||||
<value>3.182.0</value>
|
<value>3.185.0</value>
|
||||||
</entry>
|
</entry>
|
||||||
</packageVersions>
|
</packageVersions>
|
||||||
</versions>
|
</versions>
|
||||||
|
|
|
||||||
|
|
@ -7,11 +7,11 @@
|
||||||
<localization>META-INF/components/localization/editable-grids/autocomplete</localization>
|
<localization>META-INF/components/localization/editable-grids/autocomplete</localization>
|
||||||
<internal>false</internal>
|
<internal>false</internal>
|
||||||
<versions>
|
<versions>
|
||||||
<studioVersion>3.182.0</studioVersion>
|
<studioVersion>3.185.0</studioVersion>
|
||||||
<packageVersions>
|
<packageVersions>
|
||||||
<entry>
|
<entry>
|
||||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||||
<value>3.182.0</value>
|
<value>3.185.0</value>
|
||||||
</entry>
|
</entry>
|
||||||
</packageVersions>
|
</packageVersions>
|
||||||
</versions>
|
</versions>
|
||||||
|
|
|
||||||
|
|
@ -7,11 +7,11 @@
|
||||||
<localization>META-INF/components/localization/editable-grids/check-box</localization>
|
<localization>META-INF/components/localization/editable-grids/check-box</localization>
|
||||||
<internal>false</internal>
|
<internal>false</internal>
|
||||||
<versions>
|
<versions>
|
||||||
<studioVersion>3.182.0</studioVersion>
|
<studioVersion>3.185.0</studioVersion>
|
||||||
<packageVersions>
|
<packageVersions>
|
||||||
<entry>
|
<entry>
|
||||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||||
<value>3.182.0</value>
|
<value>3.185.0</value>
|
||||||
</entry>
|
</entry>
|
||||||
</packageVersions>
|
</packageVersions>
|
||||||
</versions>
|
</versions>
|
||||||
|
|
|
||||||
|
|
@ -7,11 +7,11 @@
|
||||||
<localization>META-INF/components/localization/editable-grids/combo-box</localization>
|
<localization>META-INF/components/localization/editable-grids/combo-box</localization>
|
||||||
<internal>false</internal>
|
<internal>false</internal>
|
||||||
<versions>
|
<versions>
|
||||||
<studioVersion>3.182.0</studioVersion>
|
<studioVersion>3.185.0</studioVersion>
|
||||||
<packageVersions>
|
<packageVersions>
|
||||||
<entry>
|
<entry>
|
||||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||||
<value>3.182.0</value>
|
<value>3.185.0</value>
|
||||||
</entry>
|
</entry>
|
||||||
</packageVersions>
|
</packageVersions>
|
||||||
</versions>
|
</versions>
|
||||||
|
|
|
||||||
|
|
@ -7,11 +7,11 @@
|
||||||
<localization>META-INF/components/localization/editable-grids/date-time-picker</localization>
|
<localization>META-INF/components/localization/editable-grids/date-time-picker</localization>
|
||||||
<internal>false</internal>
|
<internal>false</internal>
|
||||||
<versions>
|
<versions>
|
||||||
<studioVersion>3.182.0</studioVersion>
|
<studioVersion>3.185.0</studioVersion>
|
||||||
<packageVersions>
|
<packageVersions>
|
||||||
<entry>
|
<entry>
|
||||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||||
<value>3.182.0</value>
|
<value>3.185.0</value>
|
||||||
</entry>
|
</entry>
|
||||||
</packageVersions>
|
</packageVersions>
|
||||||
</versions>
|
</versions>
|
||||||
|
|
|
||||||
|
|
@ -7,11 +7,11 @@
|
||||||
<localization>META-INF/components/localization/editable-grids/money-field</localization>
|
<localization>META-INF/components/localization/editable-grids/money-field</localization>
|
||||||
<internal>true</internal>
|
<internal>true</internal>
|
||||||
<versions>
|
<versions>
|
||||||
<studioVersion>3.182.0</studioVersion>
|
<studioVersion>3.185.0</studioVersion>
|
||||||
<packageVersions>
|
<packageVersions>
|
||||||
<entry>
|
<entry>
|
||||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||||
<value>3.182.0</value>
|
<value>3.185.0</value>
|
||||||
</entry>
|
</entry>
|
||||||
</packageVersions>
|
</packageVersions>
|
||||||
</versions>
|
</versions>
|
||||||
|
|
|
||||||
|
|
@ -7,11 +7,11 @@
|
||||||
<localization>META-INF/components/localization/editable-grids/number-field</localization>
|
<localization>META-INF/components/localization/editable-grids/number-field</localization>
|
||||||
<internal>false</internal>
|
<internal>false</internal>
|
||||||
<versions>
|
<versions>
|
||||||
<studioVersion>3.182.0</studioVersion>
|
<studioVersion>3.185.0</studioVersion>
|
||||||
<packageVersions>
|
<packageVersions>
|
||||||
<entry>
|
<entry>
|
||||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||||
<value>3.182.0</value>
|
<value>3.185.0</value>
|
||||||
</entry>
|
</entry>
|
||||||
</packageVersions>
|
</packageVersions>
|
||||||
</versions>
|
</versions>
|
||||||
|
|
|
||||||
|
|
@ -7,11 +7,11 @@
|
||||||
<localization>META-INF/components/localization/editable-grids/one-to-many</localization>
|
<localization>META-INF/components/localization/editable-grids/one-to-many</localization>
|
||||||
<internal>true</internal>
|
<internal>true</internal>
|
||||||
<versions>
|
<versions>
|
||||||
<studioVersion>3.182.0</studioVersion>
|
<studioVersion>3.185.0</studioVersion>
|
||||||
<packageVersions>
|
<packageVersions>
|
||||||
<entry>
|
<entry>
|
||||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||||
<value>3.182.0</value>
|
<value>3.185.0</value>
|
||||||
</entry>
|
</entry>
|
||||||
</packageVersions>
|
</packageVersions>
|
||||||
</versions>
|
</versions>
|
||||||
|
|
|
||||||
|
|
@ -7,11 +7,11 @@
|
||||||
<localization>META-INF/components/localization/editable-grids/one-to-many</localization>
|
<localization>META-INF/components/localization/editable-grids/one-to-many</localization>
|
||||||
<internal>false</internal>
|
<internal>false</internal>
|
||||||
<versions>
|
<versions>
|
||||||
<studioVersion>3.182.0</studioVersion>
|
<studioVersion>3.185.0</studioVersion>
|
||||||
<packageVersions>
|
<packageVersions>
|
||||||
<entry>
|
<entry>
|
||||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||||
<value>3.182.0</value>
|
<value>3.185.0</value>
|
||||||
</entry>
|
</entry>
|
||||||
</packageVersions>
|
</packageVersions>
|
||||||
</versions>
|
</versions>
|
||||||
|
|
|
||||||
|
|
@ -6,11 +6,11 @@
|
||||||
<localization>META-INF/components/localization/editable-grids/read-only</localization>
|
<localization>META-INF/components/localization/editable-grids/read-only</localization>
|
||||||
<internal>true</internal>
|
<internal>true</internal>
|
||||||
<versions>
|
<versions>
|
||||||
<studioVersion>3.182.0</studioVersion>
|
<studioVersion>3.185.0</studioVersion>
|
||||||
<packageVersions>
|
<packageVersions>
|
||||||
<entry>
|
<entry>
|
||||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||||
<value>3.182.0</value>
|
<value>3.185.0</value>
|
||||||
</entry>
|
</entry>
|
||||||
</packageVersions>
|
</packageVersions>
|
||||||
</versions>
|
</versions>
|
||||||
|
|
|
||||||
|
|
@ -5,11 +5,11 @@
|
||||||
<category>editable-grids</category>
|
<category>editable-grids</category>
|
||||||
<internal>true</internal>
|
<internal>true</internal>
|
||||||
<versions>
|
<versions>
|
||||||
<studioVersion>3.182.0</studioVersion>
|
<studioVersion>3.185.0</studioVersion>
|
||||||
<packageVersions>
|
<packageVersions>
|
||||||
<entry>
|
<entry>
|
||||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||||
<value>3.182.0</value>
|
<value>3.185.0</value>
|
||||||
</entry>
|
</entry>
|
||||||
</packageVersions>
|
</packageVersions>
|
||||||
</versions>
|
</versions>
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,11 @@
|
||||||
<documentation>Статичный_выпадающий_список_колонки_таблицы.html</documentation>
|
<documentation>Статичный_выпадающий_список_колонки_таблицы.html</documentation>
|
||||||
<internal>false</internal>
|
<internal>false</internal>
|
||||||
<versions>
|
<versions>
|
||||||
<studioVersion>3.182.0</studioVersion>
|
<studioVersion>3.185.0</studioVersion>
|
||||||
<packageVersions>
|
<packageVersions>
|
||||||
<entry>
|
<entry>
|
||||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||||
<value>3.182.0</value>
|
<value>3.185.0</value>
|
||||||
</entry>
|
</entry>
|
||||||
</packageVersions>
|
</packageVersions>
|
||||||
</versions>
|
</versions>
|
||||||
|
|
|
||||||
|
|
@ -7,11 +7,11 @@
|
||||||
<localization>META-INF/components/localization/editable-grids/text-area</localization>
|
<localization>META-INF/components/localization/editable-grids/text-area</localization>
|
||||||
<internal>false</internal>
|
<internal>false</internal>
|
||||||
<versions>
|
<versions>
|
||||||
<studioVersion>3.182.0</studioVersion>
|
<studioVersion>3.185.0</studioVersion>
|
||||||
<packageVersions>
|
<packageVersions>
|
||||||
<entry>
|
<entry>
|
||||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||||
<value>3.182.0</value>
|
<value>3.185.0</value>
|
||||||
</entry>
|
</entry>
|
||||||
</packageVersions>
|
</packageVersions>
|
||||||
</versions>
|
</versions>
|
||||||
|
|
|
||||||
|
|
@ -7,11 +7,11 @@
|
||||||
<localization>META-INF/components/localization/editable-grids/text-field</localization>
|
<localization>META-INF/components/localization/editable-grids/text-field</localization>
|
||||||
<internal>false</internal>
|
<internal>false</internal>
|
||||||
<versions>
|
<versions>
|
||||||
<studioVersion>3.182.0</studioVersion>
|
<studioVersion>3.185.0</studioVersion>
|
||||||
<packageVersions>
|
<packageVersions>
|
||||||
<entry>
|
<entry>
|
||||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||||
<value>3.182.0</value>
|
<value>3.185.0</value>
|
||||||
</entry>
|
</entry>
|
||||||
</packageVersions>
|
</packageVersions>
|
||||||
</versions>
|
</versions>
|
||||||
|
|
|
||||||
|
|
@ -7,11 +7,11 @@
|
||||||
<localization>META-INF/components/localization/editable-grids/time-picker</localization>
|
<localization>META-INF/components/localization/editable-grids/time-picker</localization>
|
||||||
<internal>false</internal>
|
<internal>false</internal>
|
||||||
<versions>
|
<versions>
|
||||||
<studioVersion>3.182.0</studioVersion>
|
<studioVersion>3.185.0</studioVersion>
|
||||||
<packageVersions>
|
<packageVersions>
|
||||||
<entry>
|
<entry>
|
||||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||||
<value>3.182.0</value>
|
<value>3.185.0</value>
|
||||||
</entry>
|
</entry>
|
||||||
</packageVersions>
|
</packageVersions>
|
||||||
</versions>
|
</versions>
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,11 @@
|
||||||
<documentation>component/fields/ФИАС.html</documentation>
|
<documentation>component/fields/ФИАС.html</documentation>
|
||||||
<internal>false</internal>
|
<internal>false</internal>
|
||||||
<versions>
|
<versions>
|
||||||
<studioVersion>3.182.0</studioVersion>
|
<studioVersion>3.185.0</studioVersion>
|
||||||
<packageVersions>
|
<packageVersions>
|
||||||
<entry>
|
<entry>
|
||||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||||
<value>3.182.0</value>
|
<value>3.185.0</value>
|
||||||
</entry>
|
</entry>
|
||||||
</packageVersions>
|
</packageVersions>
|
||||||
</versions>
|
</versions>
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,11 @@
|
||||||
<documentation>component/fields/Поле_ввода_с_подбором_значения.html</documentation>
|
<documentation>component/fields/Поле_ввода_с_подбором_значения.html</documentation>
|
||||||
<internal>false</internal>
|
<internal>false</internal>
|
||||||
<versions>
|
<versions>
|
||||||
<studioVersion>3.182.0</studioVersion>
|
<studioVersion>3.185.0</studioVersion>
|
||||||
<packageVersions>
|
<packageVersions>
|
||||||
<entry>
|
<entry>
|
||||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||||
<value>3.182.0</value>
|
<value>3.185.0</value>
|
||||||
</entry>
|
</entry>
|
||||||
</packageVersions>
|
</packageVersions>
|
||||||
</versions>
|
</versions>
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,11 @@
|
||||||
<documentation>component/fields/Флаг.html</documentation>
|
<documentation>component/fields/Флаг.html</documentation>
|
||||||
<internal>false</internal>
|
<internal>false</internal>
|
||||||
<versions>
|
<versions>
|
||||||
<studioVersion>3.182.0</studioVersion>
|
<studioVersion>3.185.0</studioVersion>
|
||||||
<packageVersions>
|
<packageVersions>
|
||||||
<entry>
|
<entry>
|
||||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||||
<value>3.182.0</value>
|
<value>3.185.0</value>
|
||||||
</entry>
|
</entry>
|
||||||
</packageVersions>
|
</packageVersions>
|
||||||
</versions>
|
</versions>
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,11 @@
|
||||||
<documentation>component/fields/Выпадающий_список.html</documentation>
|
<documentation>component/fields/Выпадающий_список.html</documentation>
|
||||||
<internal>false</internal>
|
<internal>false</internal>
|
||||||
<versions>
|
<versions>
|
||||||
<studioVersion>3.182.0</studioVersion>
|
<studioVersion>3.185.0</studioVersion>
|
||||||
<packageVersions>
|
<packageVersions>
|
||||||
<entry>
|
<entry>
|
||||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||||
<value>3.182.0</value>
|
<value>3.185.0</value>
|
||||||
</entry>
|
</entry>
|
||||||
</packageVersions>
|
</packageVersions>
|
||||||
</versions>
|
</versions>
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,11 @@
|
||||||
<documentation>component/fields/Дата.html</documentation>
|
<documentation>component/fields/Дата.html</documentation>
|
||||||
<internal>false</internal>
|
<internal>false</internal>
|
||||||
<versions>
|
<versions>
|
||||||
<studioVersion>3.182.0</studioVersion>
|
<studioVersion>3.185.0</studioVersion>
|
||||||
<packageVersions>
|
<packageVersions>
|
||||||
<entry>
|
<entry>
|
||||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||||
<value>3.182.0</value>
|
<value>3.185.0</value>
|
||||||
</entry>
|
</entry>
|
||||||
</packageVersions>
|
</packageVersions>
|
||||||
</versions>
|
</versions>
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,11 @@
|
||||||
<documentation>component/fields/EditableOneToMany.html</documentation>
|
<documentation>component/fields/EditableOneToMany.html</documentation>
|
||||||
<internal>false</internal>
|
<internal>false</internal>
|
||||||
<versions>
|
<versions>
|
||||||
<studioVersion>3.182.0</studioVersion>
|
<studioVersion>3.185.0</studioVersion>
|
||||||
<packageVersions>
|
<packageVersions>
|
||||||
<entry>
|
<entry>
|
||||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||||
<value>3.182.0</value>
|
<value>3.185.0</value>
|
||||||
</entry>
|
</entry>
|
||||||
</packageVersions>
|
</packageVersions>
|
||||||
</versions>
|
</versions>
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,11 @@
|
||||||
<documentation>component/fields/Файл.html</documentation>
|
<documentation>component/fields/Файл.html</documentation>
|
||||||
<internal>false</internal>
|
<internal>false</internal>
|
||||||
<versions>
|
<versions>
|
||||||
<studioVersion>3.182.0</studioVersion>
|
<studioVersion>3.185.0</studioVersion>
|
||||||
<packageVersions>
|
<packageVersions>
|
||||||
<entry>
|
<entry>
|
||||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||||
<value>3.182.0</value>
|
<value>3.185.0</value>
|
||||||
</entry>
|
</entry>
|
||||||
</packageVersions>
|
</packageVersions>
|
||||||
</versions>
|
</versions>
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,11 @@
|
||||||
<documentation>component/fields/Файл.html</documentation>
|
<documentation>component/fields/Файл.html</documentation>
|
||||||
<internal>false</internal>
|
<internal>false</internal>
|
||||||
<versions>
|
<versions>
|
||||||
<studioVersion>3.182.0</studioVersion>
|
<studioVersion>3.185.0</studioVersion>
|
||||||
<packageVersions>
|
<packageVersions>
|
||||||
<entry>
|
<entry>
|
||||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||||
<value>3.182.0</value>
|
<value>3.185.0</value>
|
||||||
</entry>
|
</entry>
|
||||||
</packageVersions>
|
</packageVersions>
|
||||||
</versions>
|
</versions>
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,11 @@
|
||||||
<documentation>component/fields/ManyToMany.html</documentation>
|
<documentation>component/fields/ManyToMany.html</documentation>
|
||||||
<internal>false</internal>
|
<internal>false</internal>
|
||||||
<versions>
|
<versions>
|
||||||
<studioVersion>3.182.0</studioVersion>
|
<studioVersion>3.185.0</studioVersion>
|
||||||
<packageVersions>
|
<packageVersions>
|
||||||
<entry>
|
<entry>
|
||||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||||
<value>3.182.0</value>
|
<value>3.185.0</value>
|
||||||
</entry>
|
</entry>
|
||||||
</packageVersions>
|
</packageVersions>
|
||||||
</versions>
|
</versions>
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,11 @@
|
||||||
<documentation>component/fields/ManyToManyField.html</documentation>
|
<documentation>component/fields/ManyToManyField.html</documentation>
|
||||||
<internal>false</internal>
|
<internal>false</internal>
|
||||||
<versions>
|
<versions>
|
||||||
<studioVersion>3.182.0</studioVersion>
|
<studioVersion>3.185.0</studioVersion>
|
||||||
<packageVersions>
|
<packageVersions>
|
||||||
<entry>
|
<entry>
|
||||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||||
<value>3.182.0</value>
|
<value>3.185.0</value>
|
||||||
</entry>
|
</entry>
|
||||||
</packageVersions>
|
</packageVersions>
|
||||||
</versions>
|
</versions>
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,11 @@
|
||||||
<documentation>component/fields/Денежное_поле.html</documentation>
|
<documentation>component/fields/Денежное_поле.html</documentation>
|
||||||
<internal>true</internal>
|
<internal>true</internal>
|
||||||
<versions>
|
<versions>
|
||||||
<studioVersion>3.182.0</studioVersion>
|
<studioVersion>3.185.0</studioVersion>
|
||||||
<packageVersions>
|
<packageVersions>
|
||||||
<entry>
|
<entry>
|
||||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||||
<value>3.182.0</value>
|
<value>3.185.0</value>
|
||||||
</entry>
|
</entry>
|
||||||
</packageVersions>
|
</packageVersions>
|
||||||
</versions>
|
</versions>
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,11 @@
|
||||||
<documentation>component/fields/Числовое_поле.html</documentation>
|
<documentation>component/fields/Числовое_поле.html</documentation>
|
||||||
<internal>false</internal>
|
<internal>false</internal>
|
||||||
<versions>
|
<versions>
|
||||||
<studioVersion>3.182.0</studioVersion>
|
<studioVersion>3.185.0</studioVersion>
|
||||||
<packageVersions>
|
<packageVersions>
|
||||||
<entry>
|
<entry>
|
||||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||||
<value>3.182.0</value>
|
<value>3.185.0</value>
|
||||||
</entry>
|
</entry>
|
||||||
</packageVersions>
|
</packageVersions>
|
||||||
</versions>
|
</versions>
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,11 @@
|
||||||
<documentation>component/fields/OneToMany.html</documentation>
|
<documentation>component/fields/OneToMany.html</documentation>
|
||||||
<internal>true</internal>
|
<internal>true</internal>
|
||||||
<versions>
|
<versions>
|
||||||
<studioVersion>3.182.0</studioVersion>
|
<studioVersion>3.185.0</studioVersion>
|
||||||
<packageVersions>
|
<packageVersions>
|
||||||
<entry>
|
<entry>
|
||||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||||
<value>3.182.0</value>
|
<value>3.185.0</value>
|
||||||
</entry>
|
</entry>
|
||||||
</packageVersions>
|
</packageVersions>
|
||||||
</versions>
|
</versions>
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,11 @@
|
||||||
<documentation>component/fields/OneToMany.html</documentation>
|
<documentation>component/fields/OneToMany.html</documentation>
|
||||||
<internal>false</internal>
|
<internal>false</internal>
|
||||||
<versions>
|
<versions>
|
||||||
<studioVersion>3.182.0</studioVersion>
|
<studioVersion>3.185.0</studioVersion>
|
||||||
<packageVersions>
|
<packageVersions>
|
||||||
<entry>
|
<entry>
|
||||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||||
<value>3.182.0</value>
|
<value>3.185.0</value>
|
||||||
</entry>
|
</entry>
|
||||||
</packageVersions>
|
</packageVersions>
|
||||||
</versions>
|
</versions>
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,11 @@
|
||||||
<documentation>component/fields/Переключатель.html</documentation>
|
<documentation>component/fields/Переключатель.html</documentation>
|
||||||
<internal>false</internal>
|
<internal>false</internal>
|
||||||
<versions>
|
<versions>
|
||||||
<studioVersion>3.182.0</studioVersion>
|
<studioVersion>3.185.0</studioVersion>
|
||||||
<packageVersions>
|
<packageVersions>
|
||||||
<entry>
|
<entry>
|
||||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||||
<value>3.182.0</value>
|
<value>3.185.0</value>
|
||||||
</entry>
|
</entry>
|
||||||
</packageVersions>
|
</packageVersions>
|
||||||
</versions>
|
</versions>
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,11 @@
|
||||||
<documentation>component/fields/SignVerification.html</documentation>
|
<documentation>component/fields/SignVerification.html</documentation>
|
||||||
<internal>false</internal>
|
<internal>false</internal>
|
||||||
<versions>
|
<versions>
|
||||||
<studioVersion>3.182.0</studioVersion>
|
<studioVersion>3.185.0</studioVersion>
|
||||||
<packageVersions>
|
<packageVersions>
|
||||||
<entry>
|
<entry>
|
||||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||||
<value>3.182.0</value>
|
<value>3.185.0</value>
|
||||||
</entry>
|
</entry>
|
||||||
</packageVersions>
|
</packageVersions>
|
||||||
</versions>
|
</versions>
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,11 @@
|
||||||
<documentation>component/fields/Статичный_выпадающий_список.html</documentation>
|
<documentation>component/fields/Статичный_выпадающий_список.html</documentation>
|
||||||
<internal>false</internal>
|
<internal>false</internal>
|
||||||
<versions>
|
<versions>
|
||||||
<studioVersion>3.182.0</studioVersion>
|
<studioVersion>3.185.0</studioVersion>
|
||||||
<packageVersions>
|
<packageVersions>
|
||||||
<entry>
|
<entry>
|
||||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||||
<value>3.182.0</value>
|
<value>3.185.0</value>
|
||||||
</entry>
|
</entry>
|
||||||
</packageVersions>
|
</packageVersions>
|
||||||
</versions>
|
</versions>
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,11 @@
|
||||||
<documentation>component/fields/Статичный_переключатель.html</documentation>
|
<documentation>component/fields/Статичный_переключатель.html</documentation>
|
||||||
<internal>false</internal>
|
<internal>false</internal>
|
||||||
<versions>
|
<versions>
|
||||||
<studioVersion>3.182.0</studioVersion>
|
<studioVersion>3.185.0</studioVersion>
|
||||||
<packageVersions>
|
<packageVersions>
|
||||||
<entry>
|
<entry>
|
||||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||||
<value>3.182.0</value>
|
<value>3.185.0</value>
|
||||||
</entry>
|
</entry>
|
||||||
</packageVersions>
|
</packageVersions>
|
||||||
</versions>
|
</versions>
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,11 @@
|
||||||
<documentation>component/fields/Текст.html</documentation>
|
<documentation>component/fields/Текст.html</documentation>
|
||||||
<internal>false</internal>
|
<internal>false</internal>
|
||||||
<versions>
|
<versions>
|
||||||
<studioVersion>3.182.0</studioVersion>
|
<studioVersion>3.185.0</studioVersion>
|
||||||
<packageVersions>
|
<packageVersions>
|
||||||
<entry>
|
<entry>
|
||||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||||
<value>3.182.0</value>
|
<value>3.185.0</value>
|
||||||
</entry>
|
</entry>
|
||||||
</packageVersions>
|
</packageVersions>
|
||||||
</versions>
|
</versions>
|
||||||
|
|
|
||||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue