diff options
Diffstat (limited to 'src/main')
10 files changed, 241 insertions, 1826 deletions
diff --git a/src/main/java/org/onap/clamp/clds/client/req/policy/PolicyClient.java b/src/main/java/org/onap/clamp/clds/client/req/policy/PolicyClient.java index 144a48c92..8caac0c7d 100644 --- a/src/main/java/org/onap/clamp/clds/client/req/policy/PolicyClient.java +++ b/src/main/java/org/onap/clamp/clds/client/req/policy/PolicyClient.java @@ -125,7 +125,7 @@ public class PolicyClient { PolicyParameters policyParameters = new PolicyParameters(); // Set Policy Type policyParameters.setPolicyConfigType(PolicyConfigType.MicroService); - policyParameters.setEcompName(refProp.getStringValue(POLICY_ONAPNAME_PROPERTY_NAME)); + policyParameters.setOnapName(refProp.getStringValue(POLICY_ONAPNAME_PROPERTY_NAME)); policyParameters.setPolicyName(prop.getCurrentPolicyScopeAndPolicyName()); policyParameters.setConfigBody(policyJson); policyParameters.setConfigBodyType(PolicyType.JSON); @@ -159,7 +159,7 @@ public class PolicyClient { PolicyParameters policyParameters = new PolicyParameters(); // Set Policy Type policyParameters.setPolicyConfigType(PolicyConfigType.Base); - policyParameters.setEcompName(refProp.getStringValue(POLICY_ONAPNAME_PROPERTY_NAME)); + policyParameters.setOnapName(refProp.getStringValue(POLICY_ONAPNAME_PROPERTY_NAME)); policyParameters.setPolicyName(prop.getCurrentPolicyScopeAndPolicyName()); policyParameters.setConfigBody(configBody); policyParameters.setConfigBodyType(PolicyType.OTHER); @@ -187,7 +187,7 @@ public class PolicyClient { PolicyParameters policyParameters = new PolicyParameters(); // Set Policy Type policyParameters.setPolicyConfigType(PolicyConfigType.MicroService); - policyParameters.setEcompName(refProp.getStringValue(POLICY_ONAPNAME_PROPERTY_NAME)); + policyParameters.setOnapName(refProp.getStringValue(POLICY_ONAPNAME_PROPERTY_NAME)); policyParameters.setPolicyName(prop.getCurrentPolicyScopeAndPolicyName()); policyParameters.setConfigBody(configBody); String policyNamePrefix = refProp.getStringValue("policy.ms.policyNamePrefix"); diff --git a/src/main/java/org/onap/clamp/clds/service/CldsService.java b/src/main/java/org/onap/clamp/clds/service/CldsService.java index a9c81dbb2..9d6cb0820 100644 --- a/src/main/java/org/onap/clamp/clds/service/CldsService.java +++ b/src/main/java/org/onap/clamp/clds/service/CldsService.java @@ -52,6 +52,7 @@ import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; import javax.xml.transform.TransformerException; import org.apache.camel.Produce; @@ -207,7 +208,7 @@ public class CldsService extends SecureServiceBase { /** * REST service that retrieves clds healthcheck information. - * + * * @return CldsHealthCheck class containing healthcheck info */ @GET @@ -396,95 +397,106 @@ public class CldsService extends SecureServiceBase { @Path("/action/{action}/{modelName}") @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) - public CldsModel putModelAndProcessAction(@PathParam("action") String action, + public Response putModelAndProcessAction(@PathParam("action") String action, @PathParam("modelName") String modelName, @QueryParam("test") String test, CldsModel model) throws TransformerException, ParseException, GeneralSecurityException, DecoderException { Date startTime = new Date(); - LoggingUtils.setRequestContext("CldsService: Process model action", getPrincipalName()); - String actionCd = action.toUpperCase(); - SecureServicePermission permisionManage = SecureServicePermission.create(cldsPermissionTypeClManage, - cldsPermissionInstance, actionCd); - isAuthorized(permisionManage); - isAuthorizedForVf(model); - String userId = getUserId(); - String actionStateCd = CldsEvent.ACTION_STATE_INITIATED; - String processDefinitionKey = "clds-process-action-wf"; - logger.info("PUT actionCd={}", actionCd); - logger.info("PUT actionStateCd={}", actionStateCd); - logger.info("PUT processDefinitionKey={}", processDefinitionKey); - logger.info("PUT modelName={}", modelName); - logger.info("PUT test={}", test); - logger.info("PUT bpmnText={}", model.getBpmnText()); - logger.info("PUT propText={}", model.getPropText()); - logger.info("PUT userId={}", userId); - logger.info("PUT getTypeId={}", model.getTypeId()); - logger.info("PUT deploymentId={}", model.getDeploymentId()); - if (model.getTemplateName() != null) { - CldsTemplate template = cldsDao.getTemplate(model.getTemplateName()); - if (template != null) { - model.setTemplateId(template.getId()); - model.setDocText(template.getPropText()); - // This is to provide the Bpmn XML when Template part in UI is - // disabled - model.setBpmnText(template.getBpmnText()); + CldsModel retrievedModel = null; + Boolean errorCase = false; + try { + LoggingUtils.setRequestContext("CldsService: Process model action", getPrincipalName()); + String actionCd = action.toUpperCase(); + SecureServicePermission permisionManage = SecureServicePermission.create(cldsPermissionTypeClManage, + cldsPermissionInstance, actionCd); + isAuthorized(permisionManage); + isAuthorizedForVf(model); + String userId = getUserId(); + String actionStateCd = CldsEvent.ACTION_STATE_INITIATED; + String processDefinitionKey = "clds-process-action-wf"; + logger.info("PUT actionCd={}", actionCd); + logger.info("PUT actionStateCd={}", actionStateCd); + logger.info("PUT processDefinitionKey={}", processDefinitionKey); + logger.info("PUT modelName={}", modelName); + logger.info("PUT test={}", test); + logger.info("PUT bpmnText={}", model.getBpmnText()); + logger.info("PUT propText={}", model.getPropText()); + logger.info("PUT userId={}", userId); + logger.info("PUT getTypeId={}", model.getTypeId()); + logger.info("PUT deploymentId={}", model.getDeploymentId()); + if (model.getTemplateName() != null) { + CldsTemplate template = cldsDao.getTemplate(model.getTemplateName()); + if (template != null) { + model.setTemplateId(template.getId()); + model.setDocText(template.getPropText()); + // This is to provide the Bpmn XML when Template part in UI is + // disabled + model.setBpmnText(template.getBpmnText()); + } } - } - // save model to db - model.setName(modelName); - model.save(cldsDao, getUserId()); - // get vars and format if necessary - String prop = model.getPropText(); - String bpmn = model.getBpmnText(); - String docText = model.getDocText(); - String controlName = model.getControlName(); - String bpmnJson = cldsBpmnTransformer.doXslTransformToString(bpmn); - logger.info("PUT bpmnJson={}", bpmnJson); - // Flag indicates whether it is triggered by Validation Test button from - // UI - boolean isTest = false; - if (test != null && test.equalsIgnoreCase("true")) { - isTest = true; - } else { - String actionTestOverride = refProp.getStringValue("action.test.override"); - if (actionTestOverride != null && actionTestOverride.equalsIgnoreCase("true")) { - logger.info("PUT actionTestOverride={}", actionTestOverride); - logger.info("PUT override test indicator and setting it to true"); + // save model to db + model.setName(modelName); + model.save(cldsDao, getUserId()); + // get vars and format if necessary + String prop = model.getPropText(); + String bpmn = model.getBpmnText(); + String docText = model.getDocText(); + String controlName = model.getControlName(); + String bpmnJson = cldsBpmnTransformer.doXslTransformToString(bpmn); + logger.info("PUT bpmnJson={}", bpmnJson); + // Flag indicates whether it is triggered by Validation Test button from + // UI + boolean isTest = false; + if (test != null && test.equalsIgnoreCase("true")) { isTest = true; + } else { + String actionTestOverride = refProp.getStringValue("action.test.override"); + if (actionTestOverride != null && actionTestOverride.equalsIgnoreCase("true")) { + logger.info("PUT actionTestOverride={}", actionTestOverride); + logger.info("PUT override test indicator and setting it to true"); + isTest = true; + } } + logger.info("PUT isTest={}", isTest); + boolean isInsertTestEvent = false; + String insertTestEvent = refProp.getStringValue("action.insert.test.event"); + if (insertTestEvent != null && insertTestEvent.equalsIgnoreCase("true")) { + isInsertTestEvent = true; + } + logger.info("PUT isInsertTestEvent={}", isInsertTestEvent); + // determine if requested action is permitted + model.validateAction(actionCd); + logger.info("modelProp - " + prop); + logger.info("docText - " + docText); + try { + String result = camelProxy.submit(actionCd, prop, bpmnJson, modelName, controlName, docText, isTest, userId, + isInsertTestEvent); + logger.info("Starting Camel flow on request, result is: ", result); + } catch (SdcCommunicationException | PolicyClientException | BadRequestException e) { + errorCase = true; + logger.error("Exception occured during invoking Camel process", e); + } + // refresh model info from db (get fresh event info) + retrievedModel = CldsModel.retrieve(cldsDao, modelName, false); + if (!isTest && (actionCd.equalsIgnoreCase(CldsEvent.ACTION_SUBMIT) + || actionCd.equalsIgnoreCase(CldsEvent.ACTION_RESUBMIT) + || actionCd.equalsIgnoreCase(CldsEvent.ACTION_SUBMITDCAE))) { + // To verify inventory status and modify model status to distribute + dcaeInventoryServices.setEventInventory(retrievedModel, getUserId()); + retrievedModel.save(cldsDao, getUserId()); + } + // audit log + LoggingUtils.setTimeContext(startTime, new Date()); + LoggingUtils.setResponseContext("0", "Process model action success", this.getClass().getName()); + auditLogger.info("Process model action completed"); + } catch (Exception e) { + errorCase = true; + logger.error("Exception occured during putModelAndProcessAction", e); } - logger.info("PUT isTest={}", isTest); - boolean isInsertTestEvent = false; - String insertTestEvent = refProp.getStringValue("action.insert.test.event"); - if (insertTestEvent != null && insertTestEvent.equalsIgnoreCase("true")) { - isInsertTestEvent = true; - } - logger.info("PUT isInsertTestEvent={}", isInsertTestEvent); - // determine if requested action is permitted - model.validateAction(actionCd); - logger.info("modelProp - " + prop); - logger.info("docText - " + docText); - try { - String result = camelProxy.submit(actionCd, prop, bpmnJson, modelName, controlName, docText, isTest, userId, - isInsertTestEvent); - logger.info("Starting Camel flow on request, result is: ", result); - } catch (SdcCommunicationException | PolicyClientException | BadRequestException e) { - logger.error("Exception occured during invoking Camel process", e); - throw new CldsConfigException(e.getMessage(), e); - } - // refresh model info from db (get fresh event info) - CldsModel retrievedModel = CldsModel.retrieve(cldsDao, modelName, false); - if (!isTest && (actionCd.equalsIgnoreCase(CldsEvent.ACTION_SUBMIT) - || actionCd.equalsIgnoreCase(CldsEvent.ACTION_RESUBMIT) - || actionCd.equalsIgnoreCase(CldsEvent.ACTION_SUBMITDCAE))) { - // To verify inventory status and modify model status to distribute - dcaeInventoryServices.setEventInventory(retrievedModel, getUserId()); - retrievedModel.save(cldsDao, getUserId()); + + if (errorCase) { + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(retrievedModel).build(); } - // audit log - LoggingUtils.setTimeContext(startTime, new Date()); - LoggingUtils.setResponseContext("0", "Process model action success", this.getClass().getName()); - auditLogger.info("Process model action completed"); - return retrievedModel; + return Response.status(Response.Status.OK).entity(retrievedModel).build(); } /** @@ -542,7 +554,7 @@ public class CldsService extends SecureServiceBase { /** * REST service that retrieves sdc services - * + * * @throws GeneralSecurityException * In case of issue when decryting the SDC password * @throws DecoderException @@ -572,7 +584,7 @@ public class CldsService extends SecureServiceBase { /** * REST service that retrieves total properties required by UI - * + * * @throws IOException * In case of issues */ @@ -586,7 +598,7 @@ public class CldsService extends SecureServiceBase { /** * REST service that retrieves total properties by using invariantUUID based * on refresh and non refresh - * + * * @throws GeneralSecurityException * In case of issues with the decryting the encrypted password * @throws DecoderException @@ -794,102 +806,123 @@ public class CldsService extends SecureServiceBase { @Path("/deploy/{modelName}") @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) - public CldsModel deployModel(@PathParam("action") String action, @PathParam("modelName") String modelName, + public Response deployModel(@PathParam("action") String action, @PathParam("modelName") String modelName, @QueryParam("test") String test, CldsModel model) { Date startTime = new Date(); LoggingUtils.setRequestContext("CldsService: Deploy model", getPrincipalName()); + Boolean errorCase = false; try { - checkForDuplicateServiceVf(modelName, model.getPropText()); - } catch (IOException | BadRequestException e) { - logger.error("Exception occured during duplicate check for service and VF", e); - throw new CldsConfigException(e.getMessage(), e); - } - String deploymentId = ""; - // If model is already deployed then pass same deployment id - if (model.getDeploymentId() != null && !model.getDeploymentId().isEmpty()) { - deploymentId = model.getDeploymentId(); - } else { - deploymentId = "closedLoop_" + UUID.randomUUID() + "_deploymentId"; - } - String createNewDeploymentStatusUrl = dcaeDispatcherServices.createNewDeployment(deploymentId, - model.getTypeId()); - String operationStatus = "processing"; - long waitingTime = System.nanoTime() + TimeUnit.MINUTES.toNanos(10); - while ("processing".equalsIgnoreCase(operationStatus)) { - // Break the loop if waiting for more than 10 mins - if (waitingTime < System.nanoTime()) { - break; + try { + checkForDuplicateServiceVf(modelName, model.getPropText()); + } catch (IOException | BadRequestException e) { + errorCase = true; + logger.error("Exception occured during duplicate check for service and VF", e); } - operationStatus = dcaeDispatcherServices.getOperationStatus(createNewDeploymentStatusUrl); - } - if ("succeeded".equalsIgnoreCase(operationStatus)) { - String artifactName = model.getControlName(); - if (artifactName != null) { - artifactName = artifactName + ".yml"; + String deploymentId = ""; + // If model is already deployed then pass same deployment id + if (model.getDeploymentId() != null && !model.getDeploymentId().isEmpty()) { + deploymentId = model.getDeploymentId(); + } else { + deploymentId = "closedLoop_" + UUID.randomUUID() + "_deploymentId"; } - DcaeEvent dcaeEvent = new DcaeEvent(); - /* set dcae events */ - dcaeEvent.setArtifactName(artifactName); - dcaeEvent.setEvent(DcaeEvent.EVENT_DEPLOYMENT); - CldsEvent.insEvent(cldsDao, dcaeEvent.getControlName(), getUserId(), dcaeEvent.getCldsActionCd(), - CldsEvent.ACTION_STATE_RECEIVED, null); - model.setDeploymentId(deploymentId); - model.save(cldsDao, getUserId()); - } else { - logger.info("Deploy model (" + modelName + ") failed...Operation Status is - " + operationStatus); - throw new HttpClientErrorException(HttpStatus.INTERNAL_SERVER_ERROR, - "Deploy model (" + modelName + ") failed...Operation Status is - " + operationStatus); + String createNewDeploymentStatusUrl = dcaeDispatcherServices.createNewDeployment(deploymentId, + model.getTypeId()); + String operationStatus = "processing"; + long waitingTime = System.nanoTime() + TimeUnit.MINUTES.toNanos(10); + while ("processing".equalsIgnoreCase(operationStatus)) { + // Break the loop if waiting for more than 10 mins + if (waitingTime < System.nanoTime()) { + break; + } + operationStatus = dcaeDispatcherServices.getOperationStatus(createNewDeploymentStatusUrl); + } + if ("succeeded".equalsIgnoreCase(operationStatus)) { + String artifactName = model.getControlName(); + if (artifactName != null) { + artifactName = artifactName + ".yml"; + } + DcaeEvent dcaeEvent = new DcaeEvent(); + /* set dcae events */ + dcaeEvent.setArtifactName(artifactName); + dcaeEvent.setEvent(DcaeEvent.EVENT_DEPLOYMENT); + CldsEvent.insEvent(cldsDao, dcaeEvent.getControlName(), getUserId(), dcaeEvent.getCldsActionCd(), + CldsEvent.ACTION_STATE_RECEIVED, null); + model.setDeploymentId(deploymentId); + model.save(cldsDao, getUserId()); + } else { + logger.info("Deploy model (" + modelName + ") failed...Operation Status is - " + operationStatus); + throw new HttpClientErrorException(HttpStatus.INTERNAL_SERVER_ERROR, + "Deploy model (" + modelName + ") failed...Operation Status is - " + operationStatus); + } + logger.info("Deploy model (" + modelName + ") succeeded...Deployment Id is - " + deploymentId); + // audit log + LoggingUtils.setTimeContext(startTime, new Date()); + LoggingUtils.setResponseContext("0", "Deploy model success", this.getClass().getName()); + auditLogger.info("Deploy model completed"); + } catch (Exception e) { + errorCase = true; + logger.error("Exception occured during deployModel", e); } - logger.info("Deploy model (" + modelName + ") succeeded...Deployment Id is - " + deploymentId); - // audit log - LoggingUtils.setTimeContext(startTime, new Date()); - LoggingUtils.setResponseContext("0", "Deploy model success", this.getClass().getName()); - auditLogger.info("Deploy model completed"); - return model; + + if (errorCase) { + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(model).build(); + } + return Response.status(Response.Status.OK).entity(model).build(); } @PUT @Path("/undeploy/{modelName}") @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) - public CldsModel unDeployModel(@PathParam("action") String action, @PathParam("modelName") String modelName, + public Response unDeployModel(@PathParam("action") String action, @PathParam("modelName") String modelName, @QueryParam("test") String test, CldsModel model) { Date startTime = new Date(); LoggingUtils.setRequestContext("CldsService: Undeploy model", getPrincipalName()); - String operationStatusUndeployUrl = dcaeDispatcherServices.deleteExistingDeployment(model.getDeploymentId(), - model.getTypeId()); - String operationStatus = "processing"; - long waitingTime = System.nanoTime() + TimeUnit.MINUTES.toNanos(10); - while ("processing".equalsIgnoreCase(operationStatus)) { - if (waitingTime < System.nanoTime()) { - break; + + Boolean errorCase = false; + try { + String operationStatusUndeployUrl = dcaeDispatcherServices.deleteExistingDeployment(model.getDeploymentId(), + model.getTypeId()); + String operationStatus = "processing"; + long waitingTime = System.nanoTime() + TimeUnit.MINUTES.toNanos(10); + while ("processing".equalsIgnoreCase(operationStatus)) { + if (waitingTime < System.nanoTime()) { + break; + } + operationStatus = dcaeDispatcherServices.getOperationStatus(operationStatusUndeployUrl); } - operationStatus = dcaeDispatcherServices.getOperationStatus(operationStatusUndeployUrl); - } - if ("succeeded".equalsIgnoreCase(operationStatus)) { - String artifactName = model.getControlName(); - if (artifactName != null) { - artifactName = artifactName + ".yml"; + if ("succeeded".equalsIgnoreCase(operationStatus)) { + String artifactName = model.getControlName(); + if (artifactName != null) { + artifactName = artifactName + ".yml"; + } + DcaeEvent dcaeEvent = new DcaeEvent(); + // set dcae events + dcaeEvent.setArtifactName(artifactName); + dcaeEvent.setEvent(DcaeEvent.EVENT_UNDEPLOYMENT); + CldsEvent.insEvent(cldsDao, model.getControlName(), getUserId(), dcaeEvent.getCldsActionCd(), + CldsEvent.ACTION_STATE_RECEIVED, null); + model.setDeploymentId(null); + model.save(cldsDao, getUserId()); + } else { + logger.info("Undeploy model (" + modelName + ") failed...Operation Status is - " + operationStatus); + throw new HttpClientErrorException(HttpStatus.INTERNAL_SERVER_ERROR, + "Undeploy model (" + modelName + ") failed...Operation Status is - " + operationStatus); } - DcaeEvent dcaeEvent = new DcaeEvent(); - // set dcae events - dcaeEvent.setArtifactName(artifactName); - dcaeEvent.setEvent(DcaeEvent.EVENT_UNDEPLOYMENT); - CldsEvent.insEvent(cldsDao, model.getControlName(), getUserId(), dcaeEvent.getCldsActionCd(), - CldsEvent.ACTION_STATE_RECEIVED, null); - model.setDeploymentId(null); - model.save(cldsDao, getUserId()); - } else { - logger.info("Undeploy model (" + modelName + ") failed...Operation Status is - " + operationStatus); - throw new HttpClientErrorException(HttpStatus.INTERNAL_SERVER_ERROR, - "Undeploy model (" + modelName + ") failed...Operation Status is - " + operationStatus); + logger.info("Undeploy model (" + modelName + ") succeeded."); + // audit log + LoggingUtils.setTimeContext(startTime, new Date()); + LoggingUtils.setResponseContext("0", "Undeploy model success", this.getClass().getName()); + auditLogger.info("Undeploy model completed"); + } catch (Exception e) { + errorCase = true; + logger.error("Exception occured during unDeployModel", e); } - logger.info("Undeploy model (" + modelName + ") succeeded."); - // audit log - LoggingUtils.setTimeContext(startTime, new Date()); - LoggingUtils.setResponseContext("0", "Undeploy model success", this.getClass().getName()); - auditLogger.info("Undeploy model completed"); - return model; + + if (errorCase) { + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(model).build(); + } + return Response.status(Response.Status.OK).entity(model).build(); } private void checkForDuplicateServiceVf(String modelName, String modelPropText) throws IOException { diff --git a/src/main/java/org/onap/clamp/clds/service/JaxrsApplication.java b/src/main/java/org/onap/clamp/clds/service/JaxrsApplication.java index d6e74aef1..702e06499 100644 --- a/src/main/java/org/onap/clamp/clds/service/JaxrsApplication.java +++ b/src/main/java/org/onap/clamp/clds/service/JaxrsApplication.java @@ -23,12 +23,54 @@ package org.onap.clamp.clds.service; +import com.att.eelf.configuration.EELFLogger; +import com.att.eelf.configuration.EELFManager; + +import java.util.HashSet; +import java.util.List; +import java.util.Optional; +import java.util.Set; +import java.util.function.Function; +import java.util.stream.Collectors; import javax.ws.rs.ApplicationPath; import javax.ws.rs.core.Application; +import org.springframework.beans.factory.config.BeanDefinition; +import org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider; +import org.springframework.core.type.filter.AnnotationTypeFilter; import org.springframework.stereotype.Component; @Component @ApplicationPath("/restservices/clds/v1") public class JaxrsApplication extends Application { + + private static final EELFLogger logger = EELFManager.getInstance().getLogger(JaxrsApplication.class); + + private Function<BeanDefinition, Optional<Class<?>>> beanDefinitionToClass = b -> { + try { + return Optional.of(Class.forName(b.getBeanClassName())); + } catch (ClassNotFoundException e) { + logger.error("Could not get class annotated with @Path for swagger documentation generation", e); + return Optional.empty(); + } + }; + + @Override + public Set<Class<?>> getClasses() { + Set<Class<?>> resources = new HashSet<>(); + resources.add(io.swagger.v3.jaxrs2.integration.resources.OpenApiResource.class); + resources.addAll(scan()); + return resources; + } + + private List<Class<?>> scan() { + ClassPathScanningCandidateComponentProvider scanner = new ClassPathScanningCandidateComponentProvider(false); + scanner.addIncludeFilter(new AnnotationTypeFilter(javax.ws.rs.Path.class)); + return scanner.findCandidateComponents("org.onap.clamp.clds").stream() + .map(beanDefinitionToClass) + .filter(Optional::isPresent) + .map(Optional::get) + .collect(Collectors.toList()); + } + }
\ No newline at end of file diff --git a/src/main/resources/META-INF/resources/designer/css/jasny-bootstrap.css b/src/main/resources/META-INF/resources/designer/css/jasny-bootstrap.css deleted file mode 100644 index e44b43ea7..000000000 --- a/src/main/resources/META-INF/resources/designer/css/jasny-bootstrap.css +++ /dev/null @@ -1,621 +0,0 @@ -/*! - * Jasny Bootstrap v3.1.3 (http://jasny.github.io/bootstrap) - * Copyright 2012-2014 Arnold Daniels - * Licensed under Apache-2.0 (https://github.com/jasny/bootstrap/blob/master/LICENSE) - */ - -.container-smooth { - max-width: 1170px; -} -@media (min-width: 1px) { - .container-smooth { - width: auto; - } -} -.btn-labeled { - padding-top: 0; - padding-bottom: 0; -} -.btn-label { - position: relative; - left: -12px; - display: inline-block; - padding: 6px 12px; - background: transparent; - background: rgba(0, 0, 0, .15); - border-radius: 3px 0 0 3px; -} -.btn-label.btn-label-right { - right: -12px; - left: auto; - border-radius: 0 3px 3px 0; -} -.btn-lg .btn-label { - left: -16px; - padding: 10px 16px; - border-radius: 5px 0 0 5px; -} -.btn-lg .btn-label.btn-label-right { - right: -16px; - left: auto; - border-radius: 0 5px 5px 0; -} -.btn-sm .btn-label { - left: -10px; - padding: 5px 10px; - border-radius: 2px 0 0 2px; -} -.btn-sm .btn-label.btn-label-right { - right: -10px; - left: auto; - border-radius: 0 2px 2px 0; -} -.btn-xs .btn-label { - left: -5px; - padding: 1px 5px; - border-radius: 2px 0 0 2px; -} -.btn-xs .btn-label.btn-label-right { - right: -5px; - left: auto; - border-radius: 0 2px 2px 0; -} -.nav-tabs-bottom { - border-top: 1px solid #ddd; - border-bottom: 0; -} -.nav-tabs-bottom > li { - margin-top: -1px; - margin-bottom: 0; -} -.nav-tabs-bottom > li > a { - border-radius: 0 0 4px 4px; -} -.nav-tabs-bottom > li > a:hover, -.nav-tabs-bottom > li > a:focus, -.nav-tabs-bottom > li.active > a, -.nav-tabs-bottom > li.active > a:hover, -.nav-tabs-bottom > li.active > a:focus { - border: 1px solid #ddd; - border-top-color: transparent; -} -.nav-tabs-left { - border-right: 1px solid #ddd; - border-bottom: 0; -} -.nav-tabs-left > li { - float: none; - margin-right: -1px; - margin-bottom: 0; -} -.nav-tabs-left > li > a { - margin-right: 0; - margin-bottom: 2px; - border-radius: 4px 0 0 4px; -} -.nav-tabs-left > li > a:hover, -.nav-tabs-left > li > a:focus, -.nav-tabs-left > li.active > a, -.nav-tabs-left > li.active > a:hover, -.nav-tabs-left > li.active > a:focus { - border: 1px solid #ddd; - border-right-color: transparent; -} -.row > .nav-tabs-left { - position: relative; - z-index: 1; - padding-right: 0; - padding-left: 15px; - margin-right: -1px; -} -.row > .nav-tabs-left + .tab-content { - border-left: 1px solid #ddd; -} -.nav-tabs-right { - border-bottom: 0; - border-left: 1px solid #ddd; -} -.nav-tabs-right > li { - float: none; - margin-bottom: 0; - margin-left: -1px; -} -.nav-tabs-right > li > a { - margin-bottom: 2px; - margin-left: 0; - border-radius: 0 4px 4px 0; -} -.nav-tabs-right > li > a:hover, -.nav-tabs-right > li > a:focus, -.nav-tabs-right > li.active > a, -.nav-tabs-right > li.active > a:hover, -.nav-tabs-right > li.active > a:focus { - border: 1px solid #ddd; - border-left-color: transparent; -} -.row > .nav-tabs-right { - padding-right: 15px; - padding-left: 0; -} -.navmenu, -.navbar-offcanvas { - width: 300px; - height: auto; - border-style: solid; - border-width: 1px; - border-radius: 4px; -} -.navmenu-fixed-left, -.navmenu-fixed-right, -.navbar-offcanvas { - position: left; - top: 0; - bottom: 0; - z-index: 1030; - overflow-y: auto; - border-radius: 0; -} -.navmenu-fixed-left, -.navbar-offcanvas.navmenu-fixed-left { - right: auto; - left: 0; - border-width: 0 1px 0 0; -} -.navmenu-fixed-right, -.navbar-offcanvas { - right: 0; - left: auto; - border-width: 0 0 0 1px; -} -.navmenu-nav { - margin-bottom: 10px; -} -.navmenu-nav.dropdown-menu { - position: static; - float: none; - padding-top: 0; - margin: 0; - border: none; - border-radius: 0; - -webkit-box-shadow: none; - box-shadow: none; -} -.navbar-offcanvas .navbar-nav { - margin: 0; -} -@media (min-width: 768px) { - .navbar-offcanvas { - width: auto; - border-top: 0; - box-shadow: none; - } - .navbar-offcanvas.offcanvas { - position: static; - display: block !important; - height: auto !important; - padding-bottom: 0; - overflow: visible !important; - } - .navbar-offcanvas .navbar-nav.navbar-left:first-child { - margin-left: -15px; - } - .navbar-offcanvas .navbar-nav.navbar-right:last-child { - margin-right: -15px; - } - .navbar-offcanvas .navmenu-brand { - display: none; - } -} -.navmenu-brand { - display: block; - padding: 10px 15px; - margin: 10px 0; - font-size: 18px; - line-height: 20px; -} -.navmenu-brand:hover, -.navmenu-brand:focus { - text-decoration: none; -} -.navmenu-default, -.navbar-default .navbar-offcanvas { - background-color: #f8f8f8; - border-color: #e7e7e7; -} -.navmenu-default .navmenu-brand, -.navbar-default .navbar-offcanvas .navmenu-brand { - color: #777; -} -.navmenu-default .navmenu-brand:hover, -.navbar-default .navbar-offcanvas .navmenu-brand:hover, -.navmenu-default .navmenu-brand:focus, -.navbar-default .navbar-offcanvas .navmenu-brand:focus { - color: #5e5e5e; - background-color: transparent; -} -.navmenu-default .navmenu-text, -.navbar-default .navbar-offcanvas .navmenu-text { - color: #777; -} -.navmenu-default .navmenu-nav > .dropdown > a:hover .caret, -.navbar-default .navbar-offcanvas .navmenu-nav > .dropdown > a:hover .caret, -.navmenu-default .navmenu-nav > .dropdown > a:focus .caret, -.navbar-default .navbar-offcanvas .navmenu-nav > .dropdown > a:focus .caret { - border-top-color: #333; - border-bottom-color: #333; -} -.navmenu-default .navmenu-nav > .open > a, -.navbar-default .navbar-offcanvas .navmenu-nav > .open > a, -.navmenu-default .navmenu-nav > .open > a:hover, -.navbar-default .navbar-offcanvas .navmenu-nav > .open > a:hover, -.navmenu-default .navmenu-nav > .open > a:focus, -.navbar-default .navbar-offcanvas .navmenu-nav > .open > a:focus { - color: #555; - background-color: #e7e7e7; -} -.navmenu-default .navmenu-nav > .open > a .caret, -.navbar-default .navbar-offcanvas .navmenu-nav > .open > a .caret, -.navmenu-default .navmenu-nav > .open > a:hover .caret, -.navbar-default .navbar-offcanvas .navmenu-nav > .open > a:hover .caret, -.navmenu-default .navmenu-nav > .open > a:focus .caret, -.navbar-default .navbar-offcanvas .navmenu-nav > .open > a:focus .caret { - border-top-color: #555; - border-bottom-color: #555; -} -.navmenu-default .navmenu-nav > .dropdown > a .caret, -.navbar-default .navbar-offcanvas .navmenu-nav > .dropdown > a .caret { - border-top-color: #777; - border-bottom-color: #777; -} -.navmenu-default .navmenu-nav.dropdown-menu, -.navbar-default .navbar-offcanvas .navmenu-nav.dropdown-menu { - background-color: #e7e7e7; -} -.navmenu-default .navmenu-nav.dropdown-menu > .divider, -.navbar-default .navbar-offcanvas .navmenu-nav.dropdown-menu > .divider { - background-color: #f8f8f8; -} -.navmenu-default .navmenu-nav.dropdown-menu > .active > a, -.navbar-default .navbar-offcanvas .navmenu-nav.dropdown-menu > .active > a, -.navmenu-default .navmenu-nav.dropdown-menu > .active > a:hover, -.navbar-default .navbar-offcanvas .navmenu-nav.dropdown-menu > .active > a:hover, -.navmenu-default .navmenu-nav.dropdown-menu > .active > a:focus, -.navbar-default .navbar-offcanvas .navmenu-nav.dropdown-menu > .active > a:focus { - background-color: #d7d7d7; -} -.navmenu-default .navmenu-nav > li > a, -.navbar-default .navbar-offcanvas .navmenu-nav > li > a { - color: #777; -} -.navmenu-default .navmenu-nav > li > a:hover, -.navbar-default .navbar-offcanvas .navmenu-nav > li > a:hover, -.navmenu-default .navmenu-nav > li > a:focus, -.navbar-default .navbar-offcanvas .navmenu-nav > li > a:focus { - color: #333; - background-color: transparent; -} -.navmenu-default .navmenu-nav > .active > a, -.navbar-default .navbar-offcanvas .navmenu-nav > .active > a, -.navmenu-default .navmenu-nav > .active > a:hover, -.navbar-default .navbar-offcanvas .navmenu-nav > .active > a:hover, -.navmenu-default .navmenu-nav > .active > a:focus, -.navbar-default .navbar-offcanvas .navmenu-nav > .active > a:focus { - color: #555; - background-color: #e7e7e7; -} -.navmenu-default .navmenu-nav > .disabled > a, -.navbar-default .navbar-offcanvas .navmenu-nav > .disabled > a, -.navmenu-default .navmenu-nav > .disabled > a:hover, -.navbar-default .navbar-offcanvas .navmenu-nav > .disabled > a:hover, -.navmenu-default .navmenu-nav > .disabled > a:focus, -.navbar-default .navbar-offcanvas .navmenu-nav > .disabled > a:focus { - color: #ccc; - background-color: transparent; -} -.navmenu-inverse, -.navbar-inverse .navbar-offcanvas { - background-color: #222; - border-color: #080808; -} -.navmenu-inverse .navmenu-brand, -.navbar-inverse .navbar-offcanvas .navmenu-brand { - color: #999; -} -.navmenu-inverse .navmenu-brand:hover, -.navbar-inverse .navbar-offcanvas .navmenu-brand:hover, -.navmenu-inverse .navmenu-brand:focus, -.navbar-inverse .navbar-offcanvas .navmenu-brand:focus { - color: #fff; - background-color: transparent; -} -.navmenu-inverse .navmenu-text, -.navbar-inverse .navbar-offcanvas .navmenu-text { - color: #999; -} -.navmenu-inverse .navmenu-nav > .dropdown > a:hover .caret, -.navbar-inverse .navbar-offcanvas .navmenu-nav > .dropdown > a:hover .caret, -.navmenu-inverse .navmenu-nav > .dropdown > a:focus .caret, -.navbar-inverse .navbar-offcanvas .navmenu-nav > .dropdown > a:focus .caret { - border-top-color: #fff; - border-bottom-color: #fff; -} -.navmenu-inverse .navmenu-nav > .open > a, -.navbar-inverse .navbar-offcanvas .navmenu-nav > .open > a, -.navmenu-inverse .navmenu-nav > .open > a:hover, -.navbar-inverse .navbar-offcanvas .navmenu-nav > .open > a:hover, -.navmenu-inverse .navmenu-nav > .open > a:focus, -.navbar-inverse .navbar-offcanvas .navmenu-nav > .open > a:focus { - color: #fff; - background-color: #080808; -} -.navmenu-inverse .navmenu-nav > .open > a .caret, -.navbar-inverse .navbar-offcanvas .navmenu-nav > .open > a .caret, -.navmenu-inverse .navmenu-nav > .open > a:hover .caret, -.navbar-inverse .navbar-offcanvas .navmenu-nav > .open > a:hover .caret, -.navmenu-inverse .navmenu-nav > .open > a:focus .caret, -.navbar-inverse .navbar-offcanvas .navmenu-nav > .open > a:focus .caret { - border-top-color: #fff; - border-bottom-color: #fff; -} -.navmenu-inverse .navmenu-nav > .dropdown > a .caret, -.navbar-inverse .navbar-offcanvas .navmenu-nav > .dropdown > a .caret { - border-top-color: #999; - border-bottom-color: #999; -} -.navmenu-inverse .navmenu-nav.dropdown-menu, -.navbar-inverse .navbar-offcanvas .navmenu-nav.dropdown-menu { - background-color: #080808; -} -.navmenu-inverse .navmenu-nav.dropdown-menu > .divider, -.navbar-inverse .navbar-offcanvas .navmenu-nav.dropdown-menu > .divider { - background-color: #222; -} -.navmenu-inverse .navmenu-nav.dropdown-menu > .active > a, -.navbar-inverse .navbar-offcanvas .navmenu-nav.dropdown-menu > .active > a, -.navmenu-inverse .navmenu-nav.dropdown-menu > .active > a:hover, -.navbar-inverse .navbar-offcanvas .navmenu-nav.dropdown-menu > .active > a:hover, -.navmenu-inverse .navmenu-nav.dropdown-menu > .active > a:focus, -.navbar-inverse .navbar-offcanvas .navmenu-nav.dropdown-menu > .active > a:focus { - background-color: #000; -} -.navmenu-inverse .navmenu-nav > li > a, -.navbar-inverse .navbar-offcanvas .navmenu-nav > li > a { - color: #999; -} -.navmenu-inverse .navmenu-nav > li > a:hover, -.navbar-inverse .navbar-offcanvas .navmenu-nav > li > a:hover, -.navmenu-inverse .navmenu-nav > li > a:focus, -.navbar-inverse .navbar-offcanvas .navmenu-nav > li > a:focus { - color: #fff; - background-color: transparent; -} -.navmenu-inverse .navmenu-nav > .active > a, -.navbar-inverse .navbar-offcanvas .navmenu-nav > .active > a, -.navmenu-inverse .navmenu-nav > .active > a:hover, -.navbar-inverse .navbar-offcanvas .navmenu-nav > .active > a:hover, -.navmenu-inverse .navmenu-nav > .active > a:focus, -.navbar-inverse .navbar-offcanvas .navmenu-nav > .active > a:focus { - color: #fff; - background-color: #080808; -} -.navmenu-inverse .navmenu-nav > .disabled > a, -.navbar-inverse .navbar-offcanvas .navmenu-nav > .disabled > a, -.navmenu-inverse .navmenu-nav > .disabled > a:hover, -.navbar-inverse .navbar-offcanvas .navmenu-nav > .disabled > a:hover, -.navmenu-inverse .navmenu-nav > .disabled > a:focus, -.navbar-inverse .navbar-offcanvas .navmenu-nav > .disabled > a:focus { - color: #444; - background-color: transparent; -} -.alert-fixed-top, -.alert-fixed-bottom { - position: fixed; - left: 0; - z-index: 1035; - width: 100%; - margin: 0; - border-radius: 0; -} -@media (min-width: 992px) { - .alert-fixed-top, - .alert-fixed-bottom { - left: 50%; - width: 992px; - margin-left: -496px; - } -} -.alert-fixed-top { - top: 0; - border-width: 0 0 1px 0; -} -@media (min-width: 992px) { - .alert-fixed-top { - border-width: 0 1px 1px 1px; - border-bottom-right-radius: 4px; - border-bottom-left-radius: 4px; - } -} -.alert-fixed-bottom { - bottom: 0; - border-width: 1px 0 0 0; -} -@media (min-width: 992px) { - .alert-fixed-bottom { - border-width: 1px 1px 0 1px; - border-top-left-radius: 4px; - border-top-right-radius: 4px; - } -} -.offcanvas { - display: none; -} -.offcanvas.in { - display: block; -} -@media (max-width: 767px) { - .offcanvas-xs { - display: none; - } - .offcanvas-xs.in { - display: block; - } -} -@media (max-width: 991px) { - .offcanvas-sm { - display: none; - } - .offcanvas-sm.in { - display: block; - } -} -@media (max-width: 1199px) { - .offcanvas-md { - display: none; - } - .offcanvas-md.in { - display: block; - } -} -.offcanvas-lg { - display: none; -} -.offcanvas-lg.in { - display: block; -} -.canvas-sliding { - -webkit-transition: top .35s, left .35s, bottom .35s, right .35s; - transition: top .35s, left .35s, bottom .35s, right .35s; -} -.offcanvas-clone { - position: absolute !important; - top: auto !important; - right: 0 !important; - bottom: 0 !important; - left: auto !important; - width: 0 !important; - height: 0 !important; - padding: 0 !important; - margin: 0 !important; - overflow: hidden !important; - border: none !important; - opacity: 0 !important; -} -.table.rowlink td:not(.rowlink-skip), -.table .rowlink td:not(.rowlink-skip) { - cursor: pointer; -} -.table.rowlink td:not(.rowlink-skip) a, -.table .rowlink td:not(.rowlink-skip) a { - font: inherit; - color: inherit; - text-decoration: inherit; -} -.table-hover.rowlink tr:hover td, -.table-hover .rowlink tr:hover td { - background-color: #cfcfcf; -} -.btn-file { - position: relative; - overflow: hidden; - vertical-align: middle; -} -.btn-file > input { - position: absolute; - top: 0; - right: 0; - width: 100%; - height: 100%; - margin: 0; - font-size: 23px; - cursor: pointer; - filter: alpha(opacity=0); - opacity: 0; - - direction: ltr; -} -.fileinput { - display: inline-block; - margin-bottom: 9px; -} -.fileinput .form-control { - display: inline-block; - padding-top: 7px; - padding-bottom: 5px; - margin-bottom: 0; - vertical-align: middle; - cursor: text; -} -.fileinput .thumbnail { - display: inline-block; - margin-bottom: 5px; - overflow: hidden; - text-align: center; - vertical-align: middle; -} -.fileinput .thumbnail > img { - max-height: 100%; -} -.fileinput .btn { - vertical-align: middle; -} -.fileinput-exists .fileinput-new, -.fileinput-new .fileinput-exists { - display: none; -} -.fileinput-inline .fileinput-controls { - display: inline; -} -.fileinput-filename { - display: inline-block; - overflow: hidden; - vertical-align: middle; -} -.form-control .fileinput-filename { - vertical-align: bottom; -} -.fileinput.input-group { - display: table; -} -.fileinput.input-group > * { - position: relative; - z-index: 2; -} -.fileinput.input-group > .btn-file { - z-index: 1; -} -.fileinput-new.input-group .btn-file, -.fileinput-new .input-group .btn-file { - border-radius: 0 4px 4px 0; -} -.fileinput-new.input-group .btn-file.btn-xs, -.fileinput-new .input-group .btn-file.btn-xs, -.fileinput-new.input-group .btn-file.btn-sm, -.fileinput-new .input-group .btn-file.btn-sm { - border-radius: 0 3px 3px 0; -} -.fileinput-new.input-group .btn-file.btn-lg, -.fileinput-new .input-group .btn-file.btn-lg { - border-radius: 0 6px 6px 0; -} -.form-group.has-warning .fileinput .fileinput-preview { - color: #8a6d3b; -} -.form-group.has-warning .fileinput .thumbnail { - border-color: #faebcc; -} -.form-group.has-error .fileinput .fileinput-preview { - color: #a94442; -} -.form-group.has-error .fileinput .thumbnail { - border-color: #ebccd1; -} -.form-group.has-success .fileinput .fileinput-preview { - color: #3c763d; -} -.form-group.has-success .fileinput .thumbnail { - border-color: #d6e9c6; -} -.input-group-addon:not(:first-child) { - border-left: 0; -} -/*# sourceMappingURL=jasny-bootstrap.css.map */ diff --git a/src/main/resources/META-INF/resources/designer/css/jasny-bootstrap.css.map b/src/main/resources/META-INF/resources/designer/css/jasny-bootstrap.css.map deleted file mode 100644 index 0ccf8b7a5..000000000 --- a/src/main/resources/META-INF/resources/designer/css/jasny-bootstrap.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["less/grid-container-smooth.less","less/button-labels.less","less/nav-tab-alignment.less","less/navmenu.less","less/build/mixins.less","less/alerts-fixed.less","less/offcanvas.less","less/rowlink.less","less/fileinput.less"],"names":[],"mappings":"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","sourcesContent":["// Smooth sizing container\n// -------------------------\n\n.container-smooth {\n max-width: @container-lg;\n \n @media (min-width: 1px) {\n width: auto;\n }\n}\n","// Labels for buttons\n// --------------------------------------------------\n\n.button-label-size(@padding-vertical; @padding-horizontal; @border-radius) {\n padding: @padding-vertical @padding-horizontal;\n left: (-1 * @padding-horizontal);\n border-radius: (@border-radius - 1px) 0 0 (@border-radius - 1px);\n\n &.btn-label-right {\n left: auto;\n right: (-1 * @padding-horizontal);\n border-radius: 0 (@border-radius - 1px) (@border-radius - 1px) 0;\n }\n}\n\n\n.btn-labeled {\n padding-top: 0;\n padding-bottom: 0;\n}\n\n.btn-label {\n position: relative;\n background: transparent;\n background: rgba(0, 0, 0, 0.15);\n display: inline-block;\n .button-label-size(@padding-base-vertical; @padding-base-horizontal; @border-radius-base);\n}\n\n.btn-lg .btn-label {\n .button-label-size(@padding-large-vertical; @padding-large-horizontal; @border-radius-large);\n}\n.btn-sm .btn-label {\n .button-label-size(@padding-small-vertical; @padding-small-horizontal; @border-radius-small);\n}\n.btn-xs .btn-label {\n .button-label-size(1px; 5px; @border-radius-small);\n}\n","// Alignment options\n// -------------------------\n\n// bottom\n.nav-tabs-bottom {\n border-bottom: 0;\n border-top: 1px solid @nav-tabs-border-color;\n\n > li {\n margin-bottom: 0;\n margin-top: -1px;\n\n > a {\n border-radius: 0 0 @border-radius-base @border-radius-base;\n }\n\n > a:hover,\n > a:focus,\n &.active > a,\n &.active > a:hover,\n &.active > a:focus {\n border: 1px solid @nav-tabs-active-link-hover-border-color;\n border-top-color: transparent;\n }\n }\n}\n\n// left\n.nav-tabs-left {\n border-bottom: 0;\n border-right: 1px solid @nav-tabs-border-color;\n\n > li {\n margin-bottom: 0;\n margin-right: -1px;\n float: none;\n\n > a {\n border-radius: @border-radius-base 0 0 @border-radius-base;\n margin-right: 0;\n margin-bottom: 2px;\n }\n\n > a:hover,\n > a:focus,\n &.active > a,\n &.active > a:hover,\n &.active > a:focus {\n border: 1px solid @nav-tabs-active-link-hover-border-color;\n border-right-color: transparent;\n }\n }\n\n .row > & {\n padding-right: 0;\n padding-left: (@grid-gutter-width / 2);\n margin-right: -1px;\n position: relative;\n z-index: 1;\n\n & + .tab-content {\n border-left: 1px solid @nav-tabs-active-link-hover-border-color;\n }\n }\n}\n\n// right\n.nav-tabs-right {\n border-bottom: 0;\n border-left: 1px solid @nav-tabs-border-color;\n\n > li {\n margin-bottom: 0;\n margin-left: -1px;\n float: none;\n\n > a {\n border-radius: 0 @border-radius-base @border-radius-base 0;\n margin-left: 0;\n margin-bottom: 2px;\n }\n\n > a:hover,\n > a:focus,\n &.active > a,\n &.active > a:hover,\n &.active > a:focus {\n border: 1px solid @nav-tabs-active-link-hover-border-color;\n border-left-color: transparent;\n }\n }\n\n .row > & {\n padding-left: 0;\n padding-right: (@grid-gutter-width / 2);\n }\n}\n","// Navmenu and offcanvas navbar\n// --------------------------------------------------\n\n\n// Wrapper and base class\n//\n// Provide a static navmenu from which we expand to create the fixed navmenu\n// variations.\n\n.navmenu,\n.navbar-offcanvas {\n width: @navmenu-width;\n height: auto;\n border-width: 1px;\n border-style: solid;\n border-radius: @border-radius-base;\n}\n\n.navmenu-fixed-left,\n.navmenu-fixed-right,\n.navbar-offcanvas {\n position: fixed;\n z-index: @zindex-navmenu-fixed;\n top: 0;\n bottom: 0;\n overflow-y: auto;\n border-radius: 0;\n}\n.navmenu-fixed-left,\n.navbar-offcanvas.navmenu-fixed-left {\n left: 0;\n right: auto;\n border-width: 0 1px 0 0;\n}\n.navmenu-fixed-right,\n.navbar-offcanvas {\n left: auto;\n right: 0;\n border-width: 0 0 0 1px;\n}\n\n.navmenu-nav {\n margin-bottom: @navmenu-margin-vertical;\n\n &.dropdown-menu {\n position: static;\n margin: 0;\n padding-top: 0;\n float: none;\n border: none;\n .box-shadow(none);\n border-radius: 0;\n }\n}\n\n.navbar-offcanvas {\n .navbar-nav {\n margin: 0;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n width: auto;\n border-top: 0;\n box-shadow: none;\n\n &.offcanvas {\n position: static;\n display: block !important;\n height: auto !important;\n padding-bottom: 0; // Override default setting\n overflow: visible !important;\n }\n\n // Account for first and last children spacing\n .navbar-nav.navbar-left:first-child {\n margin-left: -@navbar-padding-horizontal;\n }\n .navbar-nav.navbar-right:last-child {\n margin-right: -@navbar-padding-horizontal;\n }\n\n .navmenu-brand {\n display: none;\n }\n }\n}\n\n// Brand/project name\n\n.navmenu-brand {\n display: block;\n font-size: @font-size-large;\n line-height: @line-height-computed;\n padding: @nav-link-padding;\n &:hover,\n &:focus {\n text-decoration: none;\n }\n margin: @navmenu-margin-vertical 0;\n}\n\n// Alternate navmenus\n// --------------------------------------------------\n\n// Default navmenu\n.navmenu-default,\n.navbar-default .navbar-offcanvas {\n background-color: @navmenu-default-bg;\n border-color: @navmenu-default-border;\n\n .navmenu-brand {\n color: @navmenu-default-brand-color;\n &:hover,\n &:focus {\n color: @navmenu-default-brand-hover-color;\n background-color: @navmenu-default-brand-hover-bg;\n }\n }\n\n .navmenu-text {\n color: @navmenu-default-color;\n }\n\n .navmenu-nav {\n // Caret should match text color on hover\n > .dropdown > a:hover .caret,\n > .dropdown > a:focus .caret {\n border-top-color: @navmenu-default-link-hover-color;\n border-bottom-color: @navmenu-default-link-hover-color;\n }\n\n // Remove background color from open dropdown\n > .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @navmenu-default-link-active-bg;\n color: @navmenu-default-link-active-color;\n .caret {\n border-top-color: @navmenu-default-link-active-color;\n border-bottom-color: @navmenu-default-link-active-color;\n }\n }\n }\n > .dropdown > a .caret {\n border-top-color: @navmenu-default-link-color;\n border-bottom-color: @navmenu-default-link-color;\n }\n &.dropdown-menu {\n background-color: @navmenu-default-link-active-bg;\n & > .divider {\n background-color: @navmenu-default-bg;\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n background-color: darken(@navmenu-default-link-active-bg, 6.5%);\n }\n }\n }\n\n > li > a {\n color: @navmenu-default-link-color;\n &:hover,\n &:focus {\n color: @navmenu-default-link-hover-color;\n background-color: @navmenu-default-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navmenu-default-link-active-color;\n background-color: @navmenu-default-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navmenu-default-link-disabled-color;\n background-color: @navmenu-default-link-disabled-bg;\n }\n }\n }\n}\n\n// Inverse navmenu\n.navmenu-inverse,\n.navbar-inverse .navbar-offcanvas {\n background-color: @navmenu-inverse-bg;\n border-color: @navmenu-inverse-border;\n\n .navmenu-brand {\n color: @navmenu-inverse-brand-color;\n &:hover,\n &:focus {\n color: @navmenu-inverse-brand-hover-color;\n background-color: @navmenu-inverse-brand-hover-bg;\n }\n }\n\n .navmenu-text {\n color: @navmenu-inverse-color;\n }\n\n .navmenu-nav {\n // Caret should match text color on hover\n > .dropdown > a:hover .caret,\n > .dropdown > a:focus .caret {\n border-top-color: @navmenu-inverse-link-hover-color;\n border-bottom-color: @navmenu-inverse-link-hover-color;\n }\n\n // Remove background color from open dropdown\n > .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @navmenu-inverse-link-active-bg;\n color: @navmenu-inverse-link-active-color;\n .caret {\n border-top-color: @navmenu-inverse-link-active-color;\n border-bottom-color: @navmenu-inverse-link-active-color;\n }\n }\n }\n > .dropdown > a .caret {\n border-top-color: @navmenu-inverse-link-color;\n border-bottom-color: @navmenu-inverse-link-color;\n }\n &.dropdown-menu {\n background-color: @navmenu-inverse-link-active-bg;\n & > .divider {\n background-color: @navmenu-inverse-bg;\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n background-color: darken(@navmenu-inverse-link-active-bg, 6.5%);\n }\n }\n }\n\n > li > a {\n color: @navmenu-inverse-link-color;\n &:hover,\n &:focus {\n color: @navmenu-inverse-link-hover-color;\n background-color: @navmenu-inverse-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navmenu-inverse-link-active-color;\n background-color: @navmenu-inverse-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navmenu-inverse-link-disabled-color;\n background-color: @navmenu-inverse-link-disabled-bg;\n }\n }\n }\n}\n","//\n// These mixins are used when Jasny Bootstrap is\n// built without importing Twitter Bootstrap.\n// --------------------------------------------------\n\n\n// CSS3 PROPERTIES\n// --------------------------------------------------\n\n// Single side border-radius\n.border-top-radius(@radius) {\n border-top-right-radius: @radius;\n border-top-left-radius: @radius;\n}\n.border-right-radius(@radius) {\n border-bottom-right-radius: @radius;\n border-top-right-radius: @radius;\n}\n.border-bottom-radius(@radius) {\n border-bottom-right-radius: @radius;\n border-bottom-left-radius: @radius;\n}\n.border-left-radius(@radius) {\n border-bottom-left-radius: @radius;\n border-top-left-radius: @radius;\n}\n\n// Drop shadows\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n.transition(@transition) {\n -webkit-transition: @transition;\n -o-transition: @transition;\n transition: @transition;\n}\n\n// Transition\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n -webkit-transition-timing-function: @timing-function;\n transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}","// Fixed alerts\n// Position to the top or bottom.\n// ------------------------------------------------\n\n.alert-fixed-top,\n.alert-fixed-bottom {\n position: fixed;\n width: 100%;\n z-index: @zindex-alert-fixed;\n border-radius: 0;\n margin: 0;\n left: 0;\n\n @media (min-width: @alert-fixed-width) {\n width: @alert-fixed-width;\n left: 50%;\n margin-left: (-1 * (@alert-fixed-width / 2));\n }\n}\n\n.alert-fixed-top {\n top: 0;\n border-width: 0 0 1px 0;\n \n @media (min-width: @alert-fixed-width) {\n .border-bottom-radius(@alert-border-radius);\n border-width: 0 1px 1px 1px;\n }\n}\n\n.alert-fixed-bottom {\n bottom: 0;\n border-width: 1px 0 0 0;\n \n @media (min-width: @alert-fixed-width) {\n .border-top-radius(@alert-border-radius);\n border-width: 1px 1px 0 1px;\n }\n}\n","// Off canvas navigation\n// --------------------------------------------------\n\n.offcanvas {\n display: none;\n &.in {\n display: block;\n }\n}\n\n@media (max-width: @screen-xs-max) {\n .offcanvas-xs {\n .offcanvas;\n }\n}\n@media (max-width: @screen-sm-max) {\n .offcanvas-sm {\n .offcanvas;\n }\n}\n@media (max-width: @screen-md-max) {\n .offcanvas-md {\n .offcanvas;\n }\n}\n.offcanvas-lg {\n .offcanvas;\n}\n\n.canvas-sliding {\n -webkit-transition: top 0.35s, left 0.35s, bottom 0.35s, right 0.35s;\n transition: top 0.35s, left 0.35s, bottom 0.35s, right 0.35s;\n}\n\n.offcanvas-clone {\n height: 0px !important;\n width: 0px !important;\n overflow: hidden !important;\n border: none !important;\n margin: 0px !important;\n padding: 0px !important;\n position: absolute !important;\n top: auto !important;\n left: auto !important;\n bottom: 0px !important;\n right: 0px !important;\n opacity: 0 !important;\n}\n","// Rowlink\n// --------------------------------------------------\n\n.table.rowlink,\n.table .rowlink {\n td:not(.rowlink-skip) {\n cursor: pointer;\n\n a {\n color: inherit;\n font: inherit;\n text-decoration: inherit;\n }\n }\n}\n\n.table-hover.rowlink,\n.table-hover .rowlink {\n tr:hover td {\n background-color: darken(@table-bg-hover, 15%);\n }\n}\n","// Fileinput.less\n// CSS for file upload button and fileinput widget\n// ------------------------------------------------\n\n.btn-file {\n overflow: hidden;\n position: relative;\n vertical-align: middle;\n > input {\n position: absolute;\n top: 0;\n right: 0;\n margin: 0;\n opacity: 0;\n filter: alpha(opacity=0);\n font-size: 23px;\n height: 100%;\n width: 100%;\n direction: ltr;\n cursor: pointer;\n }\n}\n\n.fileinput {\n margin-bottom: 9px;\n display: inline-block;\n .form-control {\n padding-top: 7px;\n padding-bottom: 5px;\n display: inline-block;\n margin-bottom: 0px;\n vertical-align: middle;\n cursor: text;\n }\n .thumbnail {\n overflow: hidden;\n display: inline-block;\n margin-bottom: 5px;\n vertical-align: middle;\n text-align: center;\n > img {\n max-height: 100%;\n }\n }\n .btn {\n vertical-align: middle;\n }\n}\n.fileinput-exists .fileinput-new,\n.fileinput-new .fileinput-exists {\n display: none;\n}\n.fileinput-inline .fileinput-controls {\n display: inline;\n}\n\n.fileinput-filename {\n vertical-align: middle;\n display: inline-block;\n overflow: hidden;\n}\n.form-control .fileinput-filename {\n vertical-align: bottom;\n}\n\n.fileinput.input-group {\n display: table;\n \n > * {\n position: relative;\n z-index: 2;\n }\n > .btn-file {\n z-index: 1;\n }\n}\n\n// Not 100% correct, but helps in typical use case\n.fileinput-new.input-group .btn-file,\n.fileinput-new .input-group .btn-file {\n border-radius: 0 @border-radius-base @border-radius-base 0;\n\n &.btn-xs,\n &.btn-sm {\n border-radius: 0 @border-radius-small @border-radius-small 0;\n }\n &.btn-lg {\n border-radius: 0 @border-radius-large @border-radius-large 0;\n }\n}\n\n.form-group.has-warning .fileinput {\n .fileinput-preview {\n color: @state-warning-text;\n }\n .thumbnail {\n border-color: @state-warning-border;\n }\n}\n.form-group.has-error .fileinput {\n .fileinput-preview {\n color: @state-danger-text;\n }\n .thumbnail {\n border-color: @state-danger-border;\n }\n}\n.form-group.has-success .fileinput {\n .fileinput-preview {\n color: @state-success-text;\n }\n .thumbnail {\n border-color: @state-success-border;\n }\n}\n\n\n// Input group fixes\n\n.input-group-addon:not(:first-child) {\n border-left: 0;\n}\n"]}
\ No newline at end of file diff --git a/src/main/resources/META-INF/resources/designer/css/jasny-bootstrap.min.css b/src/main/resources/META-INF/resources/designer/css/jasny-bootstrap.min.css deleted file mode 100644 index cffc43a85..000000000 --- a/src/main/resources/META-INF/resources/designer/css/jasny-bootstrap.min.css +++ /dev/null @@ -1,7 +0,0 @@ -/*! - * Jasny Bootstrap v3.1.3 (http://jasny.github.io/bootstrap) - * Copyright 2012-2014 Arnold Daniels - * Licensed under Apache-2.0 (https://github.com/jasny/bootstrap/blob/master/LICENSE) - */ - -.container-smooth{max-width:1170px}@media (min-width:1px){.container-smooth{width:auto}}.btn-labeled{padding-top:0;padding-bottom:0}.btn-label{position:relative;background:0 0;background:rgba(0,0,0,.15);display:inline-block;padding:6px 12px;left:-12px;border-radius:3px 0 0 3px}.btn-label.btn-label-right{left:auto;right:-12px;border-radius:0 3px 3px 0}.btn-lg .btn-label{padding:10px 16px;left:-16px;border-radius:5px 0 0 5px}.btn-lg .btn-label.btn-label-right{left:auto;right:-16px;border-radius:0 5px 5px 0}.btn-sm .btn-label{padding:5px 10px;left:-10px;border-radius:2px 0 0 2px}.btn-sm .btn-label.btn-label-right{left:auto;right:-10px;border-radius:0 2px 2px 0}.btn-xs .btn-label{padding:1px 5px;left:-5px;border-radius:2px 0 0 2px}.btn-xs .btn-label.btn-label-right{left:auto;right:-5px;border-radius:0 2px 2px 0}.nav-tabs-bottom{border-bottom:0;border-top:1px solid #ddd}.nav-tabs-bottom>li{margin-bottom:0;margin-top:-1px}.nav-tabs-bottom>li>a{border-radius:0 0 4px 4px}.nav-tabs-bottom>li>a:hover,.nav-tabs-bottom>li>a:focus,.nav-tabs-bottom>li.active>a,.nav-tabs-bottom>li.active>a:hover,.nav-tabs-bottom>li.active>a:focus{border:1px solid #ddd;border-top-color:transparent}.nav-tabs-left{border-bottom:0;border-right:1px solid #ddd}.nav-tabs-left>li{margin-bottom:0;margin-right:-1px;float:none}.nav-tabs-left>li>a{border-radius:4px 0 0 4px;margin-right:0;margin-bottom:2px}.nav-tabs-left>li>a:hover,.nav-tabs-left>li>a:focus,.nav-tabs-left>li.active>a,.nav-tabs-left>li.active>a:hover,.nav-tabs-left>li.active>a:focus{border:1px solid #ddd;border-right-color:transparent}.row>.nav-tabs-left{padding-right:0;padding-left:15px;margin-right:-1px;position:relative;z-index:1}.row>.nav-tabs-left+.tab-content{border-left:1px solid #ddd}.nav-tabs-right{border-bottom:0;border-left:1px solid #ddd}.nav-tabs-right>li{margin-bottom:0;margin-left:-1px;float:none}.nav-tabs-right>li>a{border-radius:0 4px 4px 0;margin-left:0;margin-bottom:2px}.nav-tabs-right>li>a:hover,.nav-tabs-right>li>a:focus,.nav-tabs-right>li.active>a,.nav-tabs-right>li.active>a:hover,.nav-tabs-right>li.active>a:focus{border:1px solid #ddd;border-left-color:transparent}.row>.nav-tabs-right{padding-left:0;padding-right:15px}.navmenu,.navbar-offcanvas{width:300px;height:auto;border-width:1px;border-style:solid;border-radius:4px}.navmenu-fixed-left,.navmenu-fixed-right,.navbar-offcanvas{position:fixed;z-index:1030;top:0;bottom:0;overflow-y:auto;border-radius:0}.navmenu-fixed-left,.navbar-offcanvas.navmenu-fixed-left{left:0;right:auto;border-width:0 1px 0 0}.navmenu-fixed-right,.navbar-offcanvas{left:auto;right:0;border-width:0 0 0 1px}.navmenu-nav{margin-bottom:10px}.navmenu-nav.dropdown-menu{position:static;margin:0;padding-top:0;float:none;border:none;-webkit-box-shadow:none;box-shadow:none;border-radius:0}.navbar-offcanvas .navbar-nav{margin:0}@media (min-width:768px){.navbar-offcanvas{width:auto;border-top:0;box-shadow:none}.navbar-offcanvas.offcanvas{position:static;display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-offcanvas .navbar-nav.navbar-left:first-child{margin-left:-15px}.navbar-offcanvas .navbar-nav.navbar-right:last-child{margin-right:-15px}.navbar-offcanvas .navmenu-brand{display:none}}.navmenu-brand{display:block;font-size:18px;line-height:20px;padding:10px 15px;margin:10px 0}.navmenu-brand:hover,.navmenu-brand:focus{text-decoration:none}.navmenu-default,.navbar-default .navbar-offcanvas{background-color:#f8f8f8;border-color:#e7e7e7}.navmenu-default .navmenu-brand,.navbar-default .navbar-offcanvas .navmenu-brand{color:#777}.navmenu-default .navmenu-brand:hover,.navbar-default .navbar-offcanvas .navmenu-brand:hover,.navmenu-default .navmenu-brand:focus,.navbar-default .navbar-offcanvas .navmenu-brand:focus{color:#5e5e5e;background-color:transparent}.navmenu-default .navmenu-text,.navbar-default .navbar-offcanvas .navmenu-text{color:#777}.navmenu-default .navmenu-nav>.dropdown>a:hover .caret,.navbar-default .navbar-offcanvas .navmenu-nav>.dropdown>a:hover .caret,.navmenu-default .navmenu-nav>.dropdown>a:focus .caret,.navbar-default .navbar-offcanvas .navmenu-nav>.dropdown>a:focus .caret{border-top-color:#333;border-bottom-color:#333}.navmenu-default .navmenu-nav>.open>a,.navbar-default .navbar-offcanvas .navmenu-nav>.open>a,.navmenu-default .navmenu-nav>.open>a:hover,.navbar-default .navbar-offcanvas .navmenu-nav>.open>a:hover,.navmenu-default .navmenu-nav>.open>a:focus,.navbar-default .navbar-offcanvas .navmenu-nav>.open>a:focus{background-color:#e7e7e7;color:#555}.navmenu-default .navmenu-nav>.open>a .caret,.navbar-default .navbar-offcanvas .navmenu-nav>.open>a .caret,.navmenu-default .navmenu-nav>.open>a:hover .caret,.navbar-default .navbar-offcanvas .navmenu-nav>.open>a:hover .caret,.navmenu-default .navmenu-nav>.open>a:focus .caret,.navbar-default .navbar-offcanvas .navmenu-nav>.open>a:focus .caret{border-top-color:#555;border-bottom-color:#555}.navmenu-default .navmenu-nav>.dropdown>a .caret,.navbar-default .navbar-offcanvas .navmenu-nav>.dropdown>a .caret{border-top-color:#777;border-bottom-color:#777}.navmenu-default .navmenu-nav.dropdown-menu,.navbar-default .navbar-offcanvas .navmenu-nav.dropdown-menu{background-color:#e7e7e7}.navmenu-default .navmenu-nav.dropdown-menu>.divider,.navbar-default .navbar-offcanvas .navmenu-nav.dropdown-menu>.divider{background-color:#f8f8f8}.navmenu-default .navmenu-nav.dropdown-menu>.active>a,.navbar-default .navbar-offcanvas .navmenu-nav.dropdown-menu>.active>a,.navmenu-default .navmenu-nav.dropdown-menu>.active>a:hover,.navbar-default .navbar-offcanvas .navmenu-nav.dropdown-menu>.active>a:hover,.navmenu-default .navmenu-nav.dropdown-menu>.active>a:focus,.navbar-default .navbar-offcanvas .navmenu-nav.dropdown-menu>.active>a:focus{background-color:#d7d7d7}.navmenu-default .navmenu-nav>li>a,.navbar-default .navbar-offcanvas .navmenu-nav>li>a{color:#777}.navmenu-default .navmenu-nav>li>a:hover,.navbar-default .navbar-offcanvas .navmenu-nav>li>a:hover,.navmenu-default .navmenu-nav>li>a:focus,.navbar-default .navbar-offcanvas .navmenu-nav>li>a:focus{color:#333;background-color:transparent}.navmenu-default .navmenu-nav>.active>a,.navbar-default .navbar-offcanvas .navmenu-nav>.active>a,.navmenu-default .navmenu-nav>.active>a:hover,.navbar-default .navbar-offcanvas .navmenu-nav>.active>a:hover,.navmenu-default .navmenu-nav>.active>a:focus,.navbar-default .navbar-offcanvas .navmenu-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navmenu-default .navmenu-nav>.disabled>a,.navbar-default .navbar-offcanvas .navmenu-nav>.disabled>a,.navmenu-default .navmenu-nav>.disabled>a:hover,.navbar-default .navbar-offcanvas .navmenu-nav>.disabled>a:hover,.navmenu-default .navmenu-nav>.disabled>a:focus,.navbar-default .navbar-offcanvas .navmenu-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navmenu-inverse,.navbar-inverse .navbar-offcanvas{background-color:#222;border-color:#080808}.navmenu-inverse .navmenu-brand,.navbar-inverse .navbar-offcanvas .navmenu-brand{color:#999}.navmenu-inverse .navmenu-brand:hover,.navbar-inverse .navbar-offcanvas .navmenu-brand:hover,.navmenu-inverse .navmenu-brand:focus,.navbar-inverse .navbar-offcanvas .navmenu-brand:focus{color:#fff;background-color:transparent}.navmenu-inverse .navmenu-text,.navbar-inverse .navbar-offcanvas .navmenu-text{color:#999}.navmenu-inverse .navmenu-nav>.dropdown>a:hover .caret,.navbar-inverse .navbar-offcanvas .navmenu-nav>.dropdown>a:hover .caret,.navmenu-inverse .navmenu-nav>.dropdown>a:focus .caret,.navbar-inverse .navbar-offcanvas .navmenu-nav>.dropdown>a:focus .caret{border-top-color:#fff;border-bottom-color:#fff}.navmenu-inverse .navmenu-nav>.open>a,.navbar-inverse .navbar-offcanvas .navmenu-nav>.open>a,.navmenu-inverse .navmenu-nav>.open>a:hover,.navbar-inverse .navbar-offcanvas .navmenu-nav>.open>a:hover,.navmenu-inverse .navmenu-nav>.open>a:focus,.navbar-inverse .navbar-offcanvas .navmenu-nav>.open>a:focus{background-color:#080808;color:#fff}.navmenu-inverse .navmenu-nav>.open>a .caret,.navbar-inverse .navbar-offcanvas .navmenu-nav>.open>a .caret,.navmenu-inverse .navmenu-nav>.open>a:hover .caret,.navbar-inverse .navbar-offcanvas .navmenu-nav>.open>a:hover .caret,.navmenu-inverse .navmenu-nav>.open>a:focus .caret,.navbar-inverse .navbar-offcanvas .navmenu-nav>.open>a:focus .caret{border-top-color:#fff;border-bottom-color:#fff}.navmenu-inverse .navmenu-nav>.dropdown>a .caret,.navbar-inverse .navbar-offcanvas .navmenu-nav>.dropdown>a .caret{border-top-color:#999;border-bottom-color:#999}.navmenu-inverse .navmenu-nav.dropdown-menu,.navbar-inverse .navbar-offcanvas .navmenu-nav.dropdown-menu{background-color:#080808}.navmenu-inverse .navmenu-nav.dropdown-menu>.divider,.navbar-inverse .navbar-offcanvas .navmenu-nav.dropdown-menu>.divider{background-color:#222}.navmenu-inverse .navmenu-nav.dropdown-menu>.active>a,.navbar-inverse .navbar-offcanvas .navmenu-nav.dropdown-menu>.active>a,.navmenu-inverse .navmenu-nav.dropdown-menu>.active>a:hover,.navbar-inverse .navbar-offcanvas .navmenu-nav.dropdown-menu>.active>a:hover,.navmenu-inverse .navmenu-nav.dropdown-menu>.active>a:focus,.navbar-inverse .navbar-offcanvas .navmenu-nav.dropdown-menu>.active>a:focus{background-color:#000}.navmenu-inverse .navmenu-nav>li>a,.navbar-inverse .navbar-offcanvas .navmenu-nav>li>a{color:#999}.navmenu-inverse .navmenu-nav>li>a:hover,.navbar-inverse .navbar-offcanvas .navmenu-nav>li>a:hover,.navmenu-inverse .navmenu-nav>li>a:focus,.navbar-inverse .navbar-offcanvas .navmenu-nav>li>a:focus{color:#fff;background-color:transparent}.navmenu-inverse .navmenu-nav>.active>a,.navbar-inverse .navbar-offcanvas .navmenu-nav>.active>a,.navmenu-inverse .navmenu-nav>.active>a:hover,.navbar-inverse .navbar-offcanvas .navmenu-nav>.active>a:hover,.navmenu-inverse .navmenu-nav>.active>a:focus,.navbar-inverse .navbar-offcanvas .navmenu-nav>.active>a:focus{color:#fff;background-color:#080808}.navmenu-inverse .navmenu-nav>.disabled>a,.navbar-inverse .navbar-offcanvas .navmenu-nav>.disabled>a,.navmenu-inverse .navmenu-nav>.disabled>a:hover,.navbar-inverse .navbar-offcanvas .navmenu-nav>.disabled>a:hover,.navmenu-inverse .navmenu-nav>.disabled>a:focus,.navbar-inverse .navbar-offcanvas .navmenu-nav>.disabled>a:focus{color:#444;background-color:transparent}.alert-fixed-top,.alert-fixed-bottom{position:fixed;width:100%;z-index:1035;border-radius:0;margin:0;left:0}@media (min-width:992px){.alert-fixed-top,.alert-fixed-bottom{width:992px;left:50%;margin-left:-496px}}.alert-fixed-top{top:0;border-width:0 0 1px}@media (min-width:992px){.alert-fixed-top{border-bottom-right-radius:4px;border-bottom-left-radius:4px;border-width:0 1px 1px}}.alert-fixed-bottom{bottom:0;border-width:1px 0 0}@media (min-width:992px){.alert-fixed-bottom{border-top-right-radius:4px;border-top-left-radius:4px;border-width:1px 1px 0}}.offcanvas{display:none}.offcanvas.in{display:block}@media (max-width:767px){.offcanvas-xs{display:none}.offcanvas-xs.in{display:block}}@media (max-width:991px){.offcanvas-sm{display:none}.offcanvas-sm.in{display:block}}@media (max-width:1199px){.offcanvas-md{display:none}.offcanvas-md.in{display:block}}.offcanvas-lg{display:none}.offcanvas-lg.in{display:block}.canvas-sliding{-webkit-transition:top .35s,left .35s,bottom .35s,right .35s;transition:top .35s,left .35s,bottom .35s,right .35s}.offcanvas-clone{height:0!important;width:0!important;overflow:hidden!important;border:none!important;margin:0!important;padding:0!important;position:absolute!important;top:auto!important;left:auto!important;bottom:0!important;right:0!important;opacity:0!important}.table.rowlink td:not(.rowlink-skip),.table .rowlink td:not(.rowlink-skip){cursor:pointer}.table.rowlink td:not(.rowlink-skip) a,.table .rowlink td:not(.rowlink-skip) a{color:inherit;font:inherit;text-decoration:inherit}.table-hover.rowlink tr:hover td,.table-hover .rowlink tr:hover td{background-color:#cfcfcf}.btn-file{overflow:hidden;position:relative;vertical-align:middle}.btn-file>input{position:absolute;top:0;right:0;margin:0;opacity:0;filter:alpha(opacity=0);font-size:23px;height:100%;width:100%;direction:ltr;cursor:pointer}.fileinput{margin-bottom:9px;display:inline-block}.fileinput .form-control{padding-top:7px;padding-bottom:5px;display:inline-block;margin-bottom:0;vertical-align:middle;cursor:text}.fileinput .thumbnail{overflow:hidden;display:inline-block;margin-bottom:5px;vertical-align:middle;text-align:center}.fileinput .thumbnail>img{max-height:100%}.fileinput .btn{vertical-align:middle}.fileinput-exists .fileinput-new,.fileinput-new .fileinput-exists{display:none}.fileinput-inline .fileinput-controls{display:inline}.fileinput-filename{vertical-align:middle;display:inline-block;overflow:hidden}.form-control .fileinput-filename{vertical-align:bottom}.fileinput.input-group{display:table}.fileinput.input-group>*{position:relative;z-index:2}.fileinput.input-group>.btn-file{z-index:1}.fileinput-new.input-group .btn-file,.fileinput-new .input-group .btn-file{border-radius:0 4px 4px 0}.fileinput-new.input-group .btn-file.btn-xs,.fileinput-new .input-group .btn-file.btn-xs,.fileinput-new.input-group .btn-file.btn-sm,.fileinput-new .input-group .btn-file.btn-sm{border-radius:0 3px 3px 0}.fileinput-new.input-group .btn-file.btn-lg,.fileinput-new .input-group .btn-file.btn-lg{border-radius:0 6px 6px 0}.form-group.has-warning .fileinput .fileinput-preview{color:#8a6d3b}.form-group.has-warning .fileinput .thumbnail{border-color:#faebcc}.form-group.has-error .fileinput .fileinput-preview{color:#a94442}.form-group.has-error .fileinput .thumbnail{border-color:#ebccd1}.form-group.has-success .fileinput .fileinput-preview{color:#3c763d}.form-group.has-success .fileinput .thumbnail{border-color:#d6e9c6}.input-group-addon:not(:first-child){border-left:0} diff --git a/src/main/resources/META-INF/resources/designer/index.html b/src/main/resources/META-INF/resources/designer/index.html index 928f030e7..584d2f828 100644 --- a/src/main/resources/META-INF/resources/designer/index.html +++ b/src/main/resources/META-INF/resources/designer/index.html @@ -57,7 +57,6 @@ <link href="css/loading-bar.css" rel="stylesheet"> -<link href="css/jasny-bootstrap.css" rel="stylesheet"> <link href="css/navmenu.css" rel="stylesheet"> <link href="css/dialogs.css" rel="stylesheet"> @@ -135,7 +134,6 @@ <script src="lib/moment.min.js"></script> <script src="lib/loading-bar.js"></script> - <!-- <script src="lib/jasny-bootstrap.js"></script> --> <script src="lib/dialogs.js"></script> <script src="lib/ui-grid-stable.js"></script> diff --git a/src/main/resources/META-INF/resources/designer/lib/jasny-bootstrap.js b/src/main/resources/META-INF/resources/designer/lib/jasny-bootstrap.js deleted file mode 100644 index 9e7b21993..000000000 --- a/src/main/resources/META-INF/resources/designer/lib/jasny-bootstrap.js +++ /dev/null @@ -1,1024 +0,0 @@ -/*! - * Jasny Bootstrap v3.1.3 (http://jasny.github.io/bootstrap) - * Copyright 2012-2014 Arnold Daniels - * Licensed under Apache-2.0 (https://github.com/jasny/bootstrap/blob/master/LICENSE) - */ - -if (typeof jQuery === 'undefined') { throw new Error('Jasny Bootstrap\'s JavaScript requires jQuery') } - -/* ======================================================================== - * Bootstrap: transition.js v3.1.3 - * http://getbootstrap.com/javascript/#transitions - * ======================================================================== - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/) - // ============================================================ - - function transitionEnd() { - var el = document.createElement('bootstrap') - - var transEndEventNames = { - WebkitTransition : 'webkitTransitionEnd', - MozTransition : 'transitionend', - OTransition : 'oTransitionEnd otransitionend', - transition : 'transitionend' - } - - for (var name in transEndEventNames) { - if (el.style[name] !== undefined) { - return { end: transEndEventNames[name] } - } - } - - return false // explicit for ie8 ( ._.) - } - - if ($.support.transition !== undefined) return // Prevent conflict with Twitter Bootstrap - - // http://blog.alexmaccaw.com/css-transitions - $.fn.emulateTransitionEnd = function (duration) { - var called = false, $el = this - $(this).one($.support.transition.end, function () { called = true }) - var callback = function () { if (!called) $($el).trigger($.support.transition.end) } - setTimeout(callback, duration) - return this - } - - $(function () { - $.support.transition = transitionEnd() - }) - -}(window.jQuery); - -/* ======================================================================== - * Bootstrap: offcanvas.js v3.1.3 - * http://jasny.github.io/bootstrap/javascript/#offcanvas - * ======================================================================== - * Copyright 2013-2014 Arnold Daniels - * - * Licensed under the Apache License, Version 2.0 (the "License") - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ======================================================================== */ - -+function ($) { "use strict"; - - // OFFCANVAS PUBLIC CLASS DEFINITION - // ================================= - - var OffCanvas = function (element, options) { - this.$element = $(element) - this.options = $.extend({}, OffCanvas.DEFAULTS, options) - this.state = null - this.placement = null - - if (this.options.recalc) { - this.calcClone() - $(window).on('resize', $.proxy(this.recalc, this)) - } - - if (this.options.autohide) - $(document).on('click', $.proxy(this.autohide, this)) - - if (this.options.toggle) this.toggle() - - if (this.options.disablescrolling) { - this.options.disableScrolling = this.options.disablescrolling - delete this.options.disablescrolling - } - } - - OffCanvas.DEFAULTS = { - toggle: true, - placement: 'auto', - autohide: true, - recalc: true, - disableScrolling: true - } - - OffCanvas.prototype.offset = function () { - switch (this.placement) { - case 'left': - case 'right': return this.$element.outerWidth() - case 'top': - case 'bottom': return this.$element.outerHeight() - } - } - - OffCanvas.prototype.calcPlacement = function () { - if (this.options.placement !== 'auto') { - this.placement = this.options.placement - return - } - - if (!this.$element.hasClass('in')) { - this.$element.css('visiblity', 'hidden !important').addClass('in') - } - - var horizontal = $(window).width() / this.$element.width() - var vertical = $(window).height() / this.$element.height() - - var element = this.$element - function ab(a, b) { - if (element.css(b) === 'auto') return a - if (element.css(a) === 'auto') return b - - var size_a = parseInt(element.css(a), 10) - var size_b = parseInt(element.css(b), 10) - - return size_a > size_b ? b : a - } - - this.placement = horizontal >= vertical ? ab('left', 'right') : ab('top', 'bottom') - - if (this.$element.css('visibility') === 'hidden !important') { - this.$element.removeClass('in').css('visiblity', '') - } - } - - OffCanvas.prototype.opposite = function (placement) { - switch (placement) { - case 'top': return 'bottom' - case 'left': return 'right' - case 'bottom': return 'top' - case 'right': return 'left' - } - } - - OffCanvas.prototype.getCanvasElements = function() { - // Return a set containing the canvas plus all fixed elements - var canvas = this.options.canvas ? $(this.options.canvas) : this.$element - - var fixed_elements = canvas.find('*').filter(function() { - return $(this).css('position') === 'fixed' - }).not(this.options.exclude) - - return canvas.add(fixed_elements) - } - - OffCanvas.prototype.slide = function (elements, offset, callback) { - // Use jQuery animation if CSS transitions aren't supported - if (!$.support.transition) { - var anim = {} - anim[this.placement] = "+=" + offset - return elements.animate(anim, 350, callback) - } - - var placement = this.placement - var opposite = this.opposite(placement) - - elements.each(function() { - if ($(this).css(placement) !== 'auto') - $(this).css(placement, (parseInt($(this).css(placement), 10) || 0) + offset) - - if ($(this).css(opposite) !== 'auto') - $(this).css(opposite, (parseInt($(this).css(opposite), 10) || 0) - offset) - }) - - this.$element - .one($.support.transition.end, callback) - .emulateTransitionEnd(350) - } - - OffCanvas.prototype.disableScrolling = function() { - var bodyWidth = $('body').width() - var prop = 'padding-' + this.opposite(this.placement) - - if ($('body').data('offcanvas-style') === undefined) { - $('body').data('offcanvas-style', $('body').attr('style') || '') - } - - $('body').css('overflow', 'hidden') - - if ($('body').width() > bodyWidth) { - var padding = parseInt($('body').css(prop), 10) + $('body').width() - bodyWidth - - setTimeout(function() { - $('body').css(prop, padding) - }, 1) - } - } - - OffCanvas.prototype.show = function () { - if (this.state) return - - var startEvent = $.Event('show.bs.offcanvas') - this.$element.trigger(startEvent) - if (startEvent.isDefaultPrevented()) return - - this.state = 'slide-in' - this.calcPlacement(); - - var elements = this.getCanvasElements() - var placement = this.placement - var opposite = this.opposite(placement) - var offset = this.offset() - - if (elements.index(this.$element) !== -1) { - $(this.$element).data('offcanvas-style', $(this.$element).attr('style') || '') - this.$element.css(placement, -1 * offset) - this.$element.css(placement); // Workaround: Need to get the CSS property for it to be applied before the next line of code - } - - elements.addClass('canvas-sliding').each(function() { - if ($(this).data('offcanvas-style') === undefined) $(this).data('offcanvas-style', $(this).attr('style') || '') - if ($(this).css('position') === 'static') $(this).css('position', 'relative') - if (($(this).css(placement) === 'auto' || $(this).css(placement) === '0px') && - ($(this).css(opposite) === 'auto' || $(this).css(opposite) === '0px')) { - $(this).css(placement, 0) - } - }) - - if (this.options.disableScrolling) this.disableScrolling() - - var complete = function () { - if (this.state != 'slide-in') return - - this.state = 'slid' - - elements.removeClass('canvas-sliding').addClass('canvas-slid') - this.$element.trigger('shown.bs.offcanvas') - } - - setTimeout($.proxy(function() { - this.$element.addClass('in') - this.slide(elements, offset, $.proxy(complete, this)) - }, this), 1) - } - - OffCanvas.prototype.hide = function (fast) { - if (this.state !== 'slid') return - - var startEvent = $.Event('hide.bs.offcanvas') - this.$element.trigger(startEvent) - if (startEvent.isDefaultPrevented()) return - - this.state = 'slide-out' - - var elements = $('.canvas-slid') - var placement = this.placement - var offset = -1 * this.offset() - - var complete = function () { - if (this.state != 'slide-out') return - - this.state = null - this.placement = null - - this.$element.removeClass('in') - - elements.removeClass('canvas-sliding') - elements.add(this.$element).add('body').each(function() { - $(this).attr('style', $(this).data('offcanvas-style')).removeData('offcanvas-style') - }) - - this.$element.trigger('hidden.bs.offcanvas') - } - - elements.removeClass('canvas-slid').addClass('canvas-sliding') - - setTimeout($.proxy(function() { - this.slide(elements, offset, $.proxy(complete, this)) - }, this), 1) - } - - OffCanvas.prototype.toggle = function () { - if (this.state === 'slide-in' || this.state === 'slide-out') return - this[this.state === 'slid' ? 'hide' : 'show']() - } - - OffCanvas.prototype.calcClone = function() { - this.$calcClone = this.$element.clone() - .html('') - .addClass('offcanvas-clone').removeClass('in') - .appendTo($('body')) - } - - OffCanvas.prototype.recalc = function () { - if (this.$calcClone.css('display') === 'none' || (this.state !== 'slid' && this.state !== 'slide-in')) return - - this.state = null - this.placement = null - var elements = this.getCanvasElements() - - this.$element.removeClass('in') - - elements.removeClass('canvas-slid') - elements.add(this.$element).add('body').each(function() { - $(this).attr('style', $(this).data('offcanvas-style')).removeData('offcanvas-style') - }) - } - - OffCanvas.prototype.autohide = function (e) { - if ($(e.target).closest(this.$element).length === 0) this.hide() - } - - // OFFCANVAS PLUGIN DEFINITION - // ========================== - - var old = $.fn.offcanvas - - $.fn.offcanvas = function (option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.offcanvas') - var options = $.extend({}, OffCanvas.DEFAULTS, $this.data(), typeof option === 'object' && option) - - if (!data) $this.data('bs.offcanvas', (data = new OffCanvas(this, options))) - if (typeof option === 'string') data[option]() - }) - } - - $.fn.offcanvas.Constructor = OffCanvas - - - // OFFCANVAS NO CONFLICT - // ==================== - - $.fn.offcanvas.noConflict = function () { - $.fn.offcanvas = old - return this - } - - - // OFFCANVAS DATA-API - // ================= - - $(document).on('click.bs.offcanvas.data-api', '[data-toggle=offcanvas]', function (e) { - var $this = $(this), href - var target = $this.attr('data-target') - || e.preventDefault() - || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7 - var $canvas = $(target) - var data = $canvas.data('bs.offcanvas') - var option = data ? 'toggle' : $this.data() - - e.stopPropagation() - - if (data) data.toggle() - else $canvas.offcanvas(option) - }) - -}(window.jQuery); - -/* ============================================================ - * Bootstrap: rowlink.js v3.1.3 - * http://jasny.github.io/bootstrap/javascript/#rowlink - * ============================================================ - * Copyright 2012-2014 Arnold Daniels - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================ */ - -+function ($) { "use strict"; - - var Rowlink = function (element, options) { - this.$element = $(element) - this.options = $.extend({}, Rowlink.DEFAULTS, options) - - this.$element.on('click.bs.rowlink', 'td:not(.rowlink-skip)', $.proxy(this.click, this)) - } - - Rowlink.DEFAULTS = { - target: "a" - } - - Rowlink.prototype.click = function(e) { - var target = $(e.currentTarget).closest('tr').find(this.options.target)[0] - if ($(e.target)[0] === target) return - - e.preventDefault(); - - if (target.click) { - target.click() - } else if (document.createEvent) { - var evt = document.createEvent("MouseEvents"); - evt.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); - target.dispatchEvent(evt); - } - } - - - // ROWLINK PLUGIN DEFINITION - // =========================== - - var old = $.fn.rowlink - - $.fn.rowlink = function (options) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.rowlink') - if (!data) $this.data('bs.rowlink', (data = new Rowlink(this, options))) - }) - } - - $.fn.rowlink.Constructor = Rowlink - - - // ROWLINK NO CONFLICT - // ==================== - - $.fn.rowlink.noConflict = function () { - $.fn.rowlink = old - return this - } - - - // ROWLINK DATA-API - // ================== - - $(document).on('click.bs.rowlink.data-api', '[data-link="row"]', function (e) { - if ($(e.target).closest('.rowlink-skip').length !== 0) return - - var $this = $(this) - if ($this.data('bs.rowlink')) return - $this.rowlink($this.data()) - $(e.target).trigger('click.bs.rowlink') - }) - -}(window.jQuery); - -/* =========================================================== - * Bootstrap: inputmask.js v3.1.0 - * http://jasny.github.io/bootstrap/javascript/#inputmask - * - * Based on Masked Input plugin by Josh Bush (digitalbush.com) - * =========================================================== - * Copyright 2012-2014 Arnold Daniels - * - * Licensed under the Apache License, Version 2.0 (the "License") - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ========================================================== */ - -+function ($) { "use strict"; - - var isIphone = (window.orientation !== undefined) - var isAndroid = navigator.userAgent.toLowerCase().indexOf("android") > -1 - var isIE = window.navigator.appName == 'Microsoft Internet Explorer' - - // INPUTMASK PUBLIC CLASS DEFINITION - // ================================= - - var Inputmask = function (element, options) { - if (isAndroid) return // No support because caret positioning doesn't work on Android - - this.$element = $(element) - this.options = $.extend({}, Inputmask.DEFAULTS, options) - this.mask = String(this.options.mask) - - this.init() - this.listen() - - this.checkVal() //Perform initial check for existing values - } - - Inputmask.DEFAULTS = { - mask: "", - placeholder: "_", - definitions: { - '9': "[0-9]", - 'a': "[A-Za-z]", - 'w': "[A-Za-z0-9]", - '*': "." - } - } - - Inputmask.prototype.init = function() { - var defs = this.options.definitions - var len = this.mask.length - - this.tests = [] - this.partialPosition = this.mask.length - this.firstNonMaskPos = null - - $.each(this.mask.split(""), $.proxy(function(i, c) { - if (c == '?') { - len-- - this.partialPosition = i - } else if (defs[c]) { - this.tests.push(new RegExp(defs[c])) - if (this.firstNonMaskPos === null) - this.firstNonMaskPos = this.tests.length - 1 - } else { - this.tests.push(null) - } - }, this)) - - this.buffer = $.map(this.mask.split(""), $.proxy(function(c, i) { - if (c != '?') return defs[c] ? this.options.placeholder : c - }, this)) - - this.focusText = this.$element.val() - - this.$element.data("rawMaskFn", $.proxy(function() { - return $.map(this.buffer, function(c, i) { - return this.tests[i] && c != this.options.placeholder ? c : null - }).join('') - }, this)) - } - - Inputmask.prototype.listen = function() { - if (this.$element.attr("readonly")) return - - var pasteEventName = (isIE ? 'paste' : 'input') + ".mask" - - this.$element - .on("unmask.bs.inputmask", $.proxy(this.unmask, this)) - - .on("focus.bs.inputmask", $.proxy(this.focusEvent, this)) - .on("blur.bs.inputmask", $.proxy(this.blurEvent, this)) - - .on("keydown.bs.inputmask", $.proxy(this.keydownEvent, this)) - .on("keypress.bs.inputmask", $.proxy(this.keypressEvent, this)) - - .on(pasteEventName, $.proxy(this.pasteEvent, this)) - } - - //Helper Function for Caret positioning - Inputmask.prototype.caret = function(begin, end) { - if (this.$element.length === 0) return - if (typeof begin == 'number') { - end = (typeof end == 'number') ? end : begin - return this.$element.each(function() { - if (this.setSelectionRange) { - this.setSelectionRange(begin, end) - } else if (this.createTextRange) { - var range = this.createTextRange() - range.collapse(true) - range.moveEnd('character', end) - range.moveStart('character', begin) - range.select() - } - }) - } else { - if (this.$element[0].setSelectionRange) { - begin = this.$element[0].selectionStart - end = this.$element[0].selectionEnd - } else if (document.selection && document.selection.createRange) { - var range = document.selection.createRange() - begin = 0 - range.duplicate().moveStart('character', -100000) - end = begin + range.text.length - } - return { - begin: begin, - end: end - } - } - } - - Inputmask.prototype.seekNext = function(pos) { - var len = this.mask.length - while (++pos <= len && !this.tests[pos]); - - return pos - } - - Inputmask.prototype.seekPrev = function(pos) { - while (--pos >= 0 && !this.tests[pos]); - - return pos - } - - Inputmask.prototype.shiftL = function(begin,end) { - var len = this.mask.length - - if (begin < 0) return - - for (var i = begin, j = this.seekNext(end); i < len; i++) { - if (this.tests[i]) { - if (j < len && this.tests[i].test(this.buffer[j])) { - this.buffer[i] = this.buffer[j] - this.buffer[j] = this.options.placeholder - } else - break - j = this.seekNext(j) - } - } - this.writeBuffer() - this.caret(Math.max(this.firstNonMaskPos, begin)) - } - - Inputmask.prototype.shiftR = function(pos) { - var len = this.mask.length - - for (var i = pos, c = this.options.placeholder; i < len; i++) { - if (this.tests[i]) { - var j = this.seekNext(i) - var t = this.buffer[i] - this.buffer[i] = c - if (j < len && this.tests[j].test(t)) - c = t - else - break - } - } - }, - - Inputmask.prototype.unmask = function() { - this.$element - .unbind(".mask") - .removeData("inputmask") - } - - Inputmask.prototype.focusEvent = function() { - this.focusText = this.$element.val() - var len = this.mask.length - var pos = this.checkVal() - this.writeBuffer() - - var that = this - var moveCaret = function() { - if (pos == len) - that.caret(0, pos) - else - that.caret(pos) - } - - moveCaret() - setTimeout(moveCaret, 50) - } - - Inputmask.prototype.blurEvent = function() { - this.checkVal() - if (this.$element.val() !== this.focusText) - this.$element.trigger('change') - } - - Inputmask.prototype.keydownEvent = function(e) { - var k = e.which - - //backspace, delete, and escape get special treatment - if (k == 8 || k == 46 || (isIphone && k == 127)) { - var pos = this.caret(), - begin = pos.begin, - end = pos.end - - if (end - begin === 0) { - begin = k != 46 ? this.seekPrev(begin) : (end = this.seekNext(begin - 1)) - end = k == 46 ? this.seekNext(end) : end - } - this.clearBuffer(begin, end) - this.shiftL(begin, end - 1) - - return false - } else if (k == 27) {//escape - this.$element.val(this.focusText) - this.caret(0, this.checkVal()) - return false - } - } - - Inputmask.prototype.keypressEvent = function(e) { - var len = this.mask.length - - var k = e.which, - pos = this.caret() - - if (e.ctrlKey || e.altKey || e.metaKey || k < 32) {//Ignore - return true - } else if (k) { - if (pos.end - pos.begin !== 0) { - this.clearBuffer(pos.begin, pos.end) - this.shiftL(pos.begin, pos.end - 1) - } - - var p = this.seekNext(pos.begin - 1) - if (p < len) { - var c = String.fromCharCode(k) - if (this.tests[p].test(c)) { - this.shiftR(p) - this.buffer[p] = c - this.writeBuffer() - var next = this.seekNext(p) - this.caret(next) - } - } - return false - } - } - - Inputmask.prototype.pasteEvent = function() { - var that = this - - setTimeout(function() { - that.caret(that.checkVal(true)) - }, 0) - } - - Inputmask.prototype.clearBuffer = function(start, end) { - var len = this.mask.length - - for (var i = start; i < end && i < len; i++) { - if (this.tests[i]) - this.buffer[i] = this.options.placeholder - } - } - - Inputmask.prototype.writeBuffer = function() { - return this.$element.val(this.buffer.join('')).val() - } - - Inputmask.prototype.checkVal = function(allow) { - var len = this.mask.length - //try to place characters where they belong - var test = this.$element.val() - var lastMatch = -1 - - for (var i = 0, pos = 0; i < len; i++) { - if (this.tests[i]) { - this.buffer[i] = this.options.placeholder - while (pos++ < test.length) { - var c = test.charAt(pos - 1) - if (this.tests[i].test(c)) { - this.buffer[i] = c - lastMatch = i - break - } - } - if (pos > test.length) - break - } else if (this.buffer[i] == test.charAt(pos) && i != this.partialPosition) { - pos++ - lastMatch = i - } - } - if (!allow && lastMatch + 1 < this.partialPosition) { - this.$element.val("") - this.clearBuffer(0, len) - } else if (allow || lastMatch + 1 >= this.partialPosition) { - this.writeBuffer() - if (!allow) this.$element.val(this.$element.val().substring(0, lastMatch + 1)) - } - return (this.partialPosition ? i : this.firstNonMaskPos) - } - - - // INPUTMASK PLUGIN DEFINITION - // =========================== - - var old = $.fn.inputmask - - $.fn.inputmask = function (options) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.inputmask') - - if (!data) $this.data('bs.inputmask', (data = new Inputmask(this, options))) - }) - } - - $.fn.inputmask.Constructor = Inputmask - - - // INPUTMASK NO CONFLICT - // ==================== - - $.fn.inputmask.noConflict = function () { - $.fn.inputmask = old - return this - } - - - // INPUTMASK DATA-API - // ================== - - $(document).on('focus.bs.inputmask.data-api', '[data-mask]', function (e) { - var $this = $(this) - if ($this.data('bs.inputmask')) return - $this.inputmask($this.data()) - }) - -}(window.jQuery); - -/* =========================================================== - * Bootstrap: fileinput.js v3.1.3 - * http://jasny.github.com/bootstrap/javascript/#fileinput - * =========================================================== - * Copyright 2012-2014 Arnold Daniels - * - * Licensed under the Apache License, Version 2.0 (the "License") - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ========================================================== */ - -+function ($) { "use strict"; - - var isIE = window.navigator.appName == 'Microsoft Internet Explorer' - - // FILEUPLOAD PUBLIC CLASS DEFINITION - // ================================= - - var Fileinput = function (element, options) { - this.$element = $(element) - - this.$input = this.$element.find(':file') - if (this.$input.length === 0) return - - this.name = this.$input.attr('name') || options.name - - this.$hidden = this.$element.find('input[type=hidden][name="' + this.name + '"]') - if (this.$hidden.length === 0) { - this.$hidden = $('<input type="hidden">').insertBefore(this.$input) - } - - this.$preview = this.$element.find('.fileinput-preview') - var height = this.$preview.css('height') - if (this.$preview.css('display') !== 'inline' && height !== '0px' && height !== 'none') { - this.$preview.css('line-height', height) - } - - this.original = { - exists: this.$element.hasClass('fileinput-exists'), - preview: this.$preview.html(), - hiddenVal: this.$hidden.val() - } - - this.listen() - } - - Fileinput.prototype.listen = function() { - this.$input.on('change.bs.fileinput', $.proxy(this.change, this)) - $(this.$input[0].form).on('reset.bs.fileinput', $.proxy(this.reset, this)) - - this.$element.find('[data-trigger="fileinput"]').on('click.bs.fileinput', $.proxy(this.trigger, this)) - this.$element.find('[data-dismiss="fileinput"]').on('click.bs.fileinput', $.proxy(this.clear, this)) - }, - - Fileinput.prototype.change = function(e) { - var files = e.target.files === undefined ? (e.target && e.target.value ? [{ name: e.target.value.replace(/^.+\\/, '')}] : []) : e.target.files - - e.stopPropagation() - - if (files.length === 0) { - this.clear() - return - } - - this.$hidden.val('') - this.$hidden.attr('name', '') - this.$input.attr('name', this.name) - - var file = files[0] - - if (this.$preview.length > 0 && (typeof file.type !== "undefined" ? file.type.match(/^image\/(gif|png|jpeg)$/) : file.name.match(/\.(gif|png|jpe?g)$/i)) && typeof FileReader !== "undefined") { - var reader = new FileReader() - var preview = this.$preview - var element = this.$element - - reader.onload = function(re) { - var $img = $('<img>') - $img[0].src = re.target.result - files[0].result = re.target.result - - element.find('.fileinput-filename').text(file.name) - - // if parent has max-height, using `(max-)height: 100%` on child doesn't take padding and border into account - if (preview.css('max-height') != 'none') $img.css('max-height', parseInt(preview.css('max-height'), 10) - parseInt(preview.css('padding-top'), 10) - parseInt(preview.css('padding-bottom'), 10) - parseInt(preview.css('border-top'), 10) - parseInt(preview.css('border-bottom'), 10)) - - preview.html($img) - element.addClass('fileinput-exists').removeClass('fileinput-new') - - element.trigger('change.bs.fileinput', files) - } - - reader.readAsDataURL(file) - } else { - this.$element.find('.fileinput-filename').text(file.name) - this.$preview.text(file.name) - - this.$element.addClass('fileinput-exists').removeClass('fileinput-new') - - this.$element.trigger('change.bs.fileinput') - } - }, - - Fileinput.prototype.clear = function(e) { - if (e) e.preventDefault() - - this.$hidden.val('') - this.$hidden.attr('name', this.name) - this.$input.attr('name', '') - - //ie8+ doesn't support changing the value of input with type=file so clone instead - if (isIE) { - var inputClone = this.$input.clone(true); - this.$input.after(inputClone); - this.$input.remove(); - this.$input = inputClone; - } else { - this.$input.val('') - } - - this.$preview.html('') - this.$element.find('.fileinput-filename').text('') - this.$element.addClass('fileinput-new').removeClass('fileinput-exists') - - if (e !== undefined) { - this.$input.trigger('change') - this.$element.trigger('clear.bs.fileinput') - } - }, - - Fileinput.prototype.reset = function() { - this.clear() - - this.$hidden.val(this.original.hiddenVal) - this.$preview.html(this.original.preview) - this.$element.find('.fileinput-filename').text('') - - if (this.original.exists) this.$element.addClass('fileinput-exists').removeClass('fileinput-new') - else this.$element.addClass('fileinput-new').removeClass('fileinput-exists') - - this.$element.trigger('reset.bs.fileinput') - }, - - Fileinput.prototype.trigger = function(e) { - this.$input.trigger('click') - e.preventDefault() - } - - - // FILEUPLOAD PLUGIN DEFINITION - // =========================== - - var old = $.fn.fileinput - - $.fn.fileinput = function (options) { - return this.each(function () { - var $this = $(this), - data = $this.data('bs.fileinput') - if (!data) $this.data('bs.fileinput', (data = new Fileinput(this, options))) - if (typeof options == 'string') data[options]() - }) - } - - $.fn.fileinput.Constructor = Fileinput - - - // FILEINPUT NO CONFLICT - // ==================== - - $.fn.fileinput.noConflict = function () { - $.fn.fileinput = old - return this - } - - - // FILEUPLOAD DATA-API - // ================== - - $(document).on('click.fileinput.data-api', '[data-provides="fileinput"]', function (e) { - var $this = $(this) - if ($this.data('bs.fileinput')) return - $this.fileinput($this.data()) - - var $target = $(e.target).closest('[data-dismiss="fileinput"],[data-trigger="fileinput"]'); - if ($target.length > 0) { - e.preventDefault() - $target.trigger('click.bs.fileinput') - } - }) - -}(window.jQuery); diff --git a/src/main/resources/META-INF/resources/designer/lib/jasny-bootstrap.min.js b/src/main/resources/META-INF/resources/designer/lib/jasny-bootstrap.min.js deleted file mode 100644 index 6eb175625..000000000 --- a/src/main/resources/META-INF/resources/designer/lib/jasny-bootstrap.min.js +++ /dev/null @@ -1,6 +0,0 @@ -/*! - * Jasny Bootstrap v3.1.3 (http://jasny.github.io/bootstrap) - * Copyright 2012-2014 Arnold Daniels - * Licensed under Apache-2.0 (https://github.com/jasny/bootstrap/blob/master/LICENSE) - */ -if("undefined"==typeof jQuery)throw new Error("Jasny Bootstrap's JavaScript requires jQuery");+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}void 0===a.support.transition&&(a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one(a.support.transition.end,function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b()}))}(window.jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.state=null,this.placement=null,this.options.recalc&&(this.calcClone(),a(window).on("resize",a.proxy(this.recalc,this))),this.options.autohide&&a(document).on("click",a.proxy(this.autohide,this)),this.options.toggle&&this.toggle(),this.options.disablescrolling&&(this.options.disableScrolling=this.options.disablescrolling,delete this.options.disablescrolling)};b.DEFAULTS={toggle:!0,placement:"auto",autohide:!0,recalc:!0,disableScrolling:!0},b.prototype.offset=function(){switch(this.placement){case"left":case"right":return this.$element.outerWidth();case"top":case"bottom":return this.$element.outerHeight()}},b.prototype.calcPlacement=function(){function b(a,b){if("auto"===e.css(b))return a;if("auto"===e.css(a))return b;var c=parseInt(e.css(a),10),d=parseInt(e.css(b),10);return c>d?b:a}if("auto"!==this.options.placement)return void(this.placement=this.options.placement);this.$element.hasClass("in")||this.$element.css("visiblity","hidden !important").addClass("in");var c=a(window).width()/this.$element.width(),d=a(window).height()/this.$element.height(),e=this.$element;this.placement=c>=d?b("left","right"):b("top","bottom"),"hidden !important"===this.$element.css("visibility")&&this.$element.removeClass("in").css("visiblity","")},b.prototype.opposite=function(a){switch(a){case"top":return"bottom";case"left":return"right";case"bottom":return"top";case"right":return"left"}},b.prototype.getCanvasElements=function(){var b=this.options.canvas?a(this.options.canvas):this.$element,c=b.find("*").filter(function(){return"fixed"===a(this).css("position")}).not(this.options.exclude);return b.add(c)},b.prototype.slide=function(b,c,d){if(!a.support.transition){var e={};return e[this.placement]="+="+c,b.animate(e,350,d)}var f=this.placement,g=this.opposite(f);b.each(function(){"auto"!==a(this).css(f)&&a(this).css(f,(parseInt(a(this).css(f),10)||0)+c),"auto"!==a(this).css(g)&&a(this).css(g,(parseInt(a(this).css(g),10)||0)-c)}),this.$element.one(a.support.transition.end,d).emulateTransitionEnd(350)},b.prototype.disableScrolling=function(){var b=a("body").width(),c="padding-"+this.opposite(this.placement);if(void 0===a("body").data("offcanvas-style")&&a("body").data("offcanvas-style",a("body").attr("style")||""),a("body").css("overflow","hidden"),a("body").width()>b){var d=parseInt(a("body").css(c),10)+a("body").width()-b;setTimeout(function(){a("body").css(c,d)},1)}},b.prototype.show=function(){if(!this.state){var b=a.Event("show.bs.offcanvas");if(this.$element.trigger(b),!b.isDefaultPrevented()){this.state="slide-in",this.calcPlacement();var c=this.getCanvasElements(),d=this.placement,e=this.opposite(d),f=this.offset();-1!==c.index(this.$element)&&(a(this.$element).data("offcanvas-style",a(this.$element).attr("style")||""),this.$element.css(d,-1*f),this.$element.css(d)),c.addClass("canvas-sliding").each(function(){void 0===a(this).data("offcanvas-style")&&a(this).data("offcanvas-style",a(this).attr("style")||""),"static"===a(this).css("position")&&a(this).css("position","relative"),"auto"!==a(this).css(d)&&"0px"!==a(this).css(d)||"auto"!==a(this).css(e)&&"0px"!==a(this).css(e)||a(this).css(d,0)}),this.options.disableScrolling&&this.disableScrolling();var g=function(){"slide-in"==this.state&&(this.state="slid",c.removeClass("canvas-sliding").addClass("canvas-slid"),this.$element.trigger("shown.bs.offcanvas"))};setTimeout(a.proxy(function(){this.$element.addClass("in"),this.slide(c,f,a.proxy(g,this))},this),1)}}},b.prototype.hide=function(){if("slid"===this.state){var b=a.Event("hide.bs.offcanvas");if(this.$element.trigger(b),!b.isDefaultPrevented()){this.state="slide-out";var c=a(".canvas-slid"),d=(this.placement,-1*this.offset()),e=function(){"slide-out"==this.state&&(this.state=null,this.placement=null,this.$element.removeClass("in"),c.removeClass("canvas-sliding"),c.add(this.$element).add("body").each(function(){a(this).attr("style",a(this).data("offcanvas-style")).removeData("offcanvas-style")}),this.$element.trigger("hidden.bs.offcanvas"))};c.removeClass("canvas-slid").addClass("canvas-sliding"),setTimeout(a.proxy(function(){this.slide(c,d,a.proxy(e,this))},this),1)}}},b.prototype.toggle=function(){"slide-in"!==this.state&&"slide-out"!==this.state&&this["slid"===this.state?"hide":"show"]()},b.prototype.calcClone=function(){this.$calcClone=this.$element.clone().html("").addClass("offcanvas-clone").removeClass("in").appendTo(a("body"))},b.prototype.recalc=function(){if("none"!==this.$calcClone.css("display")&&("slid"===this.state||"slide-in"===this.state)){this.state=null,this.placement=null;var b=this.getCanvasElements();this.$element.removeClass("in"),b.removeClass("canvas-slid"),b.add(this.$element).add("body").each(function(){a(this).attr("style",a(this).data("offcanvas-style")).removeData("offcanvas-style")})}},b.prototype.autohide=function(b){0===a(b.target).closest(this.$element).length&&this.hide()};var c=a.fn.offcanvas;a.fn.offcanvas=function(c){return this.each(function(){var d=a(this),e=d.data("bs.offcanvas"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c);e||d.data("bs.offcanvas",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.offcanvas.Constructor=b,a.fn.offcanvas.noConflict=function(){return a.fn.offcanvas=c,this},a(document).on("click.bs.offcanvas.data-api","[data-toggle=offcanvas]",function(b){var c,d=a(this),e=d.attr("data-target")||b.preventDefault()||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,""),f=a(e),g=f.data("bs.offcanvas"),h=g?"toggle":d.data();b.stopPropagation(),g?g.toggle():f.offcanvas(h)})}(window.jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.$element.on("click.bs.rowlink","td:not(.rowlink-skip)",a.proxy(this.click,this))};b.DEFAULTS={target:"a"},b.prototype.click=function(b){var c=a(b.currentTarget).closest("tr").find(this.options.target)[0];if(a(b.target)[0]!==c)if(b.preventDefault(),c.click)c.click();else if(document.createEvent){var d=document.createEvent("MouseEvents");d.initMouseEvent("click",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),c.dispatchEvent(d)}};var c=a.fn.rowlink;a.fn.rowlink=function(c){return this.each(function(){var d=a(this),e=d.data("bs.rowlink");e||d.data("bs.rowlink",e=new b(this,c))})},a.fn.rowlink.Constructor=b,a.fn.rowlink.noConflict=function(){return a.fn.rowlink=c,this},a(document).on("click.bs.rowlink.data-api",'[data-link="row"]',function(b){if(0===a(b.target).closest(".rowlink-skip").length){var c=a(this);c.data("bs.rowlink")||(c.rowlink(c.data()),a(b.target).trigger("click.bs.rowlink"))}})}(window.jQuery),+function(a){"use strict";var b=void 0!==window.orientation,c=navigator.userAgent.toLowerCase().indexOf("android")>-1,d="Microsoft Internet Explorer"==window.navigator.appName,e=function(b,d){c||(this.$element=a(b),this.options=a.extend({},e.DEFAULTS,d),this.mask=String(this.options.mask),this.init(),this.listen(),this.checkVal())};e.DEFAULTS={mask:"",placeholder:"_",definitions:{9:"[0-9]",a:"[A-Za-z]",w:"[A-Za-z0-9]","*":"."}},e.prototype.init=function(){var b=this.options.definitions,c=this.mask.length;this.tests=[],this.partialPosition=this.mask.length,this.firstNonMaskPos=null,a.each(this.mask.split(""),a.proxy(function(a,d){"?"==d?(c--,this.partialPosition=a):b[d]?(this.tests.push(new RegExp(b[d])),null===this.firstNonMaskPos&&(this.firstNonMaskPos=this.tests.length-1)):this.tests.push(null)},this)),this.buffer=a.map(this.mask.split(""),a.proxy(function(a){return"?"!=a?b[a]?this.options.placeholder:a:void 0},this)),this.focusText=this.$element.val(),this.$element.data("rawMaskFn",a.proxy(function(){return a.map(this.buffer,function(a,b){return this.tests[b]&&a!=this.options.placeholder?a:null}).join("")},this))},e.prototype.listen=function(){if(!this.$element.attr("readonly")){var b=(d?"paste":"input")+".mask";this.$element.on("unmask.bs.inputmask",a.proxy(this.unmask,this)).on("focus.bs.inputmask",a.proxy(this.focusEvent,this)).on("blur.bs.inputmask",a.proxy(this.blurEvent,this)).on("keydown.bs.inputmask",a.proxy(this.keydownEvent,this)).on("keypress.bs.inputmask",a.proxy(this.keypressEvent,this)).on(b,a.proxy(this.pasteEvent,this))}},e.prototype.caret=function(a,b){if(0!==this.$element.length){if("number"==typeof a)return b="number"==typeof b?b:a,this.$element.each(function(){if(this.setSelectionRange)this.setSelectionRange(a,b);else if(this.createTextRange){var c=this.createTextRange();c.collapse(!0),c.moveEnd("character",b),c.moveStart("character",a),c.select()}});if(this.$element[0].setSelectionRange)a=this.$element[0].selectionStart,b=this.$element[0].selectionEnd;else if(document.selection&&document.selection.createRange){var c=document.selection.createRange();a=0-c.duplicate().moveStart("character",-1e5),b=a+c.text.length}return{begin:a,end:b}}},e.prototype.seekNext=function(a){for(var b=this.mask.length;++a<=b&&!this.tests[a];);return a},e.prototype.seekPrev=function(a){for(;--a>=0&&!this.tests[a];);return a},e.prototype.shiftL=function(a,b){var c=this.mask.length;if(!(0>a)){for(var d=a,e=this.seekNext(b);c>d;d++)if(this.tests[d]){if(!(c>e&&this.tests[d].test(this.buffer[e])))break;this.buffer[d]=this.buffer[e],this.buffer[e]=this.options.placeholder,e=this.seekNext(e)}this.writeBuffer(),this.caret(Math.max(this.firstNonMaskPos,a))}},e.prototype.shiftR=function(a){for(var b=this.mask.length,c=a,d=this.options.placeholder;b>c;c++)if(this.tests[c]){var e=this.seekNext(c),f=this.buffer[c];if(this.buffer[c]=d,!(b>e&&this.tests[e].test(f)))break;d=f}},e.prototype.unmask=function(){this.$element.unbind(".mask").removeData("inputmask")},e.prototype.focusEvent=function(){this.focusText=this.$element.val();var a=this.mask.length,b=this.checkVal();this.writeBuffer();var c=this,d=function(){b==a?c.caret(0,b):c.caret(b)};d(),setTimeout(d,50)},e.prototype.blurEvent=function(){this.checkVal(),this.$element.val()!==this.focusText&&this.$element.trigger("change")},e.prototype.keydownEvent=function(a){var c=a.which;if(8==c||46==c||b&&127==c){var d=this.caret(),e=d.begin,f=d.end;return f-e===0&&(e=46!=c?this.seekPrev(e):f=this.seekNext(e-1),f=46==c?this.seekNext(f):f),this.clearBuffer(e,f),this.shiftL(e,f-1),!1}return 27==c?(this.$element.val(this.focusText),this.caret(0,this.checkVal()),!1):void 0},e.prototype.keypressEvent=function(a){var b=this.mask.length,c=a.which,d=this.caret();if(a.ctrlKey||a.altKey||a.metaKey||32>c)return!0;if(c){d.end-d.begin!==0&&(this.clearBuffer(d.begin,d.end),this.shiftL(d.begin,d.end-1));var e=this.seekNext(d.begin-1);if(b>e){var f=String.fromCharCode(c);if(this.tests[e].test(f)){this.shiftR(e),this.buffer[e]=f,this.writeBuffer();var g=this.seekNext(e);this.caret(g)}}return!1}},e.prototype.pasteEvent=function(){var a=this;setTimeout(function(){a.caret(a.checkVal(!0))},0)},e.prototype.clearBuffer=function(a,b){for(var c=this.mask.length,d=a;b>d&&c>d;d++)this.tests[d]&&(this.buffer[d]=this.options.placeholder)},e.prototype.writeBuffer=function(){return this.$element.val(this.buffer.join("")).val()},e.prototype.checkVal=function(a){for(var b=this.mask.length,c=this.$element.val(),d=-1,e=0,f=0;b>e;e++)if(this.tests[e]){for(this.buffer[e]=this.options.placeholder;f++<c.length;){var g=c.charAt(f-1);if(this.tests[e].test(g)){this.buffer[e]=g,d=e;break}}if(f>c.length)break}else this.buffer[e]==c.charAt(f)&&e!=this.partialPosition&&(f++,d=e);return!a&&d+1<this.partialPosition?(this.$element.val(""),this.clearBuffer(0,b)):(a||d+1>=this.partialPosition)&&(this.writeBuffer(),a||this.$element.val(this.$element.val().substring(0,d+1))),this.partialPosition?e:this.firstNonMaskPos};var f=a.fn.inputmask;a.fn.inputmask=function(b){return this.each(function(){var c=a(this),d=c.data("bs.inputmask");d||c.data("bs.inputmask",d=new e(this,b))})},a.fn.inputmask.Constructor=e,a.fn.inputmask.noConflict=function(){return a.fn.inputmask=f,this},a(document).on("focus.bs.inputmask.data-api","[data-mask]",function(){var b=a(this);b.data("bs.inputmask")||b.inputmask(b.data())})}(window.jQuery),+function(a){"use strict";var b="Microsoft Internet Explorer"==window.navigator.appName,c=function(b,c){if(this.$element=a(b),this.$input=this.$element.find(":file"),0!==this.$input.length){this.name=this.$input.attr("name")||c.name,this.$hidden=this.$element.find('input[type=hidden][name="'+this.name+'"]'),0===this.$hidden.length&&(this.$hidden=a('<input type="hidden">').insertBefore(this.$input)),this.$preview=this.$element.find(".fileinput-preview");var d=this.$preview.css("height");"inline"!==this.$preview.css("display")&&"0px"!==d&&"none"!==d&&this.$preview.css("line-height",d),this.original={exists:this.$element.hasClass("fileinput-exists"),preview:this.$preview.html(),hiddenVal:this.$hidden.val()},this.listen()}};c.prototype.listen=function(){this.$input.on("change.bs.fileinput",a.proxy(this.change,this)),a(this.$input[0].form).on("reset.bs.fileinput",a.proxy(this.reset,this)),this.$element.find('[data-trigger="fileinput"]').on("click.bs.fileinput",a.proxy(this.trigger,this)),this.$element.find('[data-dismiss="fileinput"]').on("click.bs.fileinput",a.proxy(this.clear,this))},c.prototype.change=function(b){var c=void 0===b.target.files?b.target&&b.target.value?[{name:b.target.value.replace(/^.+\\/,"")}]:[]:b.target.files;if(b.stopPropagation(),0===c.length)return void this.clear();this.$hidden.val(""),this.$hidden.attr("name",""),this.$input.attr("name",this.name);var d=c[0];if(this.$preview.length>0&&("undefined"!=typeof d.type?d.type.match(/^image\/(gif|png|jpeg)$/):d.name.match(/\.(gif|png|jpe?g)$/i))&&"undefined"!=typeof FileReader){var e=new FileReader,f=this.$preview,g=this.$element;e.onload=function(b){var e=a("<img>");e[0].src=b.target.result,c[0].result=b.target.result,g.find(".fileinput-filename").text(d.name),"none"!=f.css("max-height")&&e.css("max-height",parseInt(f.css("max-height"),10)-parseInt(f.css("padding-top"),10)-parseInt(f.css("padding-bottom"),10)-parseInt(f.css("border-top"),10)-parseInt(f.css("border-bottom"),10)),f.html(e),g.addClass("fileinput-exists").removeClass("fileinput-new"),g.trigger("change.bs.fileinput",c)},e.readAsDataURL(d)}else this.$element.find(".fileinput-filename").text(d.name),this.$preview.text(d.name),this.$element.addClass("fileinput-exists").removeClass("fileinput-new"),this.$element.trigger("change.bs.fileinput")},c.prototype.clear=function(a){if(a&&a.preventDefault(),this.$hidden.val(""),this.$hidden.attr("name",this.name),this.$input.attr("name",""),b){var c=this.$input.clone(!0);this.$input.after(c),this.$input.remove(),this.$input=c}else this.$input.val("");this.$preview.html(""),this.$element.find(".fileinput-filename").text(""),this.$element.addClass("fileinput-new").removeClass("fileinput-exists"),void 0!==a&&(this.$input.trigger("change"),this.$element.trigger("clear.bs.fileinput"))},c.prototype.reset=function(){this.clear(),this.$hidden.val(this.original.hiddenVal),this.$preview.html(this.original.preview),this.$element.find(".fileinput-filename").text(""),this.original.exists?this.$element.addClass("fileinput-exists").removeClass("fileinput-new"):this.$element.addClass("fileinput-new").removeClass("fileinput-exists"),this.$element.trigger("reset.bs.fileinput")},c.prototype.trigger=function(a){this.$input.trigger("click"),a.preventDefault()};var d=a.fn.fileinput;a.fn.fileinput=function(b){return this.each(function(){var d=a(this),e=d.data("bs.fileinput");e||d.data("bs.fileinput",e=new c(this,b)),"string"==typeof b&&e[b]()})},a.fn.fileinput.Constructor=c,a.fn.fileinput.noConflict=function(){return a.fn.fileinput=d,this},a(document).on("click.fileinput.data-api",'[data-provides="fileinput"]',function(b){var c=a(this);if(!c.data("bs.fileinput")){c.fileinput(c.data());var d=a(b.target).closest('[data-dismiss="fileinput"],[data-trigger="fileinput"]');d.length>0&&(b.preventDefault(),d.trigger("click.bs.fileinput"))}})}(window.jQuery);
\ No newline at end of file diff --git a/src/main/resources/META-INF/resources/designer/scripts/CldsModelService.js b/src/main/resources/META-INF/resources/designer/scripts/CldsModelService.js index f6092b8f2..0887550e1 100644 --- a/src/main/resources/META-INF/resources/designer/scripts/CldsModelService.js +++ b/src/main/resources/META-INF/resources/designer/scripts/CldsModelService.js @@ -214,6 +214,7 @@ app.service('cldsModelService', ['alertService', '$http', '$q', function(alertSe }) .error(function(data) { + def.resolve(data); alertService.alertMessage("Action Failure:" + uiAction, 2); //def alertService.alertMessage("Action Successful:"+uiAction,1); def.reject(svcAction + " not successful"); |