/branches/v3/impl/conf/WEB-INF/struts/struts-json-ws.xml |
---|
44,13 → 44,15 |
<action path="/startGenerateChaveApps" forward="page.gen.chave.apps.password.pae"/> |
<action path="/ws-authenticate" forward="/authenticateWidget.do?dispatch=executeService&serviceJson=authenticateApp"/> |
<!--SERVICOS SEGUROS AO NIVEL DO BERSERK--> |
<action path="/secure/ws-login-challenge" forward="/user/jsonModel.do?dispatch=executeSimpleServiceOkFail&serviceJson=wsLoginMobileChallenge"/> |
<action path="/secure/ws-student-list" forward="/user/jsonModel.do?dispatch=executeService&serviceJson=wsListStudents"/> |
<action path="/secure/ws-teacher-list" forward="/user/jsonModel.do?dispatch=executeService&serviceJson=wsListTeachers"/> |
<action path="/secure/ws-coordinators-list" forward="/user/jsonModel.do?dispatch=executeService&serviceJson=wsListCoordinators"/> |
<!--SERVICOS ABERTOS POR ENQUANTO--> |
<!--<action path="/ws-units-report-list" forward="/json/coursesServices.do?dispatch=executeService&serviceJson=getCourseUnitsEvaluations"/>--> |
<action path="/ws-course-pedagogic-results-list" forward="/json/coursesServices.do?dispatch=executeService&serviceJson=findPedagogicReport4Period"/> |
<action path="/ws-units-dtp-stats" forward="/json/coursesServices.do?dispatch=executeService&serviceJson=getCourseUnitDtpStats"/> |
/branches/v3/impl/conf/WEB-INF/struts/struts-pae.xml |
---|
31,7 → 31,7 |
<action path="/WelcomePedagogicSurvey" forward="page.welcome.pae"/> |
<action path="/user/ChangePassword" forward="page.change.password.pae"/> |
<action path="/requestChangePassword" forward="page.request.change.password.pae"/> |
<action path="/nofilter/requestChangePassword" forward="page.request.change.password.pae"/> |
<action path="/user/changeMyPassword" |
type="pt.estgp.estgweb.web.controllers.authenticate.AuthenticateController" |
name="EmptyForm" |
42,7 → 42,7 |
<forward name="success" path="page.pae.separators.home"/> |
<forward name="fail.change.pass" path="page.change.password.pae"/> |
</action> |
<action path="/requestChangeMyPassword" |
<action path="/auth/requestChangeMyPassword" |
type="pt.estgp.estgweb.web.controllers.authenticate.AuthenticateController" |
name="EmptyForm" |
scope="request" |
/branches/v3/impl/conf/WEB-INF/web.xml |
---|
88,7 → 88,8 |
/js, |
/layout/themes, |
/wsjson/api, |
/wsjson/api/app/ |
/wsjson/api/app/, |
/auth/ |
</param-value> |
</init-param> |
<init-param> |
/branches/v3/impl/conf/berserk/sd.xml |
---|
74,6 → 74,18 |
<chain name="MobileApps"/> |
</filterChains> |
</service> |
<service> |
<name>WSAPIListCoordinators</name> |
<implementationClass>pt.estgp.estgweb.services.profile.ListUsersService</implementationClass> |
<description>Authenticates a User</description> |
<isTransactional>true</isTransactional> |
<defaultMethod>listCoordinatorTeachersService</defaultMethod> |
<filterChains> |
<chain name="Logger"/> |
<chain name="Session"/> |
<chain name="MobileApps"/> |
</filterChains> |
</service> |
<service> |
<name>AuthenticateApp</name> |
/branches/v3/impl/src/java/pt/estgp/estgweb/utils/documentBuilder/ExtensibleDocObject.java |
---|
New file |
0,0 → 1,20 |
package pt.estgp.estgweb.utils.documentBuilder; |
import pt.estgp.estgweb.utils.ClassUtils; |
import java.util.List; |
/** |
* Created by jorgemachado on 07/11/17. |
*/ |
public class ExtensibleDocObject |
{ |
public List<String> getAllSuperClasses() |
{ |
return ClassUtils.getAllSuperClasses(this.getClass()); |
} |
public void setAllSuperClasses(List<String> superclasses) |
{ |
} |
} |
/branches/v3/impl/src/java/pt/estgp/estgweb/utils/documentBuilder/DocumentSection.java |
---|
6,10 → 6,10 |
/** |
* Created by jorgemachado on 11/10/17. |
*/ |
public class DocumentSection |
public class DocumentSection extends SectionContainer |
{ |
String title = ""; |
List<DocumentSection> subSections = new ArrayList<DocumentSection>(); |
List<DocComponent> components = new ArrayList<DocComponent>(); |
public DocumentSection() { |
27,14 → 27,7 |
this.title = title; |
} |
public List<DocumentSection> getSubSections() { |
return subSections; |
} |
public void setSubSections(List<DocumentSection> subSections) { |
this.subSections = subSections; |
} |
public List<DocComponent> getComponents() { |
return components; |
} |
43,19 → 36,8 |
this.components = components; |
} |
public DocumentSection findSubSection(Class sectionClass) |
{ |
if(getSubSections() != null) |
for(DocumentSection section: getSubSections()) |
{ |
if(section.getClass().equals(sectionClass)) |
{ |
return section; |
} |
} |
return null; |
} |
public DocComponent findDocComponent(Class compClass) |
{ |
if(getComponents() != null) |
/branches/v3/impl/src/java/pt/estgp/estgweb/utils/documentBuilder/SectionContainer.java |
---|
New file |
0,0 → 1,36 |
package pt.estgp.estgweb.utils.documentBuilder; |
import java.util.ArrayList; |
import java.util.List; |
/** |
* Created by jorgemachado on 07/11/17. |
*/ |
public class SectionContainer extends ExtensibleDocObject |
{ |
List<DocumentSection> sections = new ArrayList<DocumentSection>(); |
public List<DocumentSection> getSections() { |
return sections; |
} |
public void setSections(List<DocumentSection> sections) { |
this.sections = sections; |
} |
public DocumentSection findSection(Class sectionClass) |
{ |
if(getSections() != null) |
for(DocumentSection section: getSections()) |
{ |
if(section.getClass().equals(sectionClass)) |
{ |
return section; |
} |
} |
return null; |
} |
} |
/branches/v3/impl/src/java/pt/estgp/estgweb/utils/documentBuilder/DocComponent.java |
---|
3,5 → 3,5 |
/** |
* Created by jorgemachado on 11/10/17. |
*/ |
public class DocComponent { |
public class DocComponent extends ExtensibleDocObject { |
} |
/branches/v3/impl/src/java/pt/estgp/estgweb/utils/documentBuilder/Document.java |
---|
5,27 → 5,18 |
import org.json.JSONException; |
import org.json.JSONObject; |
import pt.estgp.estgweb.domain.utils.JsonView; |
import pt.estgp.estgweb.services.courses.coursereport.documentmodel.ReportCourseDocument; |
import pt.estgp.estgweb.services.courses.coursereport.documentmodel.CourseReportDocument; |
import java.util.ArrayList; |
import java.util.Date; |
import java.util.List; |
/** |
* Created by jorgemachado on 31/10/17. |
*/ |
public class Document implements JsonView |
public class Document extends SectionContainer implements JsonView |
{ |
List<DocumentSection> sections = new ArrayList<DocumentSection>(); |
public List<DocumentSection> getSections() { |
return sections; |
} |
public void setSections(List<DocumentSection> sections) { |
this.sections = sections; |
} |
private static Genson gensonGenericLoad; |
static{ |
gensonGenericLoad = new GensonBuilder() |
40,9 → 31,9 |
.create(); |
} |
public static ReportCourseDocument fromJson(String json) |
public static CourseReportDocument fromJson(String json) |
{ |
return gensonGenericLoad.deserialize(json,ReportCourseDocument.class); |
return gensonGenericLoad.deserialize(json,CourseReportDocument.class); |
} |
/branches/v3/impl/src/java/pt/estgp/estgweb/utils/Globals.java |
---|
447,8 → 447,8 |
public static final String ROLE_INVITED = "invited"; |
public static final String SYSTEM_WSJSON_SERVICE_COURSE_REPORT_RESULTS = ConfigProperties.getProperty("system.wsjson.service.course.report.quest.result.api"); |
public static final String SYSTEM_WSJSON_SERVICE_COURSE_UNITS_EVALUATION = ConfigProperties.getProperty("system.wsjson.service.course.units.reports.api"); |
public static final String SYSTEM_WSJSON_SERVICE_COURSE_QUESTIONARIOS_REPORT_RESULTS = ConfigProperties.getProperty("system.wsjson.service.course.report.quest.result.api"); |
public static final String SYSTEM_WSJSON_SERVICE_COURSE_UNITS_EVALUATION_REPORT = ConfigProperties.getProperty("system.wsjson.service.course.units.reports.api"); |
public static final String SYSTEM_WSJSON_SERVICE_COURSE_UNITS_DTP_STATS = ConfigProperties.getProperty("system.wsjson.service.course.units.dtp.stats.api"); |
/branches/v3/impl/src/java/pt/estgp/estgweb/services/courses/CourseReportServices.java |
---|
1,6 → 1,7 |
package pt.estgp.estgweb.services.courses; |
import jomm.dao.impl.AbstractDao; |
import jomm.utils.StreamsUtils; |
import org.apache.log4j.Logger; |
import org.json.JSONArray; |
32,6 → 33,7 |
import java.io.IOException; |
import java.io.InputStream; |
import java.net.URL; |
import java.net.URLConnection; |
import java.util.*; |
/** |
52,52 → 54,8 |
/****************************************************************************/ |
/** |
* Gera uma tabela de estatisticas dos DTP recorrendo ao servico WS de |
* load de tabelas DTP, caso o serviço nao devolva unidades são criadas novas |
* com os valores a falso. |
* |
* @param courseCode |
* @param year |
* @return UnitsDtpTable |
* @throws IOException |
* @throws JSONException |
*/ |
public UnitsDtpTable updateDtpStatsTable4Course(ReportCourseDocument reportCourseDocument, String courseCode, String year) throws IOException, JSONException |
{ |
ReportsUcSummarySection reportsUcSummarySection = (ReportsUcSummarySection) reportCourseDocument.findDocumentSection(ReportsUcSummarySection.class); |
UnitsDtpTable unitsDtpTable = (UnitsDtpTable) reportsUcSummarySection.findDocComponent(UnitsDtpTable.class); |
UnitDtpSemester semester1 = new UnitDtpSemester(); |
UnitDtpSemester semester2 = new UnitDtpSemester(); |
unitsDtpTable.setSemester1(semester1); |
unitsDtpTable.setSemester2(semester2); |
List<CourseUnit> units = DaoFactory.getCourseUnitDaoImpl().loadByCourseSiges(courseCode, year); |
String json = loadCourseUnitDtpStats(courseCode,year); |
JSONObject response = new JSONObject(json); |
JSONArray stats = (JSONArray) response.get("dtpstats"); |
CourseUnitDtpStat[] statsLoaded = CourseUnitDtpStat.fromJson(stats); |
for(CourseUnit cu :units) |
{ |
CourseUnitDtpStat statFound = CourseReportUtils.findCourseUnitDtpStat(statsLoaded, (CourseUnitImpl) cu); |
if(statFound == null) |
{ |
statFound = CourseReportUtils.createCourseUnitDtpStat(cu); |
} |
if(((CourseUnitImpl) cu).getSemestreAbsolutoS1S2().equals("S1")) |
semester1.getCourseUnitDtpStats().add(statFound); |
else |
semester2.getCourseUnitDtpStats().add(statFound); |
} |
return unitsDtpTable; |
} |
/** |
* |
* @param courseCode |
106,9 → 64,9 |
* @throws IOException |
* @throws JSONException |
*/ |
public ReportCourseDocument createNewCourseReportDocument(String courseCode,String year) throws IOException, JSONException |
public CourseReportDocument createNewCourseReportDocument(String courseCode,String year) throws IOException, JSONException |
{ |
ReportCourseDocument reportCourseDocument = new ReportCourseDocument(); |
CourseReportDocument reportCourseDocument = new CourseReportDocument(); |
reportCourseDocument.init(); |
133,9 → 91,9 |
return reportCourseDocument; |
} |
public SurveysResultsSection updateSurveysDataTables(String courseCode, String year, ReportCourseDocument reportCourseDocument) throws IOException, JSONException { |
public SurveysResultsSection updateSurveysDataTables(String courseCode, String year, CourseReportDocument reportCourseDocument) throws IOException, JSONException { |
SurveysSection surveysSection = (SurveysSection) reportCourseDocument.findDocumentSection(SurveysSection.class); |
SurveysResultsSection surveysResultsSection = (SurveysResultsSection) surveysSection.findSubSection(SurveysResultsSection.class); |
SurveysResultsSection surveysResultsSection = (SurveysResultsSection) surveysSection.findSection(SurveysResultsSection.class); |
QuestionariosDataTableComponent dataTableComponentS1 = (QuestionariosDataTableComponent) surveysResultsSection.getComponents().get(0); |
QuestionariosDataTableComponent dataTableComponentS2 = (QuestionariosDataTableComponent) surveysResultsSection.getComponents().get(1); |
154,7 → 112,7 |
* @param reportCourseDocument |
* @return UnitsLearningResultsTable |
*/ |
public UnitsLearningResultsTable updateCleanLearningResultsFromCourseUnitsSections(ReportCourseDocument reportCourseDocument) |
public UnitsLearningResultsTable updateCleanLearningResultsFromCourseUnitsSections(CourseReportDocument reportCourseDocument) |
{ |
CourseUnitsReportsSection unitReportsSection = (CourseUnitsReportsSection) reportCourseDocument.findDocumentSection(CourseUnitsReportsSection.class); |
163,7 → 121,7 |
Map<Integer,UnitsLearningResultYear> anosPlano = new HashMap<Integer, UnitsLearningResultYear>(); |
Map<String,UnitsLearningResultSemester> anoSemestre = new HashMap<String, UnitsLearningResultSemester>(); |
for(DocumentSection subSection : unitReportsSection.getSubSections()) |
for(DocumentSection subSection : unitReportsSection.getSections()) |
{ |
CourseUnitSection unitSection = (CourseUnitSection) subSection; |
int anoPlano = unitSection.getAnoPlano(); |
345,6 → 303,62 |
/** |
* Gera uma tabela de estatisticas dos DTP recorrendo ao servico WS de |
* load de tabelas DTP, caso o serviço nao devolva unidades são criadas novas |
* com os valores a falso. |
* |
* @param courseCode |
* @param year |
* @return UnitsDtpTable |
* @throws IOException |
* @throws JSONException |
*/ |
public UnitsDtpTable updateDtpStatsTable4Course(CourseReportDocument reportCourseDocument, String courseCode, String year) throws IOException, JSONException |
{ |
ReportsUcSummarySection reportsUcSummarySection = (ReportsUcSummarySection) reportCourseDocument.findDocumentSection(ReportsUcSummarySection.class); |
UnitsDtpTable unitsDtpTable = (UnitsDtpTable) reportsUcSummarySection.findDocComponent(UnitsDtpTable.class); |
UnitDtpSemester semester1 = new UnitDtpSemester(); |
UnitDtpSemester semester2 = new UnitDtpSemester(); |
unitsDtpTable.setSemester1(semester1); |
unitsDtpTable.setSemester2(semester2); |
List<CourseUnit> units = DaoFactory.getCourseUnitDaoImpl().loadByCourseSiges(courseCode, year); |
CourseUnitDtpStat[] statsLoaded; |
try |
{ |
String json = loadCourseUnitDtpStats(courseCode,year); |
JSONObject response = new JSONObject(json); |
JSONArray stats = (JSONArray) response.get("dtpstats"); |
statsLoaded = CourseUnitDtpStat.fromJson(stats); |
} |
catch(Exception e) |
{ |
logger.error(e,e); |
statsLoaded = new CourseUnitDtpStat[0]; |
} |
for(CourseUnit cu :units) |
{ |
CourseUnitDtpStat statFound = CourseReportUtils.findCourseUnitDtpStat(statsLoaded, (CourseUnitImpl) cu); |
if(statFound == null) |
{ |
statFound = CourseReportUtils.createCourseUnitDtpStat(cu); |
} |
if(((CourseUnitImpl) cu).getSemestreAbsolutoS1S2().equals("S1")) |
semester1.getCourseUnitDtpStats().add(statFound); |
else |
semester2.getCourseUnitDtpStats().add(statFound); |
} |
return unitsDtpTable; |
} |
/** |
* Update course unit sections with reports, this method dows not change learning results table |
* values from learning results stays in unit but does not change learning results Table |
* @param courseCode |
354,18 → 368,27 |
* @throws IOException |
* @return a list of CourseUnitSection |
*/ |
public List<DocumentSection> updateCleanCourseUnitSections(String courseCode, String year, ReportCourseDocument reportCourseDocument) throws JSONException, IOException { |
public List<DocumentSection> updateCleanCourseUnitSections(String courseCode, String year, CourseReportDocument reportCourseDocument) throws JSONException, IOException { |
List<CourseUnit> units = DaoFactory.getCourseUnitDaoImpl().loadByCourseSiges(courseCode, year); |
String courseUnitSectionsJson = loadCourseEvaluationSections(courseCode,year); |
JSONObject object = new JSONObject(courseUnitSectionsJson); |
JSONArray evaluations = object.getJSONArray("evaluations"); |
CourseUnitSection[] courseUnitSections = CourseUnitSection.fromJsonArray(evaluations.toString()); |
CourseUnitsReportsSection unitReportsSection = (CourseUnitsReportsSection) reportCourseDocument.findDocumentSection(CourseUnitsReportsSection.class); |
CourseUnitSection[] courseUnitSections = null; |
try{ |
String courseUnitSectionsJson = loadCourseEvaluationSections(courseCode,year); |
JSONObject object = new JSONObject(courseUnitSectionsJson); |
JSONArray evaluations = object.getJSONArray("evaluations"); |
courseUnitSections = CourseUnitSection.fromJsonArray(evaluations.toString()); |
} |
catch(Exception e) |
{ |
logger.error(e,e); |
courseUnitSections = new CourseUnitSection[0]; |
} |
CourseUnitsReportsSection unitReportsSection = (CourseUnitsReportsSection) reportCourseDocument.findDocumentSection(CourseUnitsReportsSection.class); |
List<DocumentSection> subSections = new ArrayList<DocumentSection>(); |
unitReportsSection.setSubSections(subSections); |
unitReportsSection.setSections(subSections); |
for(CourseUnit cu :units) |
{ |
CourseUnitSection sectionFound = CourseReportUtils.findCourseUnitSection(courseUnitSections, (CourseUnitImpl) cu); |
381,7 → 404,7 |
cu.setCourseUnitEvaluation(courseUnitEvaluation); |
sectionFound.setCourseUnitEvaluation(courseUnitEvaluation); |
} |
unitReportsSection.getSubSections().add(sectionFound); |
unitReportsSection.getSections().add(sectionFound); |
} |
return subSections; |
} |
389,20 → 412,20 |
public static void main(String[] args) throws IOException, JSONException { |
/*AbstractDao.getCurrentSession().beginTransaction(); |
AbstractDao.getCurrentSession().beginTransaction(); |
ReportCourseDocument reportCourseDocument = new CourseReportServices().createNewCourseReportDocument("44","201617"); |
CourseReportDocument reportCourseDocument = new CourseReportServices().createNewCourseReportDocument("44","201617"); |
System.out.println(reportCourseDocument.toJson()); |
AbstractDao.getCurrentSession().getTransaction().commit();*/ |
AbstractDao.getCurrentSession().getTransaction().commit(); |
//System.setProperty("javax.net.ssl.trustStore", "/JORGE/COPIAS/.keystore"); |
//System.setProperty("javax.net.ssl.trustStorePassword", "changeit"); |
URL url = new URL("http://pae.ipportalegre.pt/wsjson/api/app/ws-course-pedagogic-results-list?code=44&year=201617&period=S1"); |
/*URL url = new URL("http://pae.ipportalegre.pt/wsjson/api/app/ws-course-pedagogic-results-list?code=44&year=201617&period=S1"); |
System.out.println(StreamsUtils.readString(url.openStream())); |
System.out.println(StreamsUtils.readString(url.openStream()));*/ |
} |
/* |
465,12 → 488,21 |
} |
else |
{ |
URL url = new URL(Globals.SYSTEM_WSJSON_SERVICE_COURSE_UNITS_DTP_STATS + "?code=" + courseCode + "&year=" + year); |
InputStream is = url.openStream(); |
String serviceUrl = Globals.SYSTEM_WSJSON_SERVICE_COURSE_UNITS_DTP_STATS + "?code=" + courseCode + "&year=" + year; |
String json = "{ dtpstats : [] }"; |
try{ |
URL url = new URL(serviceUrl); |
String json = StreamsUtils.readString(is); |
is.close(); |
//TODO temos de extrair o resultado do RESPONSE |
URLConnection conn = url.openConnection(); |
InputStream is = conn.getInputStream(); |
json = StreamsUtils.readString(is); |
is.close(); |
}catch(Throwable e) |
{ |
logger.error("Connecting " + serviceUrl,e); |
return json; |
} |
JSONObject jsonObject = new JSONObject(json); |
return jsonObject.get("response").toString(); |
} |
493,7 → 525,7 |
public String loadCourseEvaluationSections(String courseCode,String year) throws JSONException, IOException { |
if(Globals.SYSTEM_WSJSON_SERVICE_COURSE_UNITS_EVALUATION.indexOf("localhost")>=0) |
if(Globals.SYSTEM_WSJSON_SERVICE_COURSE_UNITS_EVALUATION_REPORT.indexOf("localhost")>=0) |
{ |
JSONArray array = new JSONArray(); |
List<CourseUnit> units = DaoFactory.getCourseUnitDaoImpl().loadByCourseSiges(courseCode, year); |
510,11 → 542,22 |
} |
else |
{ |
URL url = new URL(Globals.SYSTEM_WSJSON_SERVICE_COURSE_UNITS_EVALUATION + "?code=" + courseCode + "&year=" + year); |
InputStream is = url.openStream(); |
String json = "{ evaluations : [] }"; |
String serviceUrl = Globals.SYSTEM_WSJSON_SERVICE_COURSE_UNITS_EVALUATION_REPORT + "?code=" + courseCode + "&year=" + year; |
try{ |
URL url = new URL(serviceUrl); |
String json = StreamsUtils.readString(is); |
is.close(); |
URLConnection conn = url.openConnection(); |
InputStream is = conn.getInputStream(); |
json = StreamsUtils.readString(is); |
is.close(); |
}catch(Throwable e) |
{ |
logger.error("Connecting " + serviceUrl,e); |
return json; |
} |
JSONObject jsonObject = new JSONObject(json); |
return jsonObject.get("response").toString(); |
} |
/branches/v3/impl/src/java/pt/estgp/estgweb/services/courses/coursereport/documentmodel/ReportCourseDocument.java |
---|
File deleted |
/branches/v3/impl/src/java/pt/estgp/estgweb/services/courses/coursereport/documentmodel/surveys/SurveysAnalysisSection.java |
---|
18,8 → 18,8 |
getComponents().add(new TextComponent()); |
//4.2.1 |
getSubSections().add(new GenericTextSection("Análise das UC's")); |
getSections().add(new GenericTextSection("Análise das UC's")); |
//4.2.2 |
getSubSections().add(new GenericTextSection("Análise das Salas")); |
getSections().add(new GenericTextSection("Análise das Salas")); |
} |
} |
/branches/v3/impl/src/java/pt/estgp/estgweb/services/courses/coursereport/documentmodel/ConclusionsSection.java |
---|
16,7 → 16,7 |
public void init() |
{ |
super.setTitle("Conclusões"); |
super.getSubSections().add(new GenericTextSection("Identificação de Problemas")); |
super.getSubSections().add(new GenericTextSection("Melhorias")); |
super.getSections().add(new GenericTextSection("Identificação de Problemas")); |
super.getSections().add(new GenericTextSection("Melhorias")); |
} |
} |
/branches/v3/impl/src/java/pt/estgp/estgweb/services/courses/coursereport/documentmodel/SurveysSection.java |
---|
19,8 → 19,8 |
public void init() { |
super.setTitle("Inquéritos Pedagógicos"); |
//4.1 |
super.getSubSections().add(new SurveysResultsSection("Resultados dos Inquéritos Pedagógicos")); |
super.getSections().add(new SurveysResultsSection("Resultados dos Inquéritos Pedagógicos")); |
//4.2 |
super.getSubSections().add(new SurveysAnalysisSection("Análise dos Inquéritos Pedagógicos")); |
super.getSections().add(new SurveysAnalysisSection("Análise dos Inquéritos Pedagógicos")); |
} |
} |
/branches/v3/impl/src/java/pt/estgp/estgweb/services/courses/coursereport/documentmodel/LearningResultsSection.java |
---|
28,12 → 28,12 |
super.getComponents().add(new CustomPane()); |
//3.1 Analise Aproveitamento |
super.getSubSections().add(new LearningAnalysisSection("Analise Aproveitamento")); |
super.getSections().add(new LearningAnalysisSection("Analise Aproveitamento")); |
//3.2 Analise Global Aproveitamento |
super.getSubSections().add(new LearningGlobalAnalysisSection("Analise Global Aproveitamento")); |
super.getSections().add(new LearningGlobalAnalysisSection("Analise Global Aproveitamento")); |
//3.3 Analise Funcionamento UCs |
super.getSubSections().add(new GenericTextSection("Analise Funcionamento UCs")); |
super.getSections().add(new GenericTextSection("Analise Funcionamento UCs")); |
//3.4 Cumprimento de Programas |
super.getSubSections().add(new GenericTextSection("Cumprimento de Programas")); |
super.getSections().add(new GenericTextSection("Cumprimento de Programas")); |
} |
} |
/branches/v3/impl/src/java/pt/estgp/estgweb/services/courses/coursereport/documentmodel/CourseUnitsReportsSection.java |
---|
19,6 → 19,6 |
public void init() { |
setTitle("Relatórios das Unidades Curriculares"); |
setSubSections(new ArrayList<DocumentSection>()); |
setSections(new ArrayList<DocumentSection>()); |
} |
} |
/branches/v3/impl/src/java/pt/estgp/estgweb/services/courses/coursereport/documentmodel/CourseReportDocument.java |
---|
New file |
0,0 → 1,129 |
package pt.estgp.estgweb.services.courses.coursereport.documentmodel; |
import com.owlike.genson.Genson; |
import com.owlike.genson.GensonBuilder; |
import org.apache.log4j.Logger; |
import org.json.JSONException; |
import org.json.JSONObject; |
import pt.estgp.estgweb.domain.utils.JsonView; |
import pt.estgp.estgweb.utils.documentBuilder.Document; |
import pt.estgp.estgweb.utils.documentBuilder.DocumentSection; |
import java.util.Date; |
import java.util.List; |
/** |
* Created by jorgemachado on 14/10/17. |
*/ |
public class CourseReportDocument extends Document implements JsonView |
{ |
private static final Logger logger = Logger.getLogger(CourseReportDocument.class); |
public CourseReportDocument() |
{ |
} |
public void init() |
{ |
//1 - Introducao |
IntroSection introSection = new IntroSection(); |
introSection.init(); |
getSections().add(introSection); |
//2 - Mapa Sintese dos Relatórios dos Responsáveis das UC's |
ReportsUcSummarySection reportsUcSummarySection = new ReportsUcSummarySection(); |
reportsUcSummarySection.init(); |
getSections().add(reportsUcSummarySection); |
//3 - Resultados da Aprendizagem |
LearningResultsSection learningResultsSection = new LearningResultsSection(); |
learningResultsSection.init(); |
getSections().add(learningResultsSection); |
//4 - Inquéritos |
SurveysSection surveysSection = new SurveysSection(); |
surveysSection.init(); |
getSections().add(surveysSection); |
//5 - Conclusões |
ConclusionsSection conclusionsSection = new ConclusionsSection(); |
conclusionsSection.init(); |
getSections().add(conclusionsSection); |
//5 - Unidades Curriculares |
CourseUnitsReportsSection courseUnitsReportsSection = new CourseUnitsReportsSection(); |
courseUnitsReportsSection.init(); |
getSections().add(courseUnitsReportsSection); |
} |
public DocumentSection findDocumentSection(Class sectionClass) |
{ |
if(getSections() != null) |
for(DocumentSection section: getSections()) |
{ |
if(section.getClass().equals(sectionClass)) |
{ |
return section; |
} |
} |
return null; |
} |
private static Genson gensonGenericLoad; |
static{ |
gensonGenericLoad = new GensonBuilder() |
.useMethods(true) |
.useFields(true) |
.useRuntimeType(true) //para ignorar a CGLIB do courseUnitEvaluation |
.useClassMetadata(true) |
.useDateAsTimestamp(true) |
.exclude(Class.class) |
.exclude(Date.class) |
.exclude(java.sql.Timestamp.class) |
.exclude(java.sql.Date.class) |
.create(); |
} |
public static CourseReportDocument fromJson(String json) |
{ |
return gensonGenericLoad.deserialize(json,CourseReportDocument.class); |
} |
public List<String> getJsonExcludedProperties() { |
return null; |
} |
/** |
* Generic Json Object only for local class methods |
* @return |
* @throws org.json.JSONException |
*/ |
public JSONObject toJsonObject() throws JSONException |
{ |
return new JSONObject(toJson()); |
} |
/** |
* * Generic Json Object only for local class methods |
* @return |
* @throws java.io.IOException |
*/ |
public String toJson() |
{ |
return gensonGenericLoad.serialize(this); |
} |
} |
/branches/v3/impl/src/java/pt/estgp/estgweb/services/questionarios/QuestionariosReportsService.java |
---|
20,6 → 20,7 |
import java.io.IOException; |
import java.io.InputStream; |
import java.net.URL; |
import java.net.URLConnection; |
import java.util.ArrayList; |
import java.util.HashSet; |
import java.util.List; |
165,7 → 166,7 |
public String loadReportUnidadesSalasJson(String sigesCode, String year, String periodIncluded) throws IOException, JSONException { |
if(Globals.SYSTEM_WSJSON_SERVICE_COURSE_REPORT_RESULTS.indexOf("localhost")>=0) |
if(Globals.SYSTEM_WSJSON_SERVICE_COURSE_QUESTIONARIOS_REPORT_RESULTS.indexOf("localhost")>=0) |
{ |
Criteria c = DaoFactory.getQuestionarioReportCursoFileDaoImpl().createCriteria(); |
c.createAlias("reportGroup","rg"); |
183,11 → 184,22 |
} |
else |
{ |
URL url = new URL(Globals.SYSTEM_WSJSON_SERVICE_COURSE_REPORT_RESULTS + "?code=" + sigesCode + "&year=" + year + "&period="+periodIncluded); |
InputStream is = url.openStream(); |
String json = "{ }"; |
String serviceUrl = Globals.SYSTEM_WSJSON_SERVICE_COURSE_QUESTIONARIOS_REPORT_RESULTS + "?code=" + sigesCode + "&year=" + year + "&period="+periodIncluded; |
try{ |
URL url = new URL(serviceUrl); |
String json = StreamsUtils.readString(is); |
is.close(); |
URLConnection conn = url.openConnection(); |
InputStream is = conn.getInputStream(); |
json = StreamsUtils.readString(is); |
is.close(); |
}catch(Throwable e) |
{ |
logger.error("Connecting " + serviceUrl,e); |
return json; |
} |
JSONObject jsonObject = new JSONObject(json); |
return jsonObject.get("response").toString(); |
/branches/v3/impl/src/java/pt/estgp/estgweb/services/profile/ListUsersService.java |
---|
12,6 → 12,9 |
import java.util.List; |
import static org.hibernate.criterion.Restrictions.eq; |
import static org.hibernate.criterion.Restrictions.isNotNull; |
/** |
* Created by jorgemachado on 07/04/17. |
*/ |
134,4 → 137,66 |
} |
return result; |
} |
public JSONObject listCoordinatorTeachersService(UserSession sess) throws JSONException |
{ |
JSONObject result = new JSONObject(); |
JSONArray usersArray = new JSONArray(); |
String nowYear = ((UserSessionImpl)sess).getNowConfiguration().getInterfaceImportYear(); |
result.put("nowYear",nowYear); |
result.put("results",usersArray); |
Criteria c = DaoFactory.getTeacherDaoImpl().createCriteria(); |
c.setProjection(Projections.projectionList() |
.add(Projections.property("username")) |
.add(Projections.property("sigesCode")) |
.add(Projections.property("name")) |
.add(Projections.property("email")) |
.add(Projections.property("outEmail")) |
.add(Projections.property("preferrefEmail")) |
.add(Projections.property("cc.name")) |
.add(Projections.property("cc.code")) |
.add(Projections.property("cc.degree")) |
.add(Projections.property("d.name")) |
.add(Projections.property("s.name")) |
.add(Projections.property("s.institutionalCode")) |
); |
c.createAlias("coordinatorCourses","cc"); |
c.createAlias("cc.department","d"); |
c.createAlias("d.courseSchool","s"); |
c |
.add(isNotNull("cc.name")) |
.add(eq("cc.status", true)) |
.add(eq("cc.importYear", ((UserSessionImpl) sess).getNowConfiguration().getInterfaceImportYear())); |
List<Object[]> results = c.list(); |
for(Object[] resultObj: results) |
{ |
JSONObject user = new JSONObject(); |
usersArray.put(user); |
user.put("username",resultObj[0]); |
user.put("sigesCode",resultObj[1]); |
user.put("name",resultObj[2]); |
user.put("email",resultObj[3]); |
user.put("outEmail",resultObj[4]); |
user.put("preferrefEmail",resultObj[5]); |
user.put("courseName",resultObj[6]); |
user.put("courseCode",resultObj[7]); |
user.put("courseType",resultObj[8]); |
user.put("departmentName",resultObj[9]); |
user.put("schoolName",resultObj[10]); |
user.put("schoolCode",resultObj[11]); |
} |
return result; |
} |
} |
/branches/v3/impl/src/java/pt/estgp/estgweb/web/controllers/widgetmodel/CoursesServicesWidgetController.java |
---|
134,7 → 134,7 |
public static void main(String[] args) throws Throwable |
{ |
URL url = new URL(Globals.SYSTEM_WSJSON_SERVICE_COURSE_UNITS_EVALUATION + "?code=9119&year=201516&period=S2"); |
URL url = new URL(Globals.SYSTEM_WSJSON_SERVICE_COURSE_UNITS_EVALUATION_REPORT + "?code=9119&year=201516&period=S2"); |
InputStream is = url.openStream(); |
String json = StreamsUtils.readString(is); |
/branches/v3/impl/src/java/pt/estgp/estgweb/web/controllers/widgetmodel/ModelWidgetController.java |
---|
250,6 → 250,24 |
} |
/** |
* |
* @param form |
* @param request |
* @param response |
* @return |
* @throws Throwable |
*/ |
public JSONObject wsListCoordinators(ActionForm form,HttpServletRequest request, HttpServletResponse response) throws Throwable { |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = new String[]{}; |
Object[] args = new Object[]{}; |
JSONObject result = (JSONObject) sm.execute(RequestUtils.getRequester(request, response), "WSAPIListCoordinators", args, names); |
return result; |
} |
/** |
* * For Json Services |
* @param form |
* @param request |
293,11 → 311,19 |
wsLoginListTeachers.put("descricao","usa o certificado para garantir autenticidade da APP e devolve a lista total de professores do sistema no parametro response"); |
wsLoginListTeachers.put("return1","devolve a lista total de professores do sistema no parametro response"); |
JSONObject wsLoginListCoordinators = new JSONObject(); |
wsLoginListCoordinators.put("service","/wsjson/api/app/secure/ws-coordinators-list"); |
wsLoginListCoordinators.put("parameter","certificate"); |
wsLoginListCoordinators.put("descricao","usa o certificado para garantir autenticidade da APP e devolve a lista total de professores do sistema no parametro response"); |
wsLoginListCoordinators.put("return1","devolve a lista total de professores do sistema no parametro response"); |
JSONArray services = new JSONArray(); |
services.put(wsAuthenticate); |
services.put(wsLoginChallenge); |
services.put(wsLoginListStudents); |
services.put(wsLoginListTeachers); |
services.put(wsLoginListCoordinators); |
wsServices.put("services",services); |
return result; |
/branches/v3/impl/src/web/admin/bpmn/processEditor.jsp |
---|
981,7 → 981,7 |
{ |
possibleVars.push(variable); |
} |
else if($scope.contains(variable.type.classNameSuperClasses,className)) |
else if($scope.contains(variable.type.classNamexSuperClasses,className)) |
{ |
possibleVars.push(variable); |
} |
/branches/v3/impl/src/web/auth/lostPass.jsp |
---|
12,7 → 12,7 |
<html:errors/> |
<jomm:messages/> |
<p>Para receber um email de reposição de password introduza uma das informações requisitadas para podermos proceder à sua identificação</p> |
<form class="form-vertical" action="<%=request.getContextPath()%>/requestChangeMyPassword.do" method="post"> |
<form class="form-vertical" action="<%=request.getContextPath()%>/auth/requestChangeMyPassword.do" method="post"> |
<input type="hidden" name="dispatch" value="requestChangePassword"> |
<div class="form-group col-md-12"> |
<label class="col-md-12">Nome de Utilizador / Email / Número de Cartão de Cidadão / Número de Aluno / Número de Docente</label> |
/branches/v3/impl/src/web/js/functions.js |
---|
1,3 → 1,9 |
String.prototype.replaceAll = String.prototype.replaceAll || function(needle, replacement) { |
return this.split(needle).join(replacement); |
}; |
function set(form, value) |
{ |
form.dispatch.value = value; |
/branches/v3/impl/src/web/layout/themes/estg/auth.jsp |
---|
72,7 → 72,7 |
<div class="col-md-6"> |
<h2>Esqueci a password</h2> |
<div class="col-sm-12"> |
<p><a class="btn btn-default" href="<%=request.getContextPath()%>/requestChangePassword.do">Perdi a minha password e desejo receber um email para a redefinir</a></p> |
<p><a class="btn btn-default" href="<%=request.getContextPath()%>/auth/requestChangePassword.do">Perdi a minha password e desejo receber um email para a redefinir</a></p> |
</div> |
</div> |
/branches/v3/impl/src/web/layout/themes/ipp/auth.jsp |
---|
72,7 → 72,7 |
<div class="col-md-6"> |
<h2>Esqueci a password</h2> |
<div class="col-sm-12"> |
<p><a class="btn btn-default" href="<%=request.getContextPath()%>/requestChangePassword.do">Perdi a minha password e desejo receber um email para a redefinir</a></p> |
<p><a class="btn btn-default" href="<%=request.getContextPath()%>/auth/requestChangePassword.do">Perdi a minha password e desejo receber um email para a redefinir</a></p> |
</div> |
</div> |
/branches/v3/impl/src/web/user/courses/courseReportEdit.jsp |
---|
4,6 → 4,9 |
<%@ page import="pt.estgp.estgweb.domain.dao.DaoFactory" %> |
<%@ page import="pt.estgp.estgweb.utils.documentBuilder.TextComponent" %> |
<%@ page import="pt.estgp.estgweb.utils.documentBuilder.ImageComponent" %> |
<%@ page import="pt.estgp.estgweb.services.courses.CourseReportServices" %> |
<%@ page import="pt.estgp.estgweb.services.courses.coursereport.documentmodel.CourseReportDocument" %> |
<%@ page import="org.json.JSONException" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %> |
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %> |
91,17 → 94,23 |
<% |
Long courseId = Long.parseLong(request.getParameter("courseId")); |
String courseCode = request.getParameter("courseCode"); |
AbstractDao.getCurrentSession().beginTransaction(); |
CourseImpl courseImpl = (CourseImpl) DaoFactory.getCourseDaoImpl().get(courseId); |
CourseImpl courseImpl = DaoFactory.getCourseDaoImpl().findCourseByCode(courseCode); |
request.setAttribute("course",courseImpl); |
CourseReportDocument courseReport = null; |
try { |
courseReport = new CourseReportServices().createNewCourseReportDocument("44", "201617"); |
} catch (Throwable e) { |
System.out.println(e); |
e.printStackTrace(); |
} |
String courseReportJson = courseReport.toJson(); |
request.setAttribute("courseDocumentJson",courseReportJson); |
request.setAttribute("courseDocument",courseReport); |
String classTextComponent = TextComponent.class.getName(); |
String classImageComponent = ImageComponent.class.getName(); |
request.setAttribute("classTextComponent",classTextComponent); |
request.setAttribute("classImageComponent",classImageComponent); |
%> |
<a href="javascript:demoFromHTML()" class="button">Run Code</a> |
<%--<a href="javascript:demoFromHTML()" class="button">Run Code</a>--%> |
<div class="container-fluid"> |
127,28 → 136,10 |
<p><b class="label-info">Escola:</b> ${course.department.courseSchool.name}</p> |
<script> |
function showSep(id) |
{ |
$(".separatorSectionNav").removeClass("active"); |
$(".separatorSection").hide(); |
$("#separatorSectionNav_" + id).addClass("active"); |
$("#separatorSection_" + id).show(); |
} |
</script> |
<ul class="nav nav-tabs"> |
<li id="separatorSectionNav_introducao" class="active separatorSectionNav"><a href="javascript:showSep('introducao')">1 - Introdução</a></li> |
<li id="separatorSectionNav_mapaUnidades" class="separatorSectionNav"><a href="javascript:showSep('mapaUnidades')">2 - Mapa Síntese </a></li> |
<li id="separatorSectionNav_resultados" class="separatorSectionNav"><a href="javascript:showSep('resultados')">3 - Resultados </a></li> |
<li id="separatorSectionNav_inqueritos" class="separatorSectionNav"><a href="javascript:showSep('inqueritos')">4 - Inquéritos </a></li> |
<li id="separatorSectionNav_conclusoes" class="separatorSectionNav"><a href="javascript:showSep('conclusoes')">4 - Conclusões </a></li> |
</ul> |
<script> |
<script> |
//Especifico da aplicacao |
var courseReportApp = angular.module('courseReportApp', []); |
GLOBAL_BacoAngularAppDependencies.push('courseReportApp'); |
177,25 → 168,57 |
courseReportApp.controller('courseReportAppController', function($scope) |
{ |
$scope.report = |
{ |
$scope.docAppSelector = "#courseReportApp"; |
$scope.report = <%=courseReportJson%> |
} |
$scope.resize = function(evt,ui,comp) { |
//console.log (evt,ui); |
comp.width = ui.size.width; |
comp.height = ui.size.height; |
} |
/** |
* @classe class to match |
* @superClasses array of strings |
* */ |
$scope.contains = function(obj,classe) |
{ |
if(obj['@class'] && obj['@class'] == classe) |
return true; |
if(obj.allSuperClasses) |
{ |
for(var i in obj.allSuperClasses) |
{ |
if(classe == obj.allSuperClasses[i]) |
return true; |
} |
} |
return false; |
} |
$scope.showSep = function(section) |
{ |
$(".separatorSectionNav").each(function() |
{ |
angular.element($(this)).scope().section.active = false; |
}); |
section.active = true; |
} |
$scope.class2id = function(obj) |
{ |
return obj["@class"].replaceAll(".","_"); |
} |
$scope.addText = function(parentCustomPane) |
{ |
$scope.addSimpleDocComponent(parentCustomPane,"${classTextComponent}") |
$scope.addSimpleDocComponent(parentCustomPane,"pt.estgp.estgweb.utils.documentBuilder.TextComponent") |
} |
$scope.addImage = function(parentCustomPane) |
{ |
$scope.addSimpleDocComponent(parentCustomPane,"${classImageComponent}") |
$scope.addSimpleDocComponent(parentCustomPane,"pt.estgp.estgweb.utils.documentBuilder.ImageComponent") |
} |
$scope.addSimpleDocComponent = function(parentCustomPane,classComponent) |
206,9 → 229,7 |
} |
parentCustomPane.components.push( |
{ |
"@class" : classComponent, |
"text" : "", |
"title" : "" |
"@class" : classComponent |
} |
); |
} |
266,59 → 287,41 |
}); |
</script> |
<!--TEMPLATES FOR DOCUMENT BUILDER--> |
<jsp:include page="../utils/documentsBuilder.jsp"/> |
<div class="form-vertical"> |
<div id="courseReportApp" ng-app="courseReportApp" ng-controller="courseReportAppController"> |
<div id="courseReportApp" ng-app="courseReportApp" ng-controller="courseReportAppController" class="form-vertical"> |
<ul class="nav nav-tabs"> |
<li ng-model="section" class="separatorSectionNav" ng-class="{ active: section.active}" ng-repeat="section in report.sections"> |
<a ng-click="showSep(section)">{{section.title}}</a> |
</li> |
</ul> |
<!--Introducao--> |
<div id="separatorSection_introducao" class="separatorSection clearfix"> |
<div class="documentSimpleComponent form-group clearfix"> |
<label class="col-md-2 control-label">Texto</label> |
<div class="col-md-10"> |
<textarea class="form-control" rows="10" ng-model="report.introSection.textComponent.text"> |
</textarea> |
</div> |
</div> |
<div ng-include="'customPane_renderer.html'" |
ng-init="report.introSection.customPane = {};customPane = report.introSection.customPane;docAppSelector='#courseReportApp'"> |
</div> |
<!--DocumentSection--> |
<div ng-model="section" ng-class="{ hidden: !section.active}" ng-repeat="section in report.sections" class="separatorSection clearfix"> |
<div ng-repeat="comp in section.components" ng-include="class2id(comp)"> |
</div> |
<!--/Introducao--> |
</div> |
<!--Mapa Unidades--> |
<div id="separatorSection_mapaUnidades" class="separatorSection"> |
</div> |
<!--/Mapa Unidades--> |
</div> |
<!--/DocumentSection--> |
<!--Resultados--> |
<div id="separatorSection_resultados" class="separatorSection"> |
<%-- |
<pre class="code">{{ report | json }}</pre> |
--%> |
</div> |
<!--/Resultados--> |
<!--Inqueritos--> |
<div id="separatorSection_inqueritos" class="separatorSection"> |
</div><!--App--> |
</div> <!--form--> |
</div> |
<!--/Inqueritos--> |
<!--Conclusoes--> |
<div id="separatorSection_conclusoes" class="separatorSection"> |
</div> |
<!--/Conclusoes--> |
<pre class="code">{{ report | json }}</pre> |
</div><!--App--> |
</div><!--Panel Body--> |
</div><!--Panel--> |
/branches/v3/impl/src/web/user/utils/documentsBuilder.jsp |
---|
1,64 → 1,65 |
<%@ page contentType="text/html;charset=UTF-8" language="java" %> |
<style> |
.buttonTools |
{ |
border: 1px solid gray; |
background-color: lightgray; |
padding: 5px; |
} |
.customComponent |
{ |
padding: 0; |
} |
.documentSimpleComponent |
{ |
border: 1px solid gray; |
padding: 5px; |
margin-bottom: 5px; |
} |
.componentBody |
{ |
border: 1px solid gray; |
padding: 5px; |
} |
</style> |
<%-- |
customPane Need component customPane in variable customPane |
docAppSelector selector usualy an html ID for ng-app example #docReport |
Attribute in request classTextComponent |
Attribute in request classImageComponent |
--%> |
<script type="text/ng-template" id="customPane_renderer.html"> |
<div class="customPane clearfix"> |
<style> |
.buttonTools |
{ |
border: 1px solid gray; |
background-color: lightgray; |
padding: 5px; |
} |
.customPane |
{ |
padding: 15px; |
} |
.documentSimpleComponent |
{ |
border: 1px solid gray; |
padding: 5px; |
margin-bottom: 5px; |
} |
.componentBody |
{ |
border: 1px solid gray; |
padding: 5px; |
} |
</style> |
<script type="text/ng-template" id="pt_estgp_estgweb_utils_documentBuilder_CustomPane"> |
<div class="customComponent clearfix component"> |
<div class="buttonTools clearfix"> |
<button class="btn btn-default pullleft" type="button" ng-click="addText(report.introSection.customPane)"> |
<button class="btn btn-default pullleft" type="button" ng-click="addText(comp)"> |
<span class="glyphicon glyphicon-plus"></span> |
<span class="glyphicon glyphicon-font"></span> |
</button> |
<button class="btn btn-default pullleft" type="button" ng-click="addImage(report.introSection.customPane)"> |
<button class="btn btn-default pullleft" type="button" ng-click="addImage(comp)"> |
<span class="glyphicon glyphicon-plus"></span> |
<span class="glyphicon glyphicon-picture"></span> |
</button> |
Secção personalizada |
</div> |
<div class="customPane"> |
<div class="componentBody"> |
<div class="clearfix" ng-repeat="subComp in comp.components" ng-init="parent=comp;comp=subComp" ng-include="class2id(subComp)"> |
</div> |
<div> |
</div> |
</script> |
<div class="clearfix documentSimpleComponent" ng-repeat="comp in customPane.components"> |
<div class="buttonTools clearfix"> |
<button class="btn btn-danger pullright" type="button" ng-click="removeComponent($index,customPane.components)"> |
<script type="text/ng-template" id="pt_estgp_estgweb_utils_documentBuilder_ImageComponent"> |
<div class="imageComponent component"> |
<div ng-if="parent['@class']=='pt.estgp.estgweb.utils.documentBuilder.CustomPane'" class="buttonTools clearfix"> |
<button class="btn btn-danger pull-right" type="button" ng-click="removeComponent($index,parent.components)"> |
<span class="glyphicon glyphicon-remove"></span> |
</button> |
<label ng-if="comp.class=='${classTextComponent}'">Componente de Texto</label> |
<label ng-if="comp.class=='${classImageComponent}'">Componente de Imagem (Use esta funcinalidade para adicionar gráficos ou tabelas que ache necessárias)</label> |
<label>Componente de Imagem (Use esta funcinalidade para adicionar gráficos ou tabelas que ache necessárias)</label> |
</div> |
</div> |
<div class="componentBody" ng-if="comp.class=='${classImageComponent}'"> |
<div class="componentBody" ng-if="comp['@class']=='pt.estgp.estgweb.utils.documentBuilder.ImageComponent'"> |
<div class="form-group clearfix" ng-if="comp.image.identifier"> |
<label class="col-md-2 control-label">Legenda</label> |
<div class="col-md-10"> |
68,19 → 69,19 |
<div class="form-group clearfix"> |
<div class="col-md-2 control-label"> |
<a class="btn btn-default" href="#" ng-model="comp" |
data-title="Escolha Imagem" |
data-showmetafields="false" |
data-confirmonupload="true" |
data-toggle="modal" |
data-target="#filesUploadModal" |
data-multiple="false" |
data-allowed-extensions="jpg,png,gif" |
data-callback-target-function="angular.element($('{{docAppSelector}}')).scope().callbackUploadedFiles"> |
data-title="Escolha Imagem" |
data-showmetafields="false" |
data-confirmonupload="true" |
data-toggle="modal" |
data-target="#filesUploadModal" |
data-multiple="false" |
data-allowed-extensions="jpg,png,gif" |
data-callback-target-function="angular.element($('{{docAppSelector}}')).scope().callbackUploadedFiles"> |
<span ng-if="comp.image.identifier"> |
Substituir Imagem |
Substituir Imagem |
</span> |
<span ng-if="!(comp.image.identifier)"> |
Carregar Imagem |
Carregar Imagem |
</span> |
<span class="glyphicon glyphicon-upload"/> |
89,8 → 90,8 |
</div> |
<div class="col-md-10"> |
<div ng-if="!(comp.image.identifier)"> |
Clique em carregar imagens e escolha uma imagem para adicionar nesta secção. |
<div ng-if="!(comp.image.identifier)"> |
Clique em carregar imagens e escolha uma imagem para adicionar nesta secção. |
</div> |
<label ng-if="comp.image.identifier"> Limites do PDF </label> |
103,26 → 104,35 |
</center> |
</div> |
</div> |
</div> |
</div> |
</div> |
</div> |
</script> |
<script type="text/ng-template" id="pt_estgp_estgweb_utils_documentBuilder_TextComponent"> |
<div class="textComponent component"> |
<div class="componentBody" ng-if="comp.class=='${classTextComponent}'"> |
<div class="form-group clearfix"> |
<label class="col-md-2 control-label">Titulo</label> |
<div class="col-md-10"> |
<input type="text" class="form-control" rows="10" ng-model="comp.title"> |
</div> |
<div ng-if="parent['@class']=='pt.estgp.estgweb.utils.documentBuilder.CustomPane'" class="buttonTools clearfix"> |
<button class="btn btn-danger pull-right" type="button" ng-click="removeComponent($index,parent.components)"> |
<span class="glyphicon glyphicon-remove"></span> |
</button> |
<label>Componente de Texto</label> |
</div> |
<div class="componentBody"> |
<div ng-if="parent['@class']=='pt.estgp.estgweb.utils.documentBuilder.CustomPane'" class="form-group clearfix"> |
<label class="col-md-2 control-label">Titulo de Parágrafo</label> |
<div class="col-md-10"> |
<input type="text" class="form-control" rows="10" ng-model="comp.title"> |
</div> |
<div class="form-group clearfix"> |
<label class="col-md-2 control-label">Texto</label> |
<div class="col-md-10"> |
<textarea class="form-control" rows="10" ng-model="comp.text"> |
</div> |
<div class="form-group clearfix"> |
<label class="col-md-2 control-label">Texto</label> |
<div class="col-md-10"> |
<textarea class="form-control" rows="10" ng-model="comp.text"> |
</textarea> |
</div> |
</textarea> |
</div> |
</div> |
</div> |
<div> |
</div> |
</script> |
/branches/v3/common/commons/commons-fileupload-1.2.1.jar |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/v3/common/commons/commons-fileupload.jar |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/v3/common/commons/commons-fileupload-1.3.3.jar |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+ application/octet-stream |