├── .classpath ├── .project ├── .settings ├── .jsdtscope ├── org.eclipse.core.resources.prefs ├── org.eclipse.jdt.core.prefs ├── org.eclipse.m2e.core.prefs ├── org.eclipse.wst.common.component ├── org.eclipse.wst.common.project.facet.core.xml ├── org.eclipse.wst.jsdt.ui.superType.container ├── org.eclipse.wst.jsdt.ui.superType.name └── org.eclipse.wst.validation.prefs ├── READ.md ├── README.md ├── build.xml ├── health_guide.sql ├── hsql.lck ├── hsql.log ├── hsql.properties ├── hsql.script ├── pom.xml ├── src ├── main │ ├── java │ │ └── org │ │ │ └── aacish │ │ │ └── disease_prediction │ │ │ ├── BO │ │ │ ├── AppRoot.java │ │ │ ├── DiseaseComparator.java │ │ │ ├── KeywordDictionary.java │ │ │ ├── Predict.java │ │ │ ├── PredictService.java │ │ │ ├── SymptomsDictionary.java │ │ │ ├── Trainer.java │ │ │ └── TrainerService.java │ │ │ ├── DAO │ │ │ ├── AppDAO.java │ │ │ ├── AppDAOService.java │ │ │ ├── DiseaseMapper.java │ │ │ ├── VocabDAO.java │ │ │ └── VocabDAOService.java │ │ │ ├── classifier │ │ │ ├── BernoulliNaiveBayesClassifier.java │ │ │ ├── ClassificationAlgorithm.java │ │ │ ├── InputParameter.java │ │ │ └── PrepareInputParameter.java │ │ │ ├── controller │ │ │ ├── PredictionController.java │ │ │ ├── SymptomsController.java │ │ │ ├── TrainerController.java │ │ │ └── UserController.java │ │ │ ├── model │ │ │ ├── AdminBean.java │ │ │ ├── Authenticator.java │ │ │ ├── Disease.java │ │ │ └── TrainingDocs.java │ │ │ └── nlp │ │ │ ├── EnglishStemmer.java │ │ │ ├── InputTextProcessor.java │ │ │ └── TextProcessor.java │ ├── resources │ │ ├── applicationContext.xml │ │ ├── testContext.xml │ │ └── textResources │ │ │ ├── condition.txt │ │ │ ├── level.txt │ │ │ ├── organs.txt │ │ │ └── symptoms.txt │ └── webapp │ │ ├── WEB-INF │ │ ├── dispatcher-servlet.xml │ │ ├── vocabulary.txt │ │ └── web.xml │ │ ├── add_disease.jsp │ │ ├── add_hospital.jsp │ │ ├── faq.jsp │ │ ├── index.jsp │ │ ├── logout.jsp │ │ ├── resources │ │ ├── bootstrap │ │ │ ├── css │ │ │ │ ├── bootstrap-theme.css │ │ │ │ ├── bootstrap-theme.css.map │ │ │ │ ├── bootstrap-theme.min.css │ │ │ │ ├── bootstrap.css │ │ │ │ ├── bootstrap.css.map │ │ │ │ ├── bootstrap.min.css │ │ │ │ ├── my_design.css │ │ │ │ └── styles.css │ │ │ ├── fonts │ │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ │ ├── glyphicons-halflings-regular.woff │ │ │ │ └── glyphicons-halflings-regular.woff2 │ │ │ └── js │ │ │ │ ├── bootstrap.js │ │ │ │ ├── bootstrap.min.js │ │ │ │ ├── facebook.js │ │ │ │ ├── jquery.min.js │ │ │ │ ├── jquery_script.js │ │ │ │ ├── npm.js │ │ │ │ └── scripts.js │ │ ├── images │ │ │ ├── St.jpg │ │ │ ├── alka.jpg │ │ │ ├── grande.jpg │ │ │ ├── health-background.jpg │ │ │ ├── icons │ │ │ │ ├── button.png │ │ │ │ ├── facebook-icon.png │ │ │ │ ├── google-plus-icon.png │ │ │ │ ├── home-icon.png │ │ │ │ ├── stethoscope-icon.png │ │ │ │ └── twitter-icon.png │ │ │ ├── norvic.jpg │ │ │ └── steth.jpg │ │ └── templates │ │ │ ├── footer.jsp │ │ │ ├── login.jsp │ │ │ └── static_menu.jsp │ │ ├── result.jsp │ │ └── status.jsp └── test │ └── java │ └── org │ └── aacish │ └── disease_prediction │ └── test │ ├── ArListText.java │ ├── DpAppTest.java │ ├── Hello.java │ ├── NlpTest.java │ ├── Person.java │ └── ReaderTest.java ├── target ├── classes │ ├── applicationContext.xml │ ├── org │ │ └── aacish │ │ │ └── disease_prediction │ │ │ ├── BO │ │ │ ├── AppRoot.class │ │ │ ├── DiseaseComparator.class │ │ │ ├── KeywordDictionary.class │ │ │ ├── Predict.class │ │ │ ├── PredictService.class │ │ │ ├── SymptomsDictionary.class │ │ │ ├── Trainer.class │ │ │ └── TrainerService.class │ │ │ ├── DAO │ │ │ ├── AppDAO.class │ │ │ ├── AppDAOService$1.class │ │ │ ├── AppDAOService.class │ │ │ ├── DiseaseMapper.class │ │ │ ├── VocabDAO.class │ │ │ └── VocabDAOService.class │ │ │ ├── classifier │ │ │ ├── BernoulliNaiveBayesClassifier.class │ │ │ ├── ClassificationAlgorithm.class │ │ │ ├── InputParameter.class │ │ │ └── PrepareInputParameter.class │ │ │ ├── controller │ │ │ ├── PredictionController.class │ │ │ ├── SymptomsController.class │ │ │ ├── TrainerController.class │ │ │ └── UserController.class │ │ │ ├── model │ │ │ ├── AdminBean.class │ │ │ ├── Authenticator.class │ │ │ ├── Disease.class │ │ │ └── TrainingDocs.class │ │ │ └── nlp │ │ │ ├── EnglishStemmer.class │ │ │ ├── InputTextProcessor.class │ │ │ └── TextProcessor.class │ ├── testContext.xml │ └── textResources │ │ ├── condition.txt │ │ ├── level.txt │ │ ├── organs.txt │ │ └── symptoms.txt ├── m2e-wtp │ └── web-resources │ │ └── META-INF │ │ ├── MANIFEST.MF │ │ └── maven │ │ └── org.aacish │ │ ├── disease-prediction │ │ ├── pom.properties │ │ └── pom.xml │ │ └── healthGuide │ │ ├── pom.properties │ │ └── pom.xml └── test-classes │ └── org │ └── aacish │ └── disease_prediction │ └── test │ ├── ArListText.class │ ├── DpAppTest.class │ ├── Hello.class │ ├── NlpTest.class │ ├── Person.class │ └── ReaderTest.class ├── test.lck ├── test.log ├── test.properties └── test.script /.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | healthGuide 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.wst.jsdt.core.javascriptValidator 10 | 11 | 12 | 13 | 14 | org.eclipse.jdt.core.javabuilder 15 | 16 | 17 | 18 | 19 | org.eclipse.wst.common.project.facet.core.builder 20 | 21 | 22 | 23 | 24 | org.eclipse.m2e.core.maven2Builder 25 | 26 | 27 | 28 | 29 | org.eclipse.wst.validation.validationbuilder 30 | 31 | 32 | 33 | 34 | 35 | org.eclipse.jem.workbench.JavaEMFNature 36 | org.eclipse.wst.common.modulecore.ModuleCoreNature 37 | org.eclipse.jdt.core.javanature 38 | org.eclipse.m2e.core.maven2Nature 39 | org.eclipse.wst.common.project.facet.core.nature 40 | org.eclipse.wst.jsdt.core.jsNature 41 | 42 | 43 | -------------------------------------------------------------------------------- /.settings/.jsdtscope: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /.settings/org.eclipse.core.resources.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | encoding//src/main/webapp/index.jsp=UTF-8 3 | -------------------------------------------------------------------------------- /.settings/org.eclipse.jdt.core.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled 3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 4 | org.eclipse.jdt.core.compiler.compliance=1.7 5 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error 6 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error 7 | org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning 8 | org.eclipse.jdt.core.compiler.source=1.7 9 | -------------------------------------------------------------------------------- /.settings/org.eclipse.m2e.core.prefs: -------------------------------------------------------------------------------- 1 | activeProfiles= 2 | eclipse.preferences.version=1 3 | resolveWorkspaceProjects=true 4 | version=1 5 | -------------------------------------------------------------------------------- /.settings/org.eclipse.wst.common.component: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /.settings/org.eclipse.wst.common.project.facet.core.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.settings/org.eclipse.wst.jsdt.ui.superType.container: -------------------------------------------------------------------------------- 1 | org.eclipse.wst.jsdt.launching.baseBrowserLibrary -------------------------------------------------------------------------------- /.settings/org.eclipse.wst.jsdt.ui.superType.name: -------------------------------------------------------------------------------- 1 | Window -------------------------------------------------------------------------------- /.settings/org.eclipse.wst.validation.prefs: -------------------------------------------------------------------------------- 1 | disabled=06target 2 | eclipse.preferences.version=1 3 | -------------------------------------------------------------------------------- /READ.md: -------------------------------------------------------------------------------- 1 | # diseaseprediction 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # diseaseprediction 2 | Undergrad final year project to predict diseases given any text symptoms. 3 | A simple Java Spring app for disease prediction by using NLP. It predicts top 5 dieases given text symptomps. 4 | -------------------------------------------------------------------------------- /build.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | -------------------------------------------------------------------------------- /hsql.lck: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sraashis/diseaseprediction/c85fe48e2ac4115f7c769e3d1b560ab7855fc6e8/hsql.lck -------------------------------------------------------------------------------- /hsql.log: -------------------------------------------------------------------------------- 1 | /*C1*/SET SCHEMA SYSTEM_LOBS 2 | INSERT INTO BLOCKS VALUES(0,2147483647,0) 3 | COMMIT 4 | /*C2*/SET SCHEMA PUBLIC 5 | DISCONNECT 6 | -------------------------------------------------------------------------------- /hsql.properties: -------------------------------------------------------------------------------- 1 | #HSQL Database Engine 2.3.2 2 | #Sat Jan 17 21:53:50 NPT 2015 3 | version=2.3.2 4 | modified=yes 5 | -------------------------------------------------------------------------------- /hsql.script: -------------------------------------------------------------------------------- 1 | SET DATABASE UNIQUE NAME HSQLDB4AF8A76D29 2 | SET DATABASE GC 0 3 | SET DATABASE DEFAULT RESULT MEMORY ROWS 0 4 | SET DATABASE EVENT LOG LEVEL 0 5 | SET DATABASE TRANSACTION CONTROL LOCKS 6 | SET DATABASE DEFAULT ISOLATION LEVEL READ COMMITTED 7 | SET DATABASE TRANSACTION ROLLBACK ON CONFLICT TRUE 8 | SET DATABASE TEXT TABLE DEFAULTS '' 9 | SET DATABASE SQL NAMES FALSE 10 | SET DATABASE SQL REFERENCES FALSE 11 | SET DATABASE SQL SIZE TRUE 12 | SET DATABASE SQL TYPES FALSE 13 | SET DATABASE SQL TDC DELETE TRUE 14 | SET DATABASE SQL TDC UPDATE TRUE 15 | SET DATABASE SQL TRANSLATE TTI TYPES TRUE 16 | SET DATABASE SQL CONCAT NULLS TRUE 17 | SET DATABASE SQL UNIQUE NULLS TRUE 18 | SET DATABASE SQL CONVERT TRUNCATE TRUE 19 | SET DATABASE SQL AVG SCALE 0 20 | SET DATABASE SQL DOUBLE NAN TRUE 21 | SET FILES WRITE DELAY 500 MILLIS 22 | SET FILES BACKUP INCREMENT TRUE 23 | SET FILES CACHE SIZE 10000 24 | SET FILES CACHE ROWS 50000 25 | SET FILES SCALE 32 26 | SET FILES LOB SCALE 32 27 | SET FILES DEFRAG 0 28 | SET FILES NIO TRUE 29 | SET FILES NIO SIZE 256 30 | SET FILES LOG TRUE 31 | SET FILES LOG SIZE 50 32 | CREATE USER SA PASSWORD DIGEST 'd41d8cd98f00b204e9800998ecf8427e' 33 | ALTER USER SA SET LOCAL TRUE 34 | CREATE SCHEMA PUBLIC AUTHORIZATION DBA 35 | ALTER SEQUENCE SYSTEM_LOBS.LOB_ID RESTART WITH 1 36 | SET DATABASE DEFAULT INITIAL SCHEMA PUBLIC 37 | GRANT USAGE ON DOMAIN INFORMATION_SCHEMA.SQL_IDENTIFIER TO PUBLIC 38 | GRANT USAGE ON DOMAIN INFORMATION_SCHEMA.YES_OR_NO TO PUBLIC 39 | GRANT USAGE ON DOMAIN INFORMATION_SCHEMA.TIME_STAMP TO PUBLIC 40 | GRANT USAGE ON DOMAIN INFORMATION_SCHEMA.CARDINAL_NUMBER TO PUBLIC 41 | GRANT USAGE ON DOMAIN INFORMATION_SCHEMA.CHARACTER_DATA TO PUBLIC 42 | GRANT DBA TO SA 43 | -------------------------------------------------------------------------------- /pom.xml: -------------------------------------------------------------------------------- 1 | 3 | 4.0.0 4 | org.aacish 5 | healthGuide 6 | war 7 | 0.0.1-SNAPSHOT 8 | healthGuide 9 | http://maven.apache.org 10 | 11 | 12 | junit 13 | junit 14 | 3.8.1 15 | test 16 | 17 | 18 | org.springframework 19 | spring-context 20 | 4.1.4.RELEASE 21 | 22 | 23 | org.springframework 24 | spring-jdbc 25 | 4.1.4.RELEASE 26 | 27 | 28 | org.springframework 29 | spring-tx 30 | 4.1.4.RELEASE 31 | 32 | 33 | 34 | org.springframework 35 | spring-web 36 | 4.1.4.RELEASE 37 | 38 | 39 | 40 | 41 | org.springframework 42 | spring-webmvc 43 | 4.1.4.RELEASE 44 | 45 | 46 | 47 | 48 | org.springframework 49 | spring-test 50 | 4.1.4.RELEASE 51 | 52 | 53 | 54 | com.oracle 55 | ojdbc14 56 | 10.2.0.4.0 57 | 58 | 59 | 60 | javax.servlet 61 | jstl 62 | 1.2 63 | 64 | 65 | 66 | org.hsqldb 67 | hsqldb 68 | 2.3.2 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | healthGuide 78 | 79 | 80 | -------------------------------------------------------------------------------- /src/main/java/org/aacish/disease_prediction/BO/AppRoot.java: -------------------------------------------------------------------------------- 1 | package org.aacish.disease_prediction.BO; 2 | 3 | import java.util.List; 4 | 5 | import org.aacish.disease_prediction.DAO.AppDAO; 6 | import org.aacish.disease_prediction.DAO.VocabDAO; 7 | import org.aacish.disease_prediction.classifier.ClassificationAlgorithm; 8 | import org.aacish.disease_prediction.classifier.InputParameter; 9 | import org.aacish.disease_prediction.nlp.TextProcessor; 10 | 11 | public abstract class AppRoot { 12 | protected AppDAO appDAO = null; 13 | protected VocabDAO vocabDAO = null ; 14 | protected InputParameter inputParameter = null; 15 | protected List textDocs = null; 16 | protected ClassificationAlgorithm algorithm = null; 17 | protected TextProcessor textProcessor = null; 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/org/aacish/disease_prediction/BO/DiseaseComparator.java: -------------------------------------------------------------------------------- 1 | package org.aacish.disease_prediction.BO; 2 | 3 | import java.util.Comparator; 4 | 5 | import org.aacish.disease_prediction.model.Disease; 6 | 7 | public class DiseaseComparator implements Comparator{ 8 | 9 | public int compare(Disease d1, Disease d2) { 10 | return d1.getProbabilty().compareTo(d2.getProbabilty()); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/org/aacish/disease_prediction/BO/KeywordDictionary.java: -------------------------------------------------------------------------------- 1 | package org.aacish.disease_prediction.BO; 2 | 3 | import java.util.List; 4 | 5 | public interface KeywordDictionary { 6 | 7 | public List loadInputKeywords(String input); 8 | 9 | 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/org/aacish/disease_prediction/BO/Predict.java: -------------------------------------------------------------------------------- 1 | package org.aacish.disease_prediction.BO; 2 | import java.util.List; 3 | 4 | import org.aacish.disease_prediction.model.Disease; 5 | 6 | public interface Predict { 7 | public void userInput(String input); 8 | public List getTopFiveProbableDisease(); 9 | public String getAboutDisease(Disease disease); 10 | 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/org/aacish/disease_prediction/BO/PredictService.java: -------------------------------------------------------------------------------- 1 | package org.aacish.disease_prediction.BO; 2 | 3 | import java.util.ArrayList; 4 | import java.util.Collections; 5 | import java.util.List; 6 | 7 | import org.aacish.disease_prediction.DAO.AppDAO; 8 | import org.aacish.disease_prediction.classifier.ClassificationAlgorithm; 9 | import org.aacish.disease_prediction.classifier.InputParameter; 10 | import org.aacish.disease_prediction.model.Disease; 11 | import org.aacish.disease_prediction.nlp.TextProcessor; 12 | 13 | public class PredictService extends AppRoot implements Predict { 14 | private List inputFeatureVector; 15 | private List conditionalProbForEachSymp; 16 | private Double prior; 17 | 18 | 19 | public PredictService(AppDAO appDAO, TextProcessor textProcessor, InputParameter inputParameter, ClassificationAlgorithm algorithm){ 20 | this.appDAO = appDAO; 21 | this.textProcessor = textProcessor; 22 | this.inputParameter = inputParameter; 23 | this.algorithm = algorithm; 24 | 25 | } 26 | 27 | public void userInput(String input){ 28 | this.textDocs = new ArrayList(); 29 | this.textDocs.add(input); 30 | this.textDocs = textProcessor.stemmer(textDocs); 31 | //System.out.println(textDocs); 32 | this.textDocs = textProcessor.extractKeyword(textDocs); 33 | this.inputFeatureVector = inputParameter.prepareFeaturevector(textDocs); 34 | //System.out.println(inputFeatureVector); 35 | } 36 | 37 | 38 | 39 | 40 | public List getTopFiveProbableDisease() { 41 | List sympInNoOfDocs; 42 | List result = new ArrayList(); 43 | 44 | List allDisease = this.appDAO.getAllDisease(); 45 | 46 | for(Disease disease : allDisease){ 47 | conditionalProbForEachSymp = new ArrayList(); 48 | this.prior = appDAO.getPrior(disease); 49 | sympInNoOfDocs = appDAO.symptomsInNoOfDocs(disease.getDiseaseName()); 50 | 51 | for(Integer i : sympInNoOfDocs){ 52 | Double num = (double) (i + 1); 53 | Double den = (double) (disease.getDocCount() + 2); 54 | conditionalProbForEachSymp.add(num/den); 55 | } 56 | 57 | disease.setProbabilty(this.algorithm.classify(this.prior, inputFeatureVector, conditionalProbForEachSymp)); 58 | 59 | /* 60 | * clear the bias 61 | * for example if one/more of user symptom is absent in all docs 62 | * but other symptoms matches. 63 | */ 64 | 65 | Integer biasedSympNo = 0; 66 | 67 | for(int i = 0; i < inputFeatureVector.size(); i++){ 68 | if(inputFeatureVector.get(i)==1 && sympInNoOfDocs.get(i)==0){ 69 | biasedSympNo++; 70 | } 71 | } 72 | 73 | disease.probabilty = disease.probabilty - biasedSympNo*2; 74 | disease.setDiseaseName(disease.diseaseName.substring(0, 1).toUpperCase()+disease.diseaseName.substring(1)); 75 | result.add(disease); 76 | } 77 | Collections.sort(result,new DiseaseComparator()); 78 | Collections.reverse(result); 79 | 80 | 81 | ArrayList topFiv = new ArrayList(); 82 | 83 | for(int i = 0; i < 5; i++){ 84 | topFiv.add(result.get(i)); 85 | } 86 | int sum = 0; 87 | for(Disease d : topFiv){ 88 | sum += d.probabilty; 89 | } 90 | 91 | for(Disease d: topFiv){ 92 | d.probabilty = Math.ceil(100-Math.abs(d.probabilty/sum*100)); 93 | } 94 | 95 | return topFiv; 96 | } 97 | 98 | @Override 99 | public String getAboutDisease(Disease disease) { 100 | disease.diseaseName = disease.getDiseaseName().toLowerCase(); 101 | return this.appDAO.getAboutDisease(disease); 102 | } 103 | 104 | 105 | } 106 | -------------------------------------------------------------------------------- /src/main/java/org/aacish/disease_prediction/BO/SymptomsDictionary.java: -------------------------------------------------------------------------------- 1 | package org.aacish.disease_prediction.BO; 2 | 3 | import java.util.ArrayList; 4 | import java.util.List; 5 | import java.util.Scanner; 6 | 7 | import org.aacish.disease_prediction.DAO.VocabDAO; 8 | 9 | public class SymptomsDictionary implements KeywordDictionary { 10 | private VocabDAO vocabDAO; 11 | 12 | public SymptomsDictionary(VocabDAO vocabDAO){ 13 | this.setVocabDAO(vocabDAO); 14 | } 15 | 16 | public VocabDAO getVocabDAO() { 17 | return vocabDAO; 18 | } 19 | 20 | public List loadInputKeywords(String input) { 21 | Scanner sc = new Scanner(input); 22 | ArrayList keywords = new ArrayList(); 23 | while(sc.hasNext()){ 24 | keywords.add(sc.next()); 25 | } 26 | sc.close(); 27 | return keywords; 28 | } 29 | 30 | public void setVocabDAO(VocabDAO vocabDAO) { 31 | this.vocabDAO = vocabDAO; 32 | } 33 | 34 | 35 | 36 | } 37 | -------------------------------------------------------------------------------- /src/main/java/org/aacish/disease_prediction/BO/Trainer.java: -------------------------------------------------------------------------------- 1 | package org.aacish.disease_prediction.BO; 2 | 3 | import java.util.List; 4 | 5 | import org.aacish.disease_prediction.model.Disease; 6 | 7 | public interface Trainer { 8 | public void deleteAboutDisease(Disease disease); 9 | public void addAboutDisease(String diseaseName, String about); 10 | public void deleteDisease(Disease disease); 11 | public boolean addNewDisease(Disease disease); 12 | public void trainForDisease(String diseaseName, List trainingDocs); 13 | 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/org/aacish/disease_prediction/BO/TrainerService.java: -------------------------------------------------------------------------------- 1 | package org.aacish.disease_prediction.BO; 2 | 3 | import java.util.List; 4 | 5 | import org.aacish.disease_prediction.DAO.AppDAO; 6 | import org.aacish.disease_prediction.DAO.VocabDAO; 7 | import org.aacish.disease_prediction.classifier.InputParameter; 8 | import org.aacish.disease_prediction.model.Disease; 9 | import org.aacish.disease_prediction.nlp.TextProcessor; 10 | 11 | 12 | 13 | public class TrainerService extends AppRoot implements Trainer { 14 | List symptoms = null; 15 | private List inputFeatureVector; 16 | 17 | 18 | public TrainerService(AppDAO appDAO, VocabDAO vocabDAO, TextProcessor textProcessor, InputParameter inputParameter){ 19 | this.vocabDAO = vocabDAO; 20 | this.appDAO = appDAO; 21 | this.textProcessor = textProcessor; 22 | this.inputParameter = inputParameter; 23 | } 24 | 25 | public boolean addNewDisease(Disease disease) { 26 | if(this.appDAO.isNewDisease(disease.getDiseaseName())){ 27 | this.appDAO.addDisease(disease);; 28 | return true; 29 | } 30 | return false; 31 | } 32 | 33 | public void trainForDisease(String diseaseName, List trainingDocs) { 34 | this.textDocs = trainingDocs; 35 | this.symptoms = vocabDAO.getSymptomsList(); 36 | this.textDocs = textProcessor.stemmer(textDocs); 37 | this.textDocs = textProcessor.extractKeyword(textDocs); 38 | this.inputFeatureVector = this.inputParameter.prepareFeaturevector(this.textDocs); 39 | for(int i = 0; i< this.symptoms.size(); i++){ 40 | this.appDAO.setSymptomsInNoOfDocs(diseaseName, symptoms.get(i), inputFeatureVector.get(i)); 41 | } 42 | } 43 | 44 | @Override 45 | public void deleteDisease(Disease disease) { 46 | this.appDAO.deleteDisease(disease); 47 | } 48 | 49 | @Override 50 | public void addAboutDisease(String diseaseName, String about) { 51 | this.appDAO.addAboutDisease(diseaseName, about); 52 | } 53 | 54 | @Override 55 | public void deleteAboutDisease(Disease disease) { 56 | this.appDAO.deleteAboutDisease(disease); 57 | } 58 | 59 | 60 | 61 | } 62 | -------------------------------------------------------------------------------- /src/main/java/org/aacish/disease_prediction/DAO/AppDAO.java: -------------------------------------------------------------------------------- 1 | package org.aacish.disease_prediction.DAO; 2 | 3 | import java.util.List; 4 | 5 | import org.aacish.disease_prediction.model.Disease; 6 | 7 | 8 | public interface AppDAO { 9 | public boolean isNewDisease(String diseaseName); 10 | public void addDisease(Disease disease); 11 | public Double getPrior(Disease disease); 12 | public List symptomsInNoOfDocs(String diseaseName); 13 | public void setSymptomsInNoOfDocs(String diseaseName, String symptom, Integer symInNoOfDocs); 14 | public List getAllDisease(); 15 | public void deleteDisease(Disease disease); 16 | public void addAboutDisease(String diseaseName, String about); 17 | public String getAboutDisease(Disease disease); 18 | public void deleteAboutDisease(Disease disease); 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/org/aacish/disease_prediction/DAO/AppDAOService.java: -------------------------------------------------------------------------------- 1 | package org.aacish.disease_prediction.DAO; 2 | 3 | import java.sql.ResultSet; 4 | import java.sql.SQLException; 5 | import java.util.List; 6 | 7 | import javax.sql.DataSource; 8 | 9 | import org.aacish.disease_prediction.model.Disease; 10 | import org.springframework.jdbc.core.JdbcTemplate; 11 | import org.springframework.jdbc.core.RowMapper; 12 | 13 | public class AppDAOService implements AppDAO { 14 | private JdbcTemplate jdbc; 15 | 16 | public AppDAOService(DataSource source) { 17 | jdbc = new JdbcTemplate(source); 18 | } 19 | 20 | public JdbcTemplate getJdbc() { 21 | return jdbc; 22 | } 23 | 24 | public void setJdbc(JdbcTemplate jdbc) { 25 | this.jdbc = jdbc; 26 | } 27 | 28 | public void addDisease(Disease disease) { 29 | String sql; 30 | 31 | sql = "insert into diseases values(?, ?)"; 32 | jdbc.update(sql, disease.getDiseaseName(), disease.getDocCount()); 33 | 34 | sql = "create table " + disease.getDiseaseName() + " (" 35 | + "SYMPTOM " + "varchar(20), " 36 | + "IN_DOCS " + "int, " 37 | + "CONSTRAINT pk_" + disease.getDiseaseName() + " PRIMARY KEY(SYMPTOM))"; 38 | jdbc.execute(sql); 39 | } 40 | 41 | public List getAllDisease(){ 42 | return jdbc.query("select * from diseases", new DiseaseMapper()); 43 | } 44 | 45 | public List symptomsInNoOfDocs(String diseaseName) { 46 | 47 | String qry = "select IN_DOCS from " + diseaseName; 48 | List symInNoOfDocs = jdbc.query(qry, new RowMapper(){ 49 | 50 | public Integer mapRow(ResultSet rs, int rowNum) throws SQLException { 51 | 52 | return rs.getInt("IN_DOCS"); 53 | } 54 | 55 | }); 56 | 57 | return symInNoOfDocs; 58 | 59 | } 60 | 61 | 62 | 63 | public Double getPrior(Disease disease) { 64 | 65 | Double totalDocs = jdbc.queryForObject("select SUM(DOC_COUNT) from diseases", Double.class); 66 | return disease.getDocCount()/totalDocs; 67 | 68 | } 69 | 70 | public boolean isNewDisease(String diseaseName) { 71 | Integer cnt = jdbc.queryForObject("select COUNT(*) from diseases where disease_name = '" + diseaseName + "'", Integer.class); 72 | return !(cnt!=null && cnt > 0); 73 | } 74 | 75 | public void setSymptomsInNoOfDocs(String tableName, String symptom, Integer sympInNoOfDocs) { 76 | jdbc.update("insert into " + tableName + " values(?,?)", symptom, sympInNoOfDocs); 77 | } 78 | 79 | @Override 80 | public void deleteDisease(Disease disease) { 81 | // TODO Auto-generated method stub 82 | jdbc.update("delete from diseases where disease_name = '" + disease.diseaseName + "'"); 83 | 84 | } 85 | 86 | @Override 87 | public void addAboutDisease(String diseaseName, String about) { 88 | about= about.replace("(", "["); 89 | about= about.replace(")", "]"); 90 | jdbc.update("insert into about values(?,?)",diseaseName, about); 91 | 92 | } 93 | 94 | @Override 95 | public String getAboutDisease(Disease disease) { 96 | String sql="select about_disease from about where disease_name='" + disease.diseaseName + "'"; 97 | String result="test"; 98 | result = jdbc.queryForObject(sql, String.class); 99 | 100 | return result; 101 | } 102 | 103 | @Override 104 | public void deleteAboutDisease(Disease disease) { 105 | String sql= "delete from about where disease_name='"+disease.getDiseaseName()+"'"; 106 | jdbc.update(sql); 107 | 108 | } 109 | } 110 | -------------------------------------------------------------------------------- /src/main/java/org/aacish/disease_prediction/DAO/DiseaseMapper.java: -------------------------------------------------------------------------------- 1 | package org.aacish.disease_prediction.DAO; 2 | 3 | import java.sql.ResultSet; 4 | import java.sql.SQLException; 5 | 6 | import org.aacish.disease_prediction.model.Disease; 7 | import org.springframework.jdbc.core.RowMapper; 8 | 9 | public class DiseaseMapper implements RowMapper { 10 | 11 | public Disease mapRow(ResultSet rs, int rowNum) throws SQLException { 12 | Disease disease = new Disease(); 13 | disease.setDiseaseName(rs.getString("DISEASE_NAME")); 14 | disease.setDocCount(rs.getInt("DOC_COUNT")); 15 | return disease; 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/org/aacish/disease_prediction/DAO/VocabDAO.java: -------------------------------------------------------------------------------- 1 | package org.aacish.disease_prediction.DAO; 2 | 3 | import java.util.List; 4 | 5 | public interface VocabDAO { 6 | 7 | 8 | public List getOrgansList(); 9 | public List getConditionList(); 10 | public List getLevelList(); 11 | public List getSymptomsList(); 12 | 13 | 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/org/aacish/disease_prediction/DAO/VocabDAOService.java: -------------------------------------------------------------------------------- 1 | package org.aacish.disease_prediction.DAO; 2 | 3 | 4 | import java.io.IOException; 5 | import java.io.InputStream; 6 | import java.util.ArrayList; 7 | import java.util.List; 8 | import java.util.Scanner; 9 | import org.springframework.core.io.Resource; 10 | 11 | public class VocabDAOService implements VocabDAO { 12 | private Resource organFile = null; 13 | private Resource conditionFile = null; 14 | private Resource levelFile = null; 15 | private Resource symptomsFile = null; 16 | private InputStream ip = null; 17 | private Scanner sc = null; 18 | 19 | public Resource getOrganFile() { 20 | return organFile; 21 | } 22 | 23 | public void setOrganFile(Resource organFile) { 24 | this.organFile = organFile; 25 | } 26 | 27 | public Resource getConditionFile() { 28 | return conditionFile; 29 | } 30 | 31 | public void setConditionFile(Resource conditionFile) { 32 | this.conditionFile = conditionFile; 33 | } 34 | 35 | public Resource getLevelFile() { 36 | return levelFile; 37 | } 38 | 39 | public void setLevelFile(Resource levelFile) { 40 | this.levelFile = levelFile; 41 | } 42 | 43 | public Resource getSymptomsFile() { 44 | return symptomsFile; 45 | } 46 | 47 | public void setSymptomsFile(Resource symptomsFile) { 48 | this.symptomsFile = symptomsFile; 49 | } 50 | 51 | public InputStream getIp() { 52 | return ip; 53 | } 54 | 55 | public void setIp(InputStream ip) { 56 | this.ip = ip; 57 | } 58 | 59 | public Scanner getSc() { 60 | return sc; 61 | } 62 | 63 | public void setSc(Scanner sc) { 64 | this.sc = sc; 65 | } 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | @Override 74 | public List getOrgansList() { 75 | List organs = new ArrayList(); 76 | try{ 77 | ip = organFile.getInputStream(); 78 | 79 | sc = new Scanner(ip); 80 | while(sc.hasNext()){ 81 | organs.add(sc.next().toLowerCase().trim()); 82 | 83 | } 84 | ip.close(); 85 | sc.close(); 86 | } 87 | catch(IOException ex){ 88 | ex.printStackTrace(); 89 | } 90 | 91 | return organs; 92 | } 93 | 94 | @Override 95 | public List getConditionList() { 96 | List condition = new ArrayList(); 97 | try{ 98 | ip = conditionFile.getInputStream(); 99 | 100 | sc = new Scanner(ip); 101 | while(sc.hasNext()){ 102 | condition.add(sc.next().toLowerCase().trim()); 103 | 104 | } 105 | ip.close(); 106 | sc.close(); 107 | } 108 | catch(IOException ex){ 109 | ex.printStackTrace(); 110 | } 111 | 112 | return condition; 113 | 114 | } 115 | 116 | @Override 117 | public List getLevelList() { 118 | List level = new ArrayList(); 119 | try{ 120 | ip = levelFile.getInputStream(); 121 | 122 | sc = new Scanner(ip); 123 | while(sc.hasNext()){ 124 | level.add(sc.next().toLowerCase().trim()); 125 | 126 | } 127 | ip.close(); 128 | sc.close(); 129 | } 130 | catch(IOException ex){ 131 | ex.printStackTrace(); 132 | } 133 | 134 | return level; 135 | } 136 | 137 | 138 | @Override 139 | public List getSymptomsList() { 140 | List symptoms = new ArrayList(); 141 | try{ 142 | ip = symptomsFile.getInputStream(); 143 | 144 | sc = new Scanner(ip); 145 | while(sc.hasNext()){ 146 | symptoms.add(sc.next().toLowerCase().trim()); 147 | 148 | } 149 | ip.close(); 150 | sc.close(); 151 | } 152 | catch(IOException ex){ 153 | ex.printStackTrace(); 154 | } 155 | 156 | return symptoms; 157 | } 158 | 159 | 160 | } 161 | -------------------------------------------------------------------------------- /src/main/java/org/aacish/disease_prediction/classifier/BernoulliNaiveBayesClassifier.java: -------------------------------------------------------------------------------- 1 | package org.aacish.disease_prediction.classifier; 2 | 3 | 4 | 5 | import java.util.List; 6 | 7 | public class BernoulliNaiveBayesClassifier implements ClassificationAlgorithm { 8 | public Double classify(Double prior, List inputVector, List conditionalProb){ 9 | Double score = Math.log(prior); 10 | 11 | for(int i = 0; i < inputVector.size(); i++){ 12 | 13 | if(inputVector.get(i)==1){ 14 | score += Math.log(conditionalProb.get(i)); 15 | } 16 | else{ 17 | score += Math.log(1-conditionalProb.get(i)); 18 | } 19 | } 20 | return score; 21 | } 22 | } 23 | 24 | -------------------------------------------------------------------------------- /src/main/java/org/aacish/disease_prediction/classifier/ClassificationAlgorithm.java: -------------------------------------------------------------------------------- 1 | package org.aacish.disease_prediction.classifier; 2 | 3 | import java.util.List; 4 | 5 | public interface ClassificationAlgorithm { 6 | public Double classify(Double prior, List inputVector, List conditionalProb); 7 | } 8 | -------------------------------------------------------------------------------- /src/main/java/org/aacish/disease_prediction/classifier/InputParameter.java: -------------------------------------------------------------------------------- 1 | package org.aacish.disease_prediction.classifier; 2 | 3 | 4 | import java.util.List; 5 | 6 | public interface InputParameter { 7 | 8 | public List prepareFeaturevector(List docs); 9 | } 10 | -------------------------------------------------------------------------------- /src/main/java/org/aacish/disease_prediction/classifier/PrepareInputParameter.java: -------------------------------------------------------------------------------- 1 | package org.aacish.disease_prediction.classifier; 2 | 3 | import java.util.ArrayList; 4 | import java.util.List; 5 | import org.aacish.disease_prediction.DAO.VocabDAO; 6 | 7 | 8 | 9 | public class PrepareInputParameter implements InputParameter{ 10 | private VocabDAO vocabDAO = null; 11 | private ArrayList featureVector; 12 | String[] tknDoc; 13 | public VocabDAO getVocabDAO() { 14 | return vocabDAO; 15 | } 16 | 17 | 18 | public void setVocabDAO(VocabDAO vocabDAO) { 19 | this.vocabDAO = vocabDAO; 20 | } 21 | 22 | public PrepareInputParameter() {} 23 | 24 | 25 | public ArrayList prepareFeaturevector(List docs) { 26 | List symptoms = this.vocabDAO.getSymptomsList(); 27 | 28 | featureVector = new ArrayList(); 29 | for(String s: symptoms){ 30 | int tokenInNOofDocs = 0; 31 | for(String doc: docs){ 32 | /* Each doc prepares a feature vector.*/ 33 | tknDoc = doc.split(" +"); 34 | for(String tkD : tknDoc){ 35 | if(s.equals(alphaOnly(tkD))){ 36 | tokenInNOofDocs++; 37 | break; 38 | } 39 | } 40 | } 41 | featureVector.add(tokenInNOofDocs); 42 | } 43 | 44 | return featureVector; 45 | } 46 | 47 | public String alphaOnly(String ip){ 48 | String formatted=""; 49 | ip = ip.toLowerCase(); 50 | 51 | for(int i = 0; i < ip.length();i++){ 52 | 53 | if(Character.isLetter(ip.charAt(i))){ 54 | formatted += ip.charAt(i); 55 | 56 | } 57 | } 58 | return formatted; 59 | } 60 | 61 | } 62 | -------------------------------------------------------------------------------- /src/main/java/org/aacish/disease_prediction/controller/PredictionController.java: -------------------------------------------------------------------------------- 1 | package org.aacish.disease_prediction.controller; 2 | 3 | import java.util.List; 4 | 5 | import org.aacish.disease_prediction.BO.Predict; 6 | import org.aacish.disease_prediction.model.Disease; 7 | import org.springframework.context.support.ClassPathXmlApplicationContext; 8 | import org.springframework.stereotype.Controller; 9 | import org.springframework.web.bind.annotation.RequestMapping; 10 | import org.springframework.web.bind.annotation.RequestParam; 11 | import org.springframework.web.servlet.ModelAndView; 12 | 13 | @Controller 14 | public class PredictionController { 15 | 16 | @RequestMapping("/predict") 17 | public ModelAndView predicion(@RequestParam("userInput")final String userInput){ 18 | List resultDiseases; 19 | ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); 20 | Predict predict = (Predict)context.getBean("predict"); 21 | predict.userInput(userInput); 22 | resultDiseases = predict.getTopFiveProbableDisease(); 23 | ModelAndView modelAndView = new ModelAndView(); 24 | modelAndView.addObject("disease1", resultDiseases.get(0)); 25 | modelAndView.addObject("disease2", resultDiseases.get(1)); 26 | modelAndView.addObject("disease3", resultDiseases.get(2)); 27 | modelAndView.addObject("disease4", resultDiseases.get(3)); 28 | modelAndView.addObject("disease5", resultDiseases.get(4)); 29 | 30 | for(int i = 1; i<= resultDiseases.size(); i++){ 31 | String about = predict.getAboutDisease((Disease)resultDiseases.get(i-1)); 32 | modelAndView.addObject("disease"+i+"About", about); 33 | } 34 | modelAndView.setViewName("result"); 35 | context.close(); 36 | return modelAndView; 37 | } 38 | 39 | } 40 | -------------------------------------------------------------------------------- /src/main/java/org/aacish/disease_prediction/controller/SymptomsController.java: -------------------------------------------------------------------------------- 1 | package org.aacish.disease_prediction.controller; 2 | 3 | import java.util.List; 4 | 5 | import org.aacish.disease_prediction.BO.KeywordDictionary; 6 | import org.springframework.context.support.ClassPathXmlApplicationContext; 7 | import org.springframework.stereotype.Controller; 8 | import org.springframework.ui.ModelMap; 9 | import org.springframework.web.bind.annotation.RequestMapping; 10 | import org.springframework.web.bind.annotation.RequestMethod; 11 | import org.springframework.web.bind.annotation.RequestParam; 12 | 13 | @Controller 14 | public class SymptomsController { 15 | 16 | @RequestMapping(value="/addvocabulary", method=RequestMethod.POST) 17 | public String addVocabulary(@RequestParam("userInput")String vocab, ModelMap model){ 18 | @SuppressWarnings("unused") 19 | List vocabulary = null; 20 | ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); 21 | KeywordDictionary dictionary = (KeywordDictionary)context.getBean("dictionary"); 22 | vocabulary = dictionary.loadInputKeywords(vocab); 23 | model.addAttribute("message", "Vocabulary Added successfully"); 24 | context.close(); 25 | return "status"; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/org/aacish/disease_prediction/controller/TrainerController.java: -------------------------------------------------------------------------------- 1 | package org.aacish.disease_prediction.controller; 2 | 3 | import java.util.ArrayList; 4 | import java.util.List; 5 | 6 | import org.aacish.disease_prediction.BO.Trainer; 7 | import org.aacish.disease_prediction.model.Disease; 8 | import org.aacish.disease_prediction.model.TrainingDocs; 9 | import org.springframework.context.support.ClassPathXmlApplicationContext; 10 | import org.springframework.stereotype.Controller; 11 | import org.springframework.ui.ModelMap; 12 | import org.springframework.web.bind.annotation.ModelAttribute; 13 | import org.springframework.web.bind.annotation.RequestMapping; 14 | import org.springframework.web.bind.annotation.RequestMethod; 15 | import org.springframework.web.bind.annotation.RequestParam; 16 | import org.springframework.web.servlet.ModelAndView; 17 | 18 | @Controller 19 | public class TrainerController { 20 | 21 | 22 | @RequestMapping(value="/add", method=RequestMethod.GET) 23 | public ModelAndView setTraining(@RequestParam("diseaseName")String diseaseName, @RequestParam("docCount")String docCount){ 24 | ModelAndView modelAndView = new ModelAndView(); 25 | Disease disease = new Disease(); 26 | disease.setDiseaseName(diseaseName.toLowerCase().trim()); 27 | disease.setDocCount(Integer.parseInt(docCount)); 28 | modelAndView.addObject("docNum", disease.getDocCount()); 29 | modelAndView.addObject("diseaseName", disease.diseaseName); 30 | modelAndView.setViewName("add_disease"); 31 | return modelAndView; 32 | 33 | } 34 | 35 | 36 | @RequestMapping(value="/train", method = RequestMethod.POST) 37 | public String trainDisease(@ModelAttribute("trainingDocs")TrainingDocs trainingDocs,@ModelAttribute("disease")Disease disease, ModelMap model){ 38 | 39 | List docs = new ArrayList(); 40 | if(trainingDocs.getDoc1()!=""){ 41 | docs.add(trainingDocs.getDoc1()); 42 | } 43 | if(trainingDocs.getDoc2()!=""){ 44 | docs.add(trainingDocs.getDoc2()); 45 | } 46 | 47 | if(trainingDocs.getDoc3()!=""){ 48 | docs.add(trainingDocs.getDoc3()); 49 | } 50 | if(trainingDocs.getDoc4()!=""){ 51 | docs.add(trainingDocs.getDoc4()); 52 | } 53 | if(trainingDocs.getDoc5()!=""){ 54 | docs.add(trainingDocs.getDoc5()); 55 | } 56 | 57 | ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); 58 | Trainer trainer = (Trainer)context.getBean("trainer"); 59 | 60 | if(trainer.addNewDisease(disease)){ 61 | trainer.addAboutDisease(disease.getDiseaseName(), trainingDocs.getAboutDisease()); 62 | trainer.trainForDisease(disease.getDiseaseName(), docs); 63 | model.addAttribute("message", "Disease ["+ disease.diseaseName +"] Trained Succesfully"); 64 | context.close(); 65 | return "status"; 66 | } 67 | else{ 68 | trainer.deleteDisease(disease); 69 | trainer.deleteAboutDisease(disease); 70 | model.addAttribute("message", "Disease ["+ disease.diseaseName +"] Already Exist"); 71 | context.close(); 72 | return "status"; 73 | } 74 | 75 | 76 | 77 | } 78 | 79 | } 80 | -------------------------------------------------------------------------------- /src/main/java/org/aacish/disease_prediction/controller/UserController.java: -------------------------------------------------------------------------------- 1 | package org.aacish.disease_prediction.controller; 2 | 3 | import javax.servlet.http.HttpSession; 4 | 5 | import org.aacish.disease_prediction.model.AdminBean; 6 | import org.aacish.disease_prediction.model.Authenticator; 7 | import org.springframework.stereotype.Controller; 8 | import org.springframework.ui.ModelMap; 9 | import org.springframework.web.bind.annotation.ModelAttribute; 10 | import org.springframework.web.bind.annotation.RequestMapping; 11 | import org.springframework.web.bind.annotation.RequestMethod; 12 | 13 | @Controller 14 | 15 | public class UserController { 16 | 17 | @RequestMapping(value="/login", method=RequestMethod.POST) 18 | 19 | public String login(@ModelAttribute("user")AdminBean admin,HttpSession session, ModelMap model){ 20 | 21 | 22 | if(new Authenticator().authenticate(admin)){ 23 | session.setAttribute("user", admin); 24 | model.addAttribute("message", "Login Successful"); 25 | } 26 | else{ 27 | model.addAttribute("message", "Login Error!!"); 28 | } 29 | return "status"; 30 | 31 | } 32 | 33 | @RequestMapping(value="/logout",method=RequestMethod.GET) 34 | 35 | public String logout(HttpSession session){ 36 | session.setAttribute("user", null); 37 | 38 | return "redirect:home"; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/main/java/org/aacish/disease_prediction/model/AdminBean.java: -------------------------------------------------------------------------------- 1 | package org.aacish.disease_prediction.model; 2 | 3 | public class AdminBean { 4 | private String email; 5 | private String password; 6 | public String getEmail() { 7 | return email; 8 | } 9 | public void setEmail(String email) { 10 | this.email = email; 11 | } 12 | public String getPassword() { 13 | return password; 14 | } 15 | public void setPassword(String password) { 16 | this.password = password; 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/org/aacish/disease_prediction/model/Authenticator.java: -------------------------------------------------------------------------------- 1 | package org.aacish.disease_prediction.model; 2 | 3 | 4 | 5 | public class Authenticator { 6 | private final String email="admin@email.com"; 7 | private final String password="admin"; 8 | public boolean authenticate(AdminBean admin){ 9 | if(admin.getEmail().equals(email)&&admin.getPassword().equals(password)) return true; 10 | return false; 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/org/aacish/disease_prediction/model/Disease.java: -------------------------------------------------------------------------------- 1 | package org.aacish.disease_prediction.model; 2 | 3 | 4 | public class Disease { 5 | public String diseaseName; 6 | private Integer docCount; 7 | public Double probabilty = 0.0; 8 | public String getDiseaseName() { 9 | return diseaseName; 10 | } 11 | public void setDiseaseName(String diseaseName) { 12 | this.diseaseName = diseaseName; 13 | } 14 | public Integer getDocCount() { 15 | return docCount; 16 | } 17 | public void setDocCount(Integer docCount) { 18 | this.docCount = docCount; 19 | } 20 | public Double getProbabilty() { 21 | return probabilty; 22 | } 23 | public void setProbabilty(Double probabilty) { 24 | this.probabilty = probabilty; 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/org/aacish/disease_prediction/model/TrainingDocs.java: -------------------------------------------------------------------------------- 1 | package org.aacish.disease_prediction.model; 2 | 3 | public class TrainingDocs { 4 | private String doc1 = ""; 5 | private String doc2 = ""; 6 | private String doc3 = ""; 7 | private String doc4 = ""; 8 | private String doc5 = ""; 9 | private String aboutDisease = ""; 10 | 11 | public String getDoc1() { 12 | return doc1; 13 | } 14 | public void setDoc1(String doc1) { 15 | this.doc1 = doc1; 16 | } 17 | public String getDoc2() { 18 | return doc2; 19 | } 20 | public void setDoc2(String doc2) { 21 | this.doc2 = doc2; 22 | } 23 | public String getDoc3() { 24 | return doc3; 25 | } 26 | public void setDoc3(String doc3) { 27 | this.doc3 = doc3; 28 | } 29 | public String getDoc4() { 30 | return doc4; 31 | } 32 | public void setDoc4(String doc4) { 33 | this.doc4 = doc4; 34 | } 35 | public String getDoc5() { 36 | return doc5; 37 | } 38 | public void setDoc5(String doc5) { 39 | this.doc5 = doc5; 40 | } 41 | public String getAboutDisease() { 42 | return aboutDisease; 43 | } 44 | public void setAboutDisease(String aboutDisease) { 45 | this.aboutDisease = aboutDisease; 46 | } 47 | 48 | } 49 | -------------------------------------------------------------------------------- /src/main/java/org/aacish/disease_prediction/nlp/EnglishStemmer.java: -------------------------------------------------------------------------------- 1 | package org.aacish.disease_prediction.nlp; 2 | 3 | import java.util.ArrayList; 4 | 5 | public class EnglishStemmer { 6 | static ArrayList cutOffs = null; 7 | private static void initCutoffs(){ 8 | cutOffs = new ArrayList(); 9 | cutOffs.add("ing"); 10 | cutOffs.add("ed"); 11 | cutOffs.add("ness"); 12 | cutOffs.add("ly"); 13 | cutOffs.add("ion"); 14 | } 15 | 16 | public static String stemmer(String ip){ 17 | initCutoffs(); 18 | 19 | for(String s : cutOffs){ 20 | if(ip.endsWith(s)){ 21 | return ip.replace(s, ""); 22 | } 23 | } 24 | return ip; 25 | 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/org/aacish/disease_prediction/nlp/InputTextProcessor.java: -------------------------------------------------------------------------------- 1 | package org.aacish.disease_prediction.nlp; 2 | 3 | import java.util.ArrayList; 4 | import java.util.List; 5 | import org.aacish.disease_prediction.DAO.VocabDAO; 6 | public class InputTextProcessor implements TextProcessor { 7 | 8 | private VocabDAO vocabDAO = null; 9 | private List organs; 10 | private List conditions; 11 | private List levels; 12 | 13 | 14 | public VocabDAO getVocabDAO() { 15 | return vocabDAO; 16 | } 17 | 18 | public void setVocabDAO(VocabDAO vocabDAO) { 19 | this.vocabDAO = vocabDAO; 20 | organs = this.vocabDAO.getOrgansList(); 21 | conditions = this.vocabDAO.getConditionList(); 22 | levels = this.vocabDAO.getLevelList(); 23 | } 24 | 25 | 26 | 27 | public List stemmer(List stemDocs) { 28 | 29 | ArrayList stemmed = new ArrayList(); 30 | for(String doc : stemDocs){ 31 | 32 | 33 | String[] tknByDel; 34 | String[] tknBySpace; 35 | String wholeDoc = ""; 36 | 37 | tknByDel = doc.split(", +|\\. +"); 38 | for(String tDel : tknByDel){ 39 | String sentence = ""; 40 | tknBySpace = tDel.split(" +"); 41 | for(String tSp: tknBySpace){ 42 | sentence = sentence + EnglishStemmer.stemmer(tSp) + " "; 43 | } 44 | sentence = sentence.trim() + "," ; 45 | wholeDoc = wholeDoc + sentence; 46 | 47 | } 48 | 49 | stemmed.add(wholeDoc); 50 | } 51 | 52 | return stemmed; 53 | } 54 | 55 | public List extractKeyword(List fromDocs) { 56 | 57 | List result = new ArrayList(); 58 | 59 | 60 | for(String doc : fromDocs){ 61 | String singleDocOnlyKeywords = ""; 62 | String[] tkByDel = doc.split(","); 63 | 64 | for(String phrase : tkByDel){ 65 | String keyword = ""; 66 | keyword = extractFromSinglePhrase(phrase); 67 | singleDocOnlyKeywords = singleDocOnlyKeywords + keyword + " "; 68 | } 69 | result.add(singleDocOnlyKeywords); 70 | } 71 | System.out.println(result); 72 | return result; 73 | 74 | } 75 | 76 | private String extractFromSinglePhrase(String phrase){ 77 | String keyword = ""; 78 | String[] tokens = phrase.split(" +"); 79 | 80 | for(String s : tokens){ 81 | String s1 = s.toLowerCase().trim().replace(",", ""); 82 | for(String o : organs){ 83 | if(o.equals(s1)){ 84 | keyword = keyword + s1; 85 | } 86 | } 87 | } 88 | 89 | for(String s : tokens){ 90 | String s1 = s.toLowerCase().trim().replace(",", ""); 91 | for(String c : conditions){ 92 | if(c.equals(s1)){ 93 | keyword = keyword + s1; 94 | } 95 | } 96 | } 97 | 98 | for(String s : tokens){ 99 | String s1 = s.toLowerCase().trim().replace(",", ""); 100 | for(String l : levels){ 101 | if(l.equals(s1)){ 102 | keyword = keyword + s1; 103 | } 104 | } 105 | } 106 | 107 | 108 | return keyword; 109 | } 110 | } 111 | -------------------------------------------------------------------------------- /src/main/java/org/aacish/disease_prediction/nlp/TextProcessor.java: -------------------------------------------------------------------------------- 1 | package org.aacish.disease_prediction.nlp; 2 | 3 | import java.util.List; 4 | 5 | public interface TextProcessor { 6 | public List stemmer(List stemDocs); 7 | public List extractKeyword(List fromDocs); 8 | } 9 | -------------------------------------------------------------------------------- /src/main/resources/applicationContext.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /src/main/resources/testContext.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /src/main/resources/textResources/condition.txt: -------------------------------------------------------------------------------- 1 | pain 2 | pressure 3 | fever 4 | temprature 5 | beatrate 6 | cough 7 | dizzy 8 | cold 9 | faint 10 | -------------------------------------------------------------------------------- /src/main/resources/textResources/level.txt: -------------------------------------------------------------------------------- 1 | high 2 | low 3 | mild 4 | rapid 5 | -------------------------------------------------------------------------------- /src/main/resources/textResources/organs.txt: -------------------------------------------------------------------------------- 1 | heart 2 | blood 3 | head 4 | chest 5 | neck 6 | leg 7 | back 8 | eye 9 | ear -------------------------------------------------------------------------------- /src/main/resources/textResources/symptoms.txt: -------------------------------------------------------------------------------- 1 | feverhigh 2 | bloodpressurelow 3 | heartbeatrapid 4 | bloodpressurehigh 5 | coughmild 6 | dizzy 7 | cold 8 | naussea 9 | chestpain 10 | faint 11 | headpain 12 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/dispatcher-servlet.xml: -------------------------------------------------------------------------------- 1 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/vocabulary.txt: -------------------------------------------------------------------------------- 1 | china 2 | nepal 3 | varat 4 | katar 5 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/web.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | index.jsp 6 | 7 | Disease Prediction System 8 | 9 | dispatcher 10 | org.springframework.web.servlet.DispatcherServlet 11 | 1 12 | 13 | 14 | 15 | dispatcher 16 | / 17 | 18 | 19 | 20 | index 21 | /index.jsp 22 | 23 | 24 | index 25 | /home 26 | 27 | 28 | 29 | add-disease 30 | /add_disease.jsp 31 | 32 | 33 | add-disease 34 | /add-disease 35 | 36 | 37 | 38 | result 39 | /result.jsp 40 | 41 | 42 | result 43 | /result 44 | 45 | 46 | 47 | 48 | add-hospital 49 | /add_hospital.jsp 50 | 51 | 52 | add-hospital 53 | /add-hospital 54 | 55 | 56 | 57 | status 58 | /status.jsp 59 | 60 | 61 | status 62 | /status 63 | 64 | 65 | 66 | logout 67 | /logout.jsp 68 | 69 | 70 | logout 71 | /logout 72 | 73 | 74 | 75 | faq 76 | /faq.jsp 77 | 78 | 79 | faq 80 | /faq 81 | 82 | 83 | 84 | -------------------------------------------------------------------------------- /src/main/webapp/add_disease.jsp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sraashis/diseaseprediction/c85fe48e2ac4115f7c769e3d1b560ab7855fc6e8/src/main/webapp/add_disease.jsp -------------------------------------------------------------------------------- /src/main/webapp/add_hospital.jsp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sraashis/diseaseprediction/c85fe48e2ac4115f7c769e3d1b560ab7855fc6e8/src/main/webapp/add_hospital.jsp -------------------------------------------------------------------------------- /src/main/webapp/faq.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | FAQs 17 | 18 | 19 | 20 | 56 | 57 |
58 | 59 | 60 | 61 |
62 | 63 | 66 | 67 | -------------------------------------------------------------------------------- /src/main/webapp/index.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | healthGuide 16 | 17 | 18 | 25 | 26 | 95 | 96 |
97 |
98 |
99 |
100 | Stethoscope 101 |
102 |
103 |

Prevention is better than cure.

104 |

Most of Diseases are curable if identified early

105 |
106 |
107 |
108 | Twitter 109 | Google plus 110 |
111 |
112 |
113 | 114 |
115 | 116 | 117 |
118 |
119 | 120 | 121 |
122 | 192 |
193 | 194 | 195 |
196 |
197 |
Prediction Engine
198 |
199 |
200 |
201 |

202 |
203 |

204 | 205 |
206 |
207 | 208 | 209 | 210 |
211 |

Top Diseases 212 |

213 |
214 |
Jaundice
215 |
Cholera
216 |
Ebola
217 |
Hiv
218 |
Cancer
219 |
Hepatitis
220 |
Typhoid
221 |
Diabetis
222 |
Malaria
223 |
Sugar
224 |
Blood cancer
225 |
Tuberclosis
226 |
New
227 |
Diabetis
228 |
229 |
230 |
231 |
232 |
233 | 234 | 235 |
236 |
237 |
Top Stories
238 |
239 | 240 |
241 |
242 |
243 | 244 |

Healthy Habits Here.

245 |

246 | Any one can be benefited from disease prediction engine. Where ever you are you can know what are you suffering from. You can also see list of hospitals and make treatment plans. 247 |

248 |

Read about our vision.

249 |
250 |
251 |
252 | 253 | 254 |
255 |
256 |
257 | http://www.uky.edu/ 258 |
259 |

We are here to guide you through your health condition. Based on your information we will predict the most possible disease. Every time we suffer from some abnormalities we try searching in internet about possible diseases. But health guide brings all in one services. Here you can know about disease and hospitals

260 | 261 | 262 |
263 |
264 |
265 | 266 |
267 |
268 | 269 |
270 | 271 |
272 |
273 |
274 |
275 |
276 |
© Disease Prediction System Group Kathford 2015
277 |
278 |
279 |
280 | 281 | 282 | 283 | 284 | 285 | 286 | 287 | -------------------------------------------------------------------------------- /src/main/webapp/logout.jsp: -------------------------------------------------------------------------------- 1 | <%@page import="javax.websocket.Session"%> 2 | <%@page import="org.springframework.web.context.request.SessionScope"%> 3 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 4 | <%@ page language="java" contentType="text/html; charset=ISO-8859-1" 5 | pageEncoding="ISO-8859-1"%> 6 | 7 | 8 | 9 | 10 | Logout 11 | 12 | 13 | <% session.invalidate(); %> 14 | 15 | 16 | -------------------------------------------------------------------------------- /src/main/webapp/resources/bootstrap/css/bootstrap-theme.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap v3.3.2 (http://getbootstrap.com) 3 | * Copyright 2011-2015 Twitter, Inc. 4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 5 | */ 6 | 7 | .btn-default, 8 | .btn-primary, 9 | .btn-success, 10 | .btn-info, 11 | .btn-warning, 12 | .btn-danger { 13 | text-shadow: 0 -1px 0 rgba(0, 0, 0, .2); 14 | -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075); 15 | box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075); 16 | } 17 | .btn-default:active, 18 | .btn-primary:active, 19 | .btn-success:active, 20 | .btn-info:active, 21 | .btn-warning:active, 22 | .btn-danger:active, 23 | .btn-default.active, 24 | .btn-primary.active, 25 | .btn-success.active, 26 | .btn-info.active, 27 | .btn-warning.active, 28 | .btn-danger.active { 29 | -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); 30 | box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); 31 | } 32 | .btn-default .badge, 33 | .btn-primary .badge, 34 | .btn-success .badge, 35 | .btn-info .badge, 36 | .btn-warning .badge, 37 | .btn-danger .badge { 38 | text-shadow: none; 39 | } 40 | .btn:active, 41 | .btn.active { 42 | background-image: none; 43 | } 44 | .btn-default { 45 | text-shadow: 0 1px 0 #fff; 46 | background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%); 47 | background-image: -o-linear-gradient(top, #fff 0%, #e0e0e0 100%); 48 | background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#e0e0e0)); 49 | background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%); 50 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0); 51 | filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); 52 | background-repeat: repeat-x; 53 | border-color: #dbdbdb; 54 | border-color: #ccc; 55 | } 56 | .btn-default:hover, 57 | .btn-default:focus { 58 | background-color: #e0e0e0; 59 | background-position: 0 -15px; 60 | } 61 | .btn-default:active, 62 | .btn-default.active { 63 | background-color: #e0e0e0; 64 | border-color: #dbdbdb; 65 | } 66 | .btn-default.disabled, 67 | .btn-default:disabled, 68 | .btn-default[disabled] { 69 | background-color: #e0e0e0; 70 | background-image: none; 71 | } 72 | .btn-primary { 73 | background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%); 74 | background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%); 75 | background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#265a88)); 76 | background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%); 77 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0); 78 | filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); 79 | background-repeat: repeat-x; 80 | border-color: #245580; 81 | } 82 | .btn-primary:hover, 83 | .btn-primary:focus { 84 | background-color: #265a88; 85 | background-position: 0 -15px; 86 | } 87 | .btn-primary:active, 88 | .btn-primary.active { 89 | background-color: #265a88; 90 | border-color: #245580; 91 | } 92 | .btn-primary.disabled, 93 | .btn-primary:disabled, 94 | .btn-primary[disabled] { 95 | background-color: #265a88; 96 | background-image: none; 97 | } 98 | .btn-success { 99 | background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%); 100 | background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%); 101 | background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#419641)); 102 | background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%); 103 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0); 104 | filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); 105 | background-repeat: repeat-x; 106 | border-color: #3e8f3e; 107 | } 108 | .btn-success:hover, 109 | .btn-success:focus { 110 | background-color: #419641; 111 | background-position: 0 -15px; 112 | } 113 | .btn-success:active, 114 | .btn-success.active { 115 | background-color: #419641; 116 | border-color: #3e8f3e; 117 | } 118 | .btn-success.disabled, 119 | .btn-success:disabled, 120 | .btn-success[disabled] { 121 | background-color: #419641; 122 | background-image: none; 123 | } 124 | .btn-info { 125 | background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%); 126 | background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%); 127 | background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#2aabd2)); 128 | background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%); 129 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0); 130 | filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); 131 | background-repeat: repeat-x; 132 | border-color: #28a4c9; 133 | } 134 | .btn-info:hover, 135 | .btn-info:focus { 136 | background-color: #2aabd2; 137 | background-position: 0 -15px; 138 | } 139 | .btn-info:active, 140 | .btn-info.active { 141 | background-color: #2aabd2; 142 | border-color: #28a4c9; 143 | } 144 | .btn-info.disabled, 145 | .btn-info:disabled, 146 | .btn-info[disabled] { 147 | background-color: #2aabd2; 148 | background-image: none; 149 | } 150 | .btn-warning { 151 | background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%); 152 | background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%); 153 | background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#eb9316)); 154 | background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%); 155 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0); 156 | filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); 157 | background-repeat: repeat-x; 158 | border-color: #e38d13; 159 | } 160 | .btn-warning:hover, 161 | .btn-warning:focus { 162 | background-color: #eb9316; 163 | background-position: 0 -15px; 164 | } 165 | .btn-warning:active, 166 | .btn-warning.active { 167 | background-color: #eb9316; 168 | border-color: #e38d13; 169 | } 170 | .btn-warning.disabled, 171 | .btn-warning:disabled, 172 | .btn-warning[disabled] { 173 | background-color: #eb9316; 174 | background-image: none; 175 | } 176 | .btn-danger { 177 | background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%); 178 | background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%); 179 | background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c12e2a)); 180 | background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%); 181 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0); 182 | filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); 183 | background-repeat: repeat-x; 184 | border-color: #b92c28; 185 | } 186 | .btn-danger:hover, 187 | .btn-danger:focus { 188 | background-color: #c12e2a; 189 | background-position: 0 -15px; 190 | } 191 | .btn-danger:active, 192 | .btn-danger.active { 193 | background-color: #c12e2a; 194 | border-color: #b92c28; 195 | } 196 | .btn-danger.disabled, 197 | .btn-danger:disabled, 198 | .btn-danger[disabled] { 199 | background-color: #c12e2a; 200 | background-image: none; 201 | } 202 | .thumbnail, 203 | .img-thumbnail { 204 | -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075); 205 | box-shadow: 0 1px 2px rgba(0, 0, 0, .075); 206 | } 207 | .dropdown-menu > li > a:hover, 208 | .dropdown-menu > li > a:focus { 209 | background-color: #e8e8e8; 210 | background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); 211 | background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); 212 | background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8)); 213 | background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%); 214 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0); 215 | background-repeat: repeat-x; 216 | } 217 | .dropdown-menu > .active > a, 218 | .dropdown-menu > .active > a:hover, 219 | .dropdown-menu > .active > a:focus { 220 | background-color: #2e6da4; 221 | background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%); 222 | background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%); 223 | background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4)); 224 | background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%); 225 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0); 226 | background-repeat: repeat-x; 227 | } 228 | .navbar-default { 229 | background-image: -webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%); 230 | background-image: -o-linear-gradient(top, #fff 0%, #f8f8f8 100%); 231 | background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#f8f8f8)); 232 | background-image: linear-gradient(to bottom, #fff 0%, #f8f8f8 100%); 233 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0); 234 | filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); 235 | background-repeat: repeat-x; 236 | border-radius: 4px; 237 | -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075); 238 | box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075); 239 | } 240 | .navbar-default .navbar-nav > .open > a, 241 | .navbar-default .navbar-nav > .active > a { 242 | background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%); 243 | background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%); 244 | background-image: -webkit-gradient(linear, left top, left bottom, from(#dbdbdb), to(#e2e2e2)); 245 | background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%); 246 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0); 247 | background-repeat: repeat-x; 248 | -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075); 249 | box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075); 250 | } 251 | .navbar-brand, 252 | .navbar-nav > li > a { 253 | text-shadow: 0 1px 0 rgba(255, 255, 255, .25); 254 | } 255 | .navbar-inverse { 256 | background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%); 257 | background-image: -o-linear-gradient(top, #3c3c3c 0%, #222 100%); 258 | background-image: -webkit-gradient(linear, left top, left bottom, from(#3c3c3c), to(#222)); 259 | background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%); 260 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0); 261 | filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); 262 | background-repeat: repeat-x; 263 | } 264 | .navbar-inverse .navbar-nav > .open > a, 265 | .navbar-inverse .navbar-nav > .active > a { 266 | background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%); 267 | background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%); 268 | background-image: -webkit-gradient(linear, left top, left bottom, from(#080808), to(#0f0f0f)); 269 | background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%); 270 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0); 271 | background-repeat: repeat-x; 272 | -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25); 273 | box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25); 274 | } 275 | .navbar-inverse .navbar-brand, 276 | .navbar-inverse .navbar-nav > li > a { 277 | text-shadow: 0 -1px 0 rgba(0, 0, 0, .25); 278 | } 279 | .navbar-static-top, 280 | .navbar-fixed-top, 281 | .navbar-fixed-bottom { 282 | border-radius: 0; 283 | } 284 | @media (max-width: 767px) { 285 | .navbar .navbar-nav .open .dropdown-menu > .active > a, 286 | .navbar .navbar-nav .open .dropdown-menu > .active > a:hover, 287 | .navbar .navbar-nav .open .dropdown-menu > .active > a:focus { 288 | color: #fff; 289 | background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%); 290 | background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%); 291 | background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4)); 292 | background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%); 293 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0); 294 | background-repeat: repeat-x; 295 | } 296 | } 297 | .alert { 298 | text-shadow: 0 1px 0 rgba(255, 255, 255, .2); 299 | -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05); 300 | box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05); 301 | } 302 | .alert-success { 303 | background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%); 304 | background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%); 305 | background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#c8e5bc)); 306 | background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%); 307 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0); 308 | background-repeat: repeat-x; 309 | border-color: #b2dba1; 310 | } 311 | .alert-info { 312 | background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%); 313 | background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%); 314 | background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#b9def0)); 315 | background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%); 316 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0); 317 | background-repeat: repeat-x; 318 | border-color: #9acfea; 319 | } 320 | .alert-warning { 321 | background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%); 322 | background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%); 323 | background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#f8efc0)); 324 | background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%); 325 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0); 326 | background-repeat: repeat-x; 327 | border-color: #f5e79e; 328 | } 329 | .alert-danger { 330 | background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%); 331 | background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%); 332 | background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#e7c3c3)); 333 | background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%); 334 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0); 335 | background-repeat: repeat-x; 336 | border-color: #dca7a7; 337 | } 338 | .progress { 339 | background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%); 340 | background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%); 341 | background-image: -webkit-gradient(linear, left top, left bottom, from(#ebebeb), to(#f5f5f5)); 342 | background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%); 343 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0); 344 | background-repeat: repeat-x; 345 | } 346 | .progress-bar { 347 | background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%); 348 | background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%); 349 | background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#286090)); 350 | background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%); 351 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0); 352 | background-repeat: repeat-x; 353 | } 354 | .progress-bar-success { 355 | background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%); 356 | background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%); 357 | background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#449d44)); 358 | background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%); 359 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0); 360 | background-repeat: repeat-x; 361 | } 362 | .progress-bar-info { 363 | background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%); 364 | background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%); 365 | background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#31b0d5)); 366 | background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%); 367 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0); 368 | background-repeat: repeat-x; 369 | } 370 | .progress-bar-warning { 371 | background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%); 372 | background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%); 373 | background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#ec971f)); 374 | background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%); 375 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0); 376 | background-repeat: repeat-x; 377 | } 378 | .progress-bar-danger { 379 | background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%); 380 | background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%); 381 | background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c9302c)); 382 | background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%); 383 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0); 384 | background-repeat: repeat-x; 385 | } 386 | .progress-bar-striped { 387 | background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); 388 | background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); 389 | background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); 390 | } 391 | .list-group { 392 | border-radius: 4px; 393 | -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075); 394 | box-shadow: 0 1px 2px rgba(0, 0, 0, .075); 395 | } 396 | .list-group-item.active, 397 | .list-group-item.active:hover, 398 | .list-group-item.active:focus { 399 | text-shadow: 0 -1px 0 #286090; 400 | background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%); 401 | background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%); 402 | background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2b669a)); 403 | background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%); 404 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0); 405 | background-repeat: repeat-x; 406 | border-color: #2b669a; 407 | } 408 | .list-group-item.active .badge, 409 | .list-group-item.active:hover .badge, 410 | .list-group-item.active:focus .badge { 411 | text-shadow: none; 412 | } 413 | .panel { 414 | -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .05); 415 | box-shadow: 0 1px 2px rgba(0, 0, 0, .05); 416 | } 417 | .panel-default > .panel-heading { 418 | background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); 419 | background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); 420 | background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8)); 421 | background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%); 422 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0); 423 | background-repeat: repeat-x; 424 | } 425 | .panel-primary > .panel-heading { 426 | background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%); 427 | background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%); 428 | background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4)); 429 | background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%); 430 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0); 431 | background-repeat: repeat-x; 432 | } 433 | .panel-success > .panel-heading { 434 | background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%); 435 | background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%); 436 | background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#d0e9c6)); 437 | background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%); 438 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0); 439 | background-repeat: repeat-x; 440 | } 441 | .panel-info > .panel-heading { 442 | background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%); 443 | background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%); 444 | background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#c4e3f3)); 445 | background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%); 446 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0); 447 | background-repeat: repeat-x; 448 | } 449 | .panel-warning > .panel-heading { 450 | background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%); 451 | background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%); 452 | background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#faf2cc)); 453 | background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%); 454 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0); 455 | background-repeat: repeat-x; 456 | } 457 | .panel-danger > .panel-heading { 458 | background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%); 459 | background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%); 460 | background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#ebcccc)); 461 | background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%); 462 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0); 463 | background-repeat: repeat-x; 464 | } 465 | .well { 466 | background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%); 467 | background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%); 468 | background-image: -webkit-gradient(linear, left top, left bottom, from(#e8e8e8), to(#f5f5f5)); 469 | background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%); 470 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0); 471 | background-repeat: repeat-x; 472 | border-color: #dcdcdc; 473 | -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1); 474 | box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1); 475 | } 476 | /*# sourceMappingURL=bootstrap-theme.css.map */ 477 | -------------------------------------------------------------------------------- /src/main/webapp/resources/bootstrap/css/bootstrap-theme.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap v3.3.2 (http://getbootstrap.com) 3 | * Copyright 2011-2015 Twitter, Inc. 4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 5 | */.btn-danger,.btn-default,.btn-info,.btn-primary,.btn-success,.btn-warning{text-shadow:0 -1px 0 rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.btn-danger.active,.btn-danger:active,.btn-default.active,.btn-default:active,.btn-info.active,.btn-info:active,.btn-primary.active,.btn-primary:active,.btn-success.active,.btn-success:active,.btn-warning.active,.btn-warning:active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-danger .badge,.btn-default .badge,.btn-info .badge,.btn-primary .badge,.btn-success .badge,.btn-warning .badge{text-shadow:none}.btn.active,.btn:active{background-image:none}.btn-default{text-shadow:0 1px 0 #fff;background-image:-webkit-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-o-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e0e0e0));background-image:linear-gradient(to bottom,#fff 0,#e0e0e0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#dbdbdb;border-color:#ccc}.btn-default:focus,.btn-default:hover{background-color:#e0e0e0;background-position:0 -15px}.btn-default.active,.btn-default:active{background-color:#e0e0e0;border-color:#dbdbdb}.btn-default.disabled,.btn-default:disabled,.btn-default[disabled]{background-color:#e0e0e0;background-image:none}.btn-primary{background-image:-webkit-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-o-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#265a88));background-image:linear-gradient(to bottom,#337ab7 0,#265a88 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#245580}.btn-primary:focus,.btn-primary:hover{background-color:#265a88;background-position:0 -15px}.btn-primary.active,.btn-primary:active{background-color:#265a88;border-color:#245580}.btn-primary.disabled,.btn-primary:disabled,.btn-primary[disabled]{background-color:#265a88;background-image:none}.btn-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#419641));background-image:linear-gradient(to bottom,#5cb85c 0,#419641 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#3e8f3e}.btn-success:focus,.btn-success:hover{background-color:#419641;background-position:0 -15px}.btn-success.active,.btn-success:active{background-color:#419641;border-color:#3e8f3e}.btn-success.disabled,.btn-success:disabled,.btn-success[disabled]{background-color:#419641;background-image:none}.btn-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#2aabd2));background-image:linear-gradient(to bottom,#5bc0de 0,#2aabd2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#28a4c9}.btn-info:focus,.btn-info:hover{background-color:#2aabd2;background-position:0 -15px}.btn-info.active,.btn-info:active{background-color:#2aabd2;border-color:#28a4c9}.btn-info.disabled,.btn-info:disabled,.btn-info[disabled]{background-color:#2aabd2;background-image:none}.btn-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#eb9316));background-image:linear-gradient(to bottom,#f0ad4e 0,#eb9316 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#e38d13}.btn-warning:focus,.btn-warning:hover{background-color:#eb9316;background-position:0 -15px}.btn-warning.active,.btn-warning:active{background-color:#eb9316;border-color:#e38d13}.btn-warning.disabled,.btn-warning:disabled,.btn-warning[disabled]{background-color:#eb9316;background-image:none}.btn-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c12e2a));background-image:linear-gradient(to bottom,#d9534f 0,#c12e2a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#b92c28}.btn-danger:focus,.btn-danger:hover{background-color:#c12e2a;background-position:0 -15px}.btn-danger.active,.btn-danger:active{background-color:#c12e2a;border-color:#b92c28}.btn-danger.disabled,.btn-danger:disabled,.btn-danger[disabled]{background-color:#c12e2a;background-image:none}.img-thumbnail,.thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{background-color:#e8e8e8;background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-color:#2e6da4;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.navbar-default{background-image:-webkit-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-o-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#f8f8f8));background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075)}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.open>a{background-image:-webkit-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-o-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dbdbdb),to(#e2e2e2));background-image:linear-gradient(to bottom,#dbdbdb 0,#e2e2e2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.075);box-shadow:inset 0 3px 9px rgba(0,0,0,.075)}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.navbar-inverse{background-image:-webkit-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-o-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#3c3c3c),to(#222));background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.open>a{background-image:-webkit-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-o-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#080808),to(#0f0f0f));background-image:linear-gradient(to bottom,#080808 0,#0f0f0f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.25);box-shadow:inset 0 3px 9px rgba(0,0,0,.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.navbar-fixed-bottom,.navbar-fixed-top,.navbar-static-top{border-radius:0}@media (max-width:767px){.navbar .navbar-nav .open .dropdown-menu>.active>a,.navbar .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}}.alert{text-shadow:0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.alert-success{background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#c8e5bc));background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);background-repeat:repeat-x;border-color:#b2dba1}.alert-info{background-image:-webkit-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#b9def0));background-image:linear-gradient(to bottom,#d9edf7 0,#b9def0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);background-repeat:repeat-x;border-color:#9acfea}.alert-warning{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#f8efc0));background-image:linear-gradient(to bottom,#fcf8e3 0,#f8efc0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);background-repeat:repeat-x;border-color:#f5e79e}.alert-danger{background-image:-webkit-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-o-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#e7c3c3));background-image:linear-gradient(to bottom,#f2dede 0,#e7c3c3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);background-repeat:repeat-x;border-color:#dca7a7}.progress{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#f5f5f5));background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x}.progress-bar{background-image:-webkit-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-o-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#286090));background-image:linear-gradient(to bottom,#337ab7 0,#286090 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);background-repeat:repeat-x}.progress-bar-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#449d44));background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);background-repeat:repeat-x}.progress-bar-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#31b0d5));background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);background-repeat:repeat-x}.progress-bar-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#ec971f));background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);background-repeat:repeat-x}.progress-bar-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c9302c));background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);background-repeat:repeat-x}.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{text-shadow:0 -1px 0 #286090;background-image:-webkit-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2b669a));background-image:linear-gradient(to bottom,#337ab7 0,#2b669a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);background-repeat:repeat-x;border-color:#2b669a}.list-group-item.active .badge,.list-group-item.active:focus .badge,.list-group-item.active:hover .badge{text-shadow:none}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.panel-default>.panel-heading{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.panel-success>.panel-heading{background-image:-webkit-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#d0e9c6));background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);background-repeat:repeat-x}.panel-info>.panel-heading{background-image:-webkit-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#c4e3f3));background-image:linear-gradient(to bottom,#d9edf7 0,#c4e3f3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);background-repeat:repeat-x}.panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#faf2cc));background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);background-repeat:repeat-x}.panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-o-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#ebcccc));background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);background-repeat:repeat-x}.well{background-image:-webkit-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#e8e8e8),to(#f5f5f5));background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x;border-color:#dcdcdc;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1)} -------------------------------------------------------------------------------- /src/main/webapp/resources/bootstrap/css/my_design.css: -------------------------------------------------------------------------------- 1 | 2 | /* centered columns styles */ 3 | .row-centered { 4 | text-align:center; 5 | } 6 | .col-centered { 7 | display:inline-block; 8 | float:none; 9 | /* reset the text-align */ 10 | text-align:left; 11 | /* inline-block space fix */ 12 | margin-right:-4px; 13 | } 14 | 15 | 16 | 17 | #nav_header{ 18 | color: #8FB58F; 19 | font-size:24px; 20 | } 21 | 22 | .selected{ 23 | background-color: #9dff9d; 24 | } 25 | 26 | fieldset.training_border{ 27 | border: 2px solid green; 28 | padding: 5px; 29 | } 30 | fieldset.training_border > legend { 31 | width:inherit; /* Or auto */ 32 | padding:2px; /* To give a bit of padding on the left and right */ 33 | border:none; 34 | margin:5px; 35 | } 36 | 37 | #user_suggestion{ 38 | border: 2px solid #c0c0c0; 39 | border-top-left-radius: 10px; 40 | border-top-right-radius: 10px; 41 | padding: 5px; 42 | margin-bottom: -5px; 43 | color: #eaeaea; 44 | background-color: green; 45 | 46 | } 47 | #user_example{ 48 | border: 2px solid #c0c0c0; 49 | border-bottom-left-radius: 10px; 50 | border-bottom-right-radius: 10px; 51 | padding:5px; 52 | margin-top:-15px; 53 | background-color: #E1F7D8; 54 | color: #008000; 55 | font-style: italic; 56 | } 57 | 58 | #loginModal{ 59 | color: black; 60 | background-color: #008000; 61 | 62 | } 63 | 64 | .modal-content{ 65 | background-color: #d9ffd9; 66 | 67 | } 68 | 69 | .dropdown-menu{ 70 | background-color: #d4d4d4; 71 | border:1px solid green; 72 | } 73 | 74 | .navbar{ 75 | border-bottom: 1px solid green; 76 | } 77 | 78 | .accordion-toggle{ 79 | color: #99A8A1; 80 | font-size: 14px; 81 | font-weight: bold; 82 | } 83 | 84 | 85 | 86 | -------------------------------------------------------------------------------- /src/main/webapp/resources/bootstrap/css/styles.css: -------------------------------------------------------------------------------- 1 | /* bootstrap 3 helpers */ 2 | 3 | .navbar-form input, .form-inline input { 4 | width:auto; 5 | } 6 | 7 | /* end */ 8 | 9 | /* custom theme + Bootstrap resets */ 10 | @import url('http://fonts.googleapis.com/css?family=Open+Sans:300,400'); 11 | 12 | header { 13 | min-height:100px; 14 | margin-bottom:5px; 15 | } 16 | 17 | /* only apply sticky columns on wider screens */ 18 | @media (min-width: 1200px) { 19 | #sidebar { 20 | margin-left:15px; 21 | } 22 | 23 | #content { 24 | padding-right:15px; 25 | } 26 | 27 | #sidebar.affix-top { 28 | position: static; 29 | } 30 | 31 | #sidebar.affix { 32 | position: fixed !important; 33 | top: 20px; 34 | width:200px; 35 | } 36 | 37 | #midCol.affix-top { 38 | position: static; 39 | } 40 | 41 | #midCol.affix-bottom { 42 | padding-top:0; 43 | } 44 | 45 | #midCol.affix { 46 | position:fixed !important; 47 | top: 20px; 48 | width:292px; 49 | } 50 | } 51 | 52 | .affix { 53 | position:static; 54 | } 55 | 56 | body { 57 | font-family: 'Open Sans',Arial,Helvetica,Sans-Serif; 58 | font-weight:300; 59 | color:#5C5555; 60 | background-color: #eeeeee; 61 | } 62 | 63 | a,a:hover { 64 | color:#CCD0A6; 65 | text-decoration:none; 66 | } 67 | 68 | .highlight-bk { 69 | background-color:#77CCDD; 70 | padding:1px; 71 | width:100%; 72 | } 73 | 74 | .highlight { 75 | color:#77CCDD; 76 | } 77 | 78 | h3.highlight { 79 | padding-top:13px; 80 | padding-bottom:14px; 81 | border-bottom:2px solid #77CCDD; 82 | } 83 | 84 | .navbar { 85 | background-color:#00a854; 86 | color:#ffffff; 87 | border-radius:0; 88 | font-size:18px; 89 | } 90 | .navbar-nav > li > a { 91 | color:#fff; 92 | padding-left:20px; 93 | padding-right:20px; 94 | border-left:1px solid #00b700; 95 | } 96 | .navbar-nav > li:last-child > a { 97 | border-right:1px solid #00b700; 98 | } 99 | 100 | .navbar-nav li a:hover { 101 | background-color:#008000; 102 | } 103 | 104 | .navbar-nav > .open > a, .navbar-nav > .open > a:hover, .navbar-nav > .open > a:focus { 105 | color: #000; 106 | opacity:.9; 107 | } 108 | 109 | .navbar-brand { 110 | color:#fff; 111 | } 112 | 113 | .accordion-group { 114 | border-width:0; 115 | } 116 | 117 | .dropdown-menu { 118 | min-width: 250px; 119 | } 120 | 121 | .caret { 122 | color:#fff; 123 | } 124 | 125 | .navbar-toggle { 126 | color:#fff; 127 | border-width:0; 128 | } 129 | 130 | .navbar-toggle:hover { 131 | background-color:#008000; 132 | } 133 | 134 | .panel,.panel-heading { 135 | border-radius:0; 136 | border-width:0; 137 | -webkit-box-shadow: 0 3px 3px rgba(0, 0, 0, 0.09); 138 | box-shadow: 0 3px 3px rgba(0, 0, 0, 0.09); 139 | } 140 | 141 | .thumbnail { 142 | margin-bottom:8px; 143 | border-radius:0; 144 | } 145 | 146 | .well { 147 | border-radius:0; 148 | } 149 | 150 | .accordion-heading .accordion-toggle, .accordion-inner, .nav-stacked li > a { 151 | padding-left:1px; 152 | } 153 | 154 | footer { 155 | height:50px; 156 | background-color:#dfdfdf; 157 | color:#888; 158 | margin-top:20px; 159 | } 160 | 161 | @media (min-width: 992px) { 162 | .no-gutter.row > div[class*='col-md'] { 163 | padding-left: 0; 164 | padding-right: 0; 165 | } 166 | .no-gutter.row > .col-md-12 { 167 | width: 99.99999999999999%; 168 | *width: 99.93055555555554%; 169 | } 170 | .no-gutter.row .col-md-11 { 171 | width: 91.66666666666666%; 172 | *width: 91.59722222222221%; 173 | } 174 | .no-gutter.row > .col-md-10 { 175 | width: 83.33333333333331%; 176 | *width: 83.26388888888887%; 177 | } 178 | .no-gutter.row > .col-md-9 { 179 | width: 74.99999999999999%; 180 | *width: 74.93055555555554%; 181 | } 182 | .no-gutter.row > .col-md-8 { 183 | width: 66.66666666666666%; 184 | *width: 66.59722222222221%; 185 | } 186 | .no-gutter.row > .col-md-7 { 187 | width: 58.33333333333333%; 188 | *width: 58.263888888888886%; 189 | } 190 | .no-gutter.row > .col-md-6 { 191 | width: 49.99999999999999%; 192 | } 193 | .no-gutter.row > .col-md-4 { 194 | width: 33.33333333333333%; 195 | } 196 | .no-gutter.row > .col-md-3 { 197 | width: 24.999999999999996%; 198 | *width: 24.930555555555554%; 199 | } 200 | .no-gutter.row > .col-md-2 { 201 | width: 16.666666666666664%; 202 | *width: 16.59722222222222%; 203 | } 204 | .no-gutter.row > .col-md-1 { 205 | width: 8.333333333333332%; 206 | *width: 8.263888888888888%; 207 | } 208 | } 209 | 210 | .navbar-right{ 211 | font-size: 14px; 212 | } 213 | 214 | .nav>li>a:focus, .nav>li>a:hover { 215 | text-decoration: none; 216 | background-color: #28b949; 217 | } 218 | 219 | #sidebar{ 220 | background-color: #009f50; 221 | } 222 | 223 | /* end custom theme */ -------------------------------------------------------------------------------- /src/main/webapp/resources/bootstrap/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sraashis/diseaseprediction/c85fe48e2ac4115f7c769e3d1b560ab7855fc6e8/src/main/webapp/resources/bootstrap/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /src/main/webapp/resources/bootstrap/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sraashis/diseaseprediction/c85fe48e2ac4115f7c769e3d1b560ab7855fc6e8/src/main/webapp/resources/bootstrap/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /src/main/webapp/resources/bootstrap/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sraashis/diseaseprediction/c85fe48e2ac4115f7c769e3d1b560ab7855fc6e8/src/main/webapp/resources/bootstrap/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /src/main/webapp/resources/bootstrap/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sraashis/diseaseprediction/c85fe48e2ac4115f7c769e3d1b560ab7855fc6e8/src/main/webapp/resources/bootstrap/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /src/main/webapp/resources/bootstrap/js/bootstrap.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap v3.3.2 (http://getbootstrap.com) 3 | * Copyright 2011-2015 Twitter, Inc. 4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 5 | */ 6 | if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher")}(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}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",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(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.2",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a(f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.2",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")&&(c.prop("checked")&&this.$element.hasClass("active")?a=!1:b.find(".active").removeClass("active")),a&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active"));a&&this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),c.preventDefault()}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.2",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));return a>this.$items.length-1||0>a?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&"show"==b&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a(this.options.trigger).filter('[href="#'+b.id+'"], [data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.2",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0,trigger:'[data-toggle="collapse"]'},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":a.extend({},e.data(),{trigger:this});c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){b&&3===b.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=c(d),f={relatedTarget:this};e.hasClass("open")&&(e.trigger(b=a.Event("hide.bs.dropdown",f)),b.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger("hidden.bs.dropdown",f)))}))}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.2",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('