From 2879b2ee5e1e2815e5f43cb802352bf2878397af Mon Sep 17 00:00:00 2001 From: Ioakeim Samaras Date: Mon, 24 Jun 2019 19:08:46 +0300 Subject: [PATCH] UI adaptation for supporting ONAP portal SDK JIRA: VAL-29 Signed-off-by: Ioakeim Samaras Change-Id: I1ff3118e09b7cc91b465fb8293a0e7765c82a581 --- .coafile | 14 +- docker/README.rst | 60 +- docker/mariadb/Dockerfile | 25 + docker/{postgresql => mariadb}/Makefile | 0 docker/mariadb/deploy.sh | 71 + .../Dockerfile => mariadb/mariadb.conf} | 6 +- .../postgresql/akraino-blueprint_validation_db.sql | 127 - docker/postgresql/deploy.sh | 54 - docker/ui/Dockerfile | 2 +- docker/ui/deploy.sh | 76 +- ui/CHANGELOG.md | 37 +- ui/README.rst | 316 +- ui/db-scripts/EcompSdkDDLMySql_2_4_Common.sql | 1392 +++++++++ ui/db-scripts/EcompSdkDDLMySql_2_4_OS.sql | 12 + ui/db-scripts/EcompSdkDMLMySql_2_4_Common.sql | 2881 +++++++++++++++++ ui/db-scripts/EcompSdkDMLMySql_2_4_OS.sql | 39 + ui/db-scripts/akraino-blueprint_validation_db.sql | 117 + ui/db-scripts/examples/initialize_db_example.sql | 38 + ui/distribution.xml | 33 + ui/pom.xml | 592 ++-- .../ui/client/jenkins/JenkinsExecutorClient.java | 62 +- .../ui/client/nexus/NexusExecutorClient.java | 78 +- .../nexus/resources/WrapperRobotTestResult.java | 48 + .../akraino/validation/ui/common/PropertyUtil.java | 77 - .../validation/ui/common/SessionManagerFilter.java | 77 - .../validation/ui/conf/ExternalAppConfig.java | 260 ++ .../validation/ui/conf/ExternalAppInitializer.java | 63 + .../ui/conf/HibernateMappingLocations.java | 42 + .../AppInitializer.java => conf/UiUtils.java} | 48 +- .../akraino/validation/ui/config/AppConfig.java | 74 - .../validation/ui/config/HibernateConfig.java | 75 - .../ui/controller/BlueprintController.java | 25 +- .../ui/controller/BlueprintInstanceController.java | 49 - .../BlueprintInstanceForValidationController.java | 58 + .../JenkinsJobNotificationController.java | 38 +- .../ui/controller/ModelsViewsController.java | 52 + .../ui/controller/OnapLoginController.java | 76 + .../ui/controller/ResultsController.java | 40 +- .../ui/controller/SubmissionController.java | 51 +- ...otsController.java => TimeslotsController.java} | 39 +- .../ui/dao/BlueprintInstanceForValidationDAO.java | 36 + .../dao/{BlueprintInstanceDAO.java => LabDAO.java} | 14 +- .../org/akraino/validation/ui/dao/SiloDAO.java | 36 + .../akraino/validation/ui/dao/SubmissionDAO.java | 13 +- .../org/akraino/validation/ui/dao/TimeslotDAO.java | 14 +- .../validation/ui/daoimpl/BlueprintDAOImpl.java | 58 +- .../ui/daoimpl/BlueprintInstanceDAOImpl.java | 99 - .../BlueprintInstanceForValidationDAOImpl.java | 79 + .../akraino/validation/ui/daoimpl/LabDAOImpl.java | 77 + .../akraino/validation/ui/daoimpl/SiloDAOImpl.java | 77 + .../validation/ui/daoimpl/SubmissionDAOImpl.java | 58 +- .../validation/ui/daoimpl/TimeslotDAOImpl.java | 58 +- .../akraino/validation/ui/data/BlueprintLayer.java | 2 +- .../akraino/validation/ui/entity/Blueprint.java | 8 +- ...ce.java => BlueprintInstanceForValidation.java} | 25 +- .../org/akraino/validation/ui/entity/LabInfo.java | 59 + .../org/akraino/validation/ui/entity/LabSilo.java | 73 + .../akraino/validation/ui/entity/Submission.java | 38 +- .../org/akraino/validation/ui/entity/Timeslot.java | 41 +- .../validation/ui/filter/SecurityXssFilter.java | 178 ++ .../validation/ui/login/LoginStrategyImpl.java | 170 + .../akraino/validation/ui/scheduler/Register.java | 87 + .../validation/ui/scheduler/RegistryAdapter.java | 105 + .../validation/ui/service/AdminAuthExtension.java | 74 + .../BlueprintInstanceForValidationService.java | 49 + .../ui/service/BlueprintInstanceService.java | 49 - .../validation/ui/service/BlueprintService.java | 14 +- .../ui/service/JenkinsJobNotificationService.java | 39 +- .../akraino/validation/ui/service/LabService.java | 49 + .../validation/ui/service/ResultService.java | 62 +- .../akraino/validation/ui/service/SiloService.java | 49 + .../validation/ui/service/SubmissionService.java | 49 +- .../validation/ui/service/TimeslotService.java | 14 +- .../ui/service/utils/SubmissionHelper.java | 14 +- ui/src/main/resources/app.properties | 21 - ui/src/main/resources/hibernate.properties | 21 - ui/src/main/resources/key.properties | 41 + ui/src/main/resources/log4j.properties | 34 - ui/src/main/resources/logback.xml | 371 +++ ui/src/main/resources/music.properties | 31 + ui/src/main/resources/portal.properties | 70 + ui/src/main/webapp/.eslintrc | 3 +- ui/src/main/webapp/WEB-INF/conf/system.properties | 85 + ui/src/main/webapp/WEB-INF/defs/definitions.xml | 29 + .../webapp/WEB-INF/fusion/conf/fusion.properties | 35 + .../main/webapp/WEB-INF/fusion/jsp/ds2/footer.jsp | 17 + .../main/webapp/WEB-INF/fusion/jsp/ds2/header.jsp | 1 + .../webapp/WEB-INF/fusion/jsp/ds2/left-menu.jsp | 778 +++++ .../webapp/WEB-INF/fusion/orm/Analytics.hbm.xml | 57 + .../fusion/orm/RNoteBookIntegration.hbm.xml | 45 + ui/src/main/webapp/WEB-INF/index.jsp | 40 + ui/src/main/webapp/WEB-INF/jsp/login.jsp | 114 + ui/src/main/webapp/WEB-INF/jsp/login_external.jsp | 114 + ui/src/main/webapp/WEB-INF/web.xml | 65 +- .../AECBlueprintValidationUI}/App.Config.js | 2 +- .../AECBlueprintValidationUI}/App.Services.js | 5 +- .../AECCommittedSubmissions.js | 19 + .../AECCommittedSubmissionsController.js | 59 + .../CommittedSubmissions/CommittedSubmissions.html | 178 ++ .../CommittedSubmissionsTemplate.html | 305 ++ .../CommittedSubmissions/Route.js | 24 + .../GetBySubmissionId/AECGetBySubmissionId.js | 19 + .../AECGetBySubmissionIdController.js | 121 + .../GetBySubmissionId/GetBySubmissionId.html | 178 ++ .../GetBySubmissionIdTemplate.html | 206 ++ .../GetBySubmissionId/Route.js | 9 + .../NewSubmission/AECNewSubmission.js | 19 + .../NewSubmission}/AECNewSubmissionController.js | 101 +- .../NewSubmission/NewSubmission.html | 178 ++ .../NewSubmission/NewSubmissionTemplate.html | 73 + .../NewSubmission/Route.js} | 21 +- .../external/b2b/css/b2b-angular/font_icons.css | 1 + .../ds2/css/digital-ng-library/ecomp-ionicons.css | 288 ++ .../ds2/css/digital-ng-library/ionicons.css | 3297 ++++++++++++++++++++ .../app/fusion/external/ds2/css/fonts/ionicons.eot | Bin 0 -> 120724 bytes .../app/fusion/external/ds2/css/fonts/ionicons.svg | 2230 +++++++++++++ .../app/fusion/external/ds2/css/fonts/ionicons.ttf | Bin 0 -> 188508 bytes .../fusion/external/ds2/css/fonts/ionicons.woff | Bin 0 -> 67904 bytes .../DS2-controllers/ds-profile/post-controller.js | 4 + .../scripts/DS2-controllers/samplePage-route.js | 27 + .../app/fusion/scripts/DS2-services/postSearch.js | 5 + .../scripts/DS2-view-models/ds2-profile/post.html | 3 + .../ds2-profile/profile_searchDS2.html | 60 + .../DS2-view-models/ds2-profile/self_profile.html | 227 ++ .../ds2-samplePages/samplePage.html | 78 + .../app/fusion/scripts/DS2-view-models/footer.html | 29 + .../scripts/DS2-view-models/header-logo.html | 19 + .../scripts/DS2-view-models/welcome-content.html} | 20 +- .../app/fusion/scripts/view-models/footer.html | 17 + ui/src/main/webapp/index.html | 115 - .../resources/css/ngDialog-theme-default.css | 211 -- ui/src/main/webapp/resources/css/style.css | 611 ---- .../resources/images/logo_akraino_edge_stack.png | Bin 22245 -> 0 bytes .../js/AECCommittedSubmissionsController.js | 61 - .../js/AECFindBySubmissionIdController.js | 72 - ui/src/main/webapp/resources/js/App.js | 147 - .../main/webapp/resources/js/CommonController.js | 54 - ui/src/main/webapp/reusable_chart.js | 127 - .../css/att_angular_gridster/sandbox-gridster.css | 175 ++ .../css/att_angular_gridster/ui-gridster.css | 143 + .../main/webapp/static/fusion/css/fusion-sunny.css | 399 +++ .../fusion/images/att_angular_gridster/grips.png | Bin 0 -> 951 bytes .../fusion/images/logo_akraino_edge_stack.png | Bin 0 -> 6783 bytes .../fusion/images/logo_akraino_edge_stack2.png | Bin 0 -> 5337 bytes .../js/att_angular_gridster/angular-gridster.js | 2377 ++++++++++++++ .../js/att_angular_gridster/ui-gridster-tpls.js | 168 + .../static/fusion/sample/css/images/blank.gif | Bin 0 -> 49 bytes .../webapp/static/fusion/sample/css/scribble.css | 41 + .../webapp/static/fusion/sample/css/slider.css | 143 + .../static/fusion/sample/css/spacegallery.css | 20 + .../webapp/static/fusion/sample/css/welcome.css | 173 + .../static/fusion/sample/html/area_chart.html | 63 + .../static/fusion/sample/html/bar_chart.html | 110 + .../static/fusion/sample/html/d3_gauges_demo.html | 36 + .../fusion/sample/html/data/speedometer2.csv | 16 + .../fusion/sample/html/data/speedometer3.csv | 2 + .../static/fusion/sample/html/data/worddata.csv | 127 + .../webapp/static/fusion/sample/html/donut_d3.html | 42 + .../static/fusion/sample/html/js/area_chart.min.js | 1 + .../static/fusion/sample/html/js/donut.min.js | 1 + .../static/fusion/sample/html/js/gauges.min.js | 1 + .../static/fusion/sample/html/js/line_chart.min.js | 1 + .../static/fusion/sample/html/js/pie_chart.min.js | 1 + .../static/fusion/sample/html/js/worddata.min.js | 1 + .../static/fusion/sample/html/line_chart.html | 63 + .../static/fusion/sample/html/pie_chart.html | 51 + .../static/fusion/sample/html/wordcloud.html | 35 + .../images/carousel/slide_b_drive_test_map.png | Bin 0 -> 202465 bytes .../sample/images/carousel/slide_b_eppt_county.png | Bin 0 -> 21222 bytes .../images/carousel/slide_b_eppt_regression.png | Bin 0 -> 11536 bytes .../images/carousel/slide_b_ios_throughput.png | Bin 0 -> 26131 bytes .../sample/images/carousel/slide_b_lata_map.png | Bin 0 -> 192031 bytes .../images/carousel/slide_b_lata_map_legend.png | Bin 0 -> 3021 bytes .../images/carousel/slide_b_nova_sdn_map.png | Bin 0 -> 179361 bytes .../static/fusion/sample/images/tunnels/1_mon.png | Bin 0 -> 22762 bytes .../static/fusion/sample/images/tunnels/2_tue.png | Bin 0 -> 22772 bytes .../static/fusion/sample/images/tunnels/3_wed.png | Bin 0 -> 24012 bytes .../static/fusion/sample/images/tunnels/4_thu.png | Bin 0 -> 23902 bytes .../static/fusion/sample/images/tunnels/5_fri.png | Bin 0 -> 22349 bytes .../static/fusion/sample/images/tunnels/6_sat.png | Bin 0 -> 23674 bytes .../static/fusion/sample/images/tunnels/7_sun.png | Bin 0 -> 22845 bytes .../fusion/sample/images/tunnels/BH_DLSTX_IN.png | Bin 0 -> 10575 bytes .../fusion/sample/images/tunnels/BH_DLSTX_OUT.png | Bin 0 -> 10460 bytes .../static/fusion/sample/images/tunnels/BH_Nat.png | Bin 0 -> 10420 bytes .../fusion/sample/images/tunnels/BH_Nat_Def.png | Bin 0 -> 8941 bytes .../sample/images/tunnels/BH_Nat_Priority.png | Bin 0 -> 10590 bytes .../webapp/static/fusion/sample/js/FusionCharts.js | 430 +++ .../main/webapp/static/fusion/sample/js/charts.js | 142 + .../webapp/static/fusion/sample/js/scribble.js | 18 + .../fusion/sample/org_chart/css/bootstrap.min.css | 2708 ++++++++++++++++ .../static/fusion/sample/org_chart/css/custom.css | 98 + .../fusion/sample/org_chart/css/prettify.css | 91 + .../static/fusion/sample/org_chart/prettify.js | 28 + ui/src/main/webapp/views/committedSubmissions.html | 196 -- ui/src/main/webapp/views/findBySubmissionId.html | 182 -- ui/src/main/webapp/views/indexMain.html | 117 - ui/src/main/webapp/views/login.html | 98 - ui/src/main/webapp/views/newSubmission.html | 68 - 198 files changed, 24951 insertions(+), 3698 deletions(-) create mode 100644 docker/mariadb/Dockerfile rename docker/{postgresql => mariadb}/Makefile (100%) create mode 100755 docker/mariadb/deploy.sh rename docker/{postgresql/Dockerfile => mariadb/mariadb.conf} (83%) delete mode 100644 docker/postgresql/akraino-blueprint_validation_db.sql delete mode 100755 docker/postgresql/deploy.sh create mode 100644 ui/db-scripts/EcompSdkDDLMySql_2_4_Common.sql create mode 100644 ui/db-scripts/EcompSdkDDLMySql_2_4_OS.sql create mode 100644 ui/db-scripts/EcompSdkDMLMySql_2_4_Common.sql create mode 100644 ui/db-scripts/EcompSdkDMLMySql_2_4_OS.sql create mode 100644 ui/db-scripts/akraino-blueprint_validation_db.sql create mode 100644 ui/db-scripts/examples/initialize_db_example.sql create mode 100644 ui/distribution.xml mode change 100755 => 100644 ui/pom.xml create mode 100644 ui/src/main/java/org/akraino/validation/ui/client/nexus/resources/WrapperRobotTestResult.java delete mode 100644 ui/src/main/java/org/akraino/validation/ui/common/PropertyUtil.java delete mode 100644 ui/src/main/java/org/akraino/validation/ui/common/SessionManagerFilter.java create mode 100644 ui/src/main/java/org/akraino/validation/ui/conf/ExternalAppConfig.java create mode 100644 ui/src/main/java/org/akraino/validation/ui/conf/ExternalAppInitializer.java create mode 100644 ui/src/main/java/org/akraino/validation/ui/conf/HibernateMappingLocations.java rename ui/src/main/java/org/akraino/validation/ui/{config/AppInitializer.java => conf/UiUtils.java} (55%) delete mode 100644 ui/src/main/java/org/akraino/validation/ui/config/AppConfig.java delete mode 100644 ui/src/main/java/org/akraino/validation/ui/config/HibernateConfig.java delete mode 100644 ui/src/main/java/org/akraino/validation/ui/controller/BlueprintInstanceController.java create mode 100644 ui/src/main/java/org/akraino/validation/ui/controller/BlueprintInstanceForValidationController.java create mode 100644 ui/src/main/java/org/akraino/validation/ui/controller/ModelsViewsController.java create mode 100644 ui/src/main/java/org/akraino/validation/ui/controller/OnapLoginController.java rename ui/src/main/java/org/akraino/validation/ui/controller/{TimeSlotsController.java => TimeslotsController.java} (51%) create mode 100644 ui/src/main/java/org/akraino/validation/ui/dao/BlueprintInstanceForValidationDAO.java rename ui/src/main/java/org/akraino/validation/ui/dao/{BlueprintInstanceDAO.java => LabDAO.java} (64%) create mode 100644 ui/src/main/java/org/akraino/validation/ui/dao/SiloDAO.java delete mode 100644 ui/src/main/java/org/akraino/validation/ui/daoimpl/BlueprintInstanceDAOImpl.java create mode 100644 ui/src/main/java/org/akraino/validation/ui/daoimpl/BlueprintInstanceForValidationDAOImpl.java create mode 100644 ui/src/main/java/org/akraino/validation/ui/daoimpl/LabDAOImpl.java create mode 100644 ui/src/main/java/org/akraino/validation/ui/daoimpl/SiloDAOImpl.java rename ui/src/main/java/org/akraino/validation/ui/entity/{BlueprintInstance.java => BlueprintInstanceForValidation.java} (76%) create mode 100644 ui/src/main/java/org/akraino/validation/ui/entity/LabInfo.java create mode 100644 ui/src/main/java/org/akraino/validation/ui/entity/LabSilo.java create mode 100644 ui/src/main/java/org/akraino/validation/ui/filter/SecurityXssFilter.java create mode 100644 ui/src/main/java/org/akraino/validation/ui/login/LoginStrategyImpl.java create mode 100644 ui/src/main/java/org/akraino/validation/ui/scheduler/Register.java create mode 100644 ui/src/main/java/org/akraino/validation/ui/scheduler/RegistryAdapter.java create mode 100644 ui/src/main/java/org/akraino/validation/ui/service/AdminAuthExtension.java create mode 100644 ui/src/main/java/org/akraino/validation/ui/service/BlueprintInstanceForValidationService.java delete mode 100644 ui/src/main/java/org/akraino/validation/ui/service/BlueprintInstanceService.java create mode 100644 ui/src/main/java/org/akraino/validation/ui/service/LabService.java create mode 100644 ui/src/main/java/org/akraino/validation/ui/service/SiloService.java delete mode 100644 ui/src/main/resources/app.properties delete mode 100644 ui/src/main/resources/hibernate.properties create mode 100644 ui/src/main/resources/key.properties delete mode 100644 ui/src/main/resources/log4j.properties create mode 100644 ui/src/main/resources/logback.xml create mode 100644 ui/src/main/resources/music.properties create mode 100644 ui/src/main/resources/portal.properties create mode 100644 ui/src/main/webapp/WEB-INF/conf/system.properties create mode 100644 ui/src/main/webapp/WEB-INF/defs/definitions.xml create mode 100644 ui/src/main/webapp/WEB-INF/fusion/conf/fusion.properties create mode 100644 ui/src/main/webapp/WEB-INF/fusion/jsp/ds2/footer.jsp create mode 100644 ui/src/main/webapp/WEB-INF/fusion/jsp/ds2/header.jsp create mode 100644 ui/src/main/webapp/WEB-INF/fusion/jsp/ds2/left-menu.jsp create mode 100644 ui/src/main/webapp/WEB-INF/fusion/orm/Analytics.hbm.xml create mode 100644 ui/src/main/webapp/WEB-INF/fusion/orm/RNoteBookIntegration.hbm.xml create mode 100644 ui/src/main/webapp/WEB-INF/index.jsp create mode 100644 ui/src/main/webapp/WEB-INF/jsp/login.jsp create mode 100644 ui/src/main/webapp/WEB-INF/jsp/login_external.jsp mode change 100755 => 100644 ui/src/main/webapp/WEB-INF/web.xml rename ui/src/main/webapp/{resources/js => app/AECBlueprintValidationUI}/App.Config.js (93%) rename ui/src/main/webapp/{resources/js => app/AECBlueprintValidationUI}/App.Services.js (96%) create mode 100644 ui/src/main/webapp/app/AECBlueprintValidationUI/CommittedSubmissions/AECCommittedSubmissions.js create mode 100644 ui/src/main/webapp/app/AECBlueprintValidationUI/CommittedSubmissions/AECCommittedSubmissionsController.js create mode 100644 ui/src/main/webapp/app/AECBlueprintValidationUI/CommittedSubmissions/CommittedSubmissions.html create mode 100644 ui/src/main/webapp/app/AECBlueprintValidationUI/CommittedSubmissions/CommittedSubmissionsTemplate.html create mode 100644 ui/src/main/webapp/app/AECBlueprintValidationUI/CommittedSubmissions/Route.js create mode 100644 ui/src/main/webapp/app/AECBlueprintValidationUI/GetBySubmissionId/AECGetBySubmissionId.js create mode 100644 ui/src/main/webapp/app/AECBlueprintValidationUI/GetBySubmissionId/AECGetBySubmissionIdController.js create mode 100644 ui/src/main/webapp/app/AECBlueprintValidationUI/GetBySubmissionId/GetBySubmissionId.html create mode 100644 ui/src/main/webapp/app/AECBlueprintValidationUI/GetBySubmissionId/GetBySubmissionIdTemplate.html create mode 100644 ui/src/main/webapp/app/AECBlueprintValidationUI/GetBySubmissionId/Route.js create mode 100644 ui/src/main/webapp/app/AECBlueprintValidationUI/NewSubmission/AECNewSubmission.js rename ui/src/main/webapp/{resources/js => app/AECBlueprintValidationUI/NewSubmission}/AECNewSubmissionController.js (62%) create mode 100644 ui/src/main/webapp/app/AECBlueprintValidationUI/NewSubmission/NewSubmission.html create mode 100644 ui/src/main/webapp/app/AECBlueprintValidationUI/NewSubmission/NewSubmissionTemplate.html rename ui/src/main/{java/org/akraino/validation/ui/common/ServiceInitializationListener.java => webapp/app/AECBlueprintValidationUI/NewSubmission/Route.js} (60%) create mode 100644 ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/font_icons.css create mode 100644 ui/src/main/webapp/app/fusion/external/ds2/css/digital-ng-library/ecomp-ionicons.css create mode 100644 ui/src/main/webapp/app/fusion/external/ds2/css/digital-ng-library/ionicons.css create mode 100644 ui/src/main/webapp/app/fusion/external/ds2/css/fonts/ionicons.eot create mode 100644 ui/src/main/webapp/app/fusion/external/ds2/css/fonts/ionicons.svg create mode 100644 ui/src/main/webapp/app/fusion/external/ds2/css/fonts/ionicons.ttf create mode 100644 ui/src/main/webapp/app/fusion/external/ds2/css/fonts/ionicons.woff create mode 100644 ui/src/main/webapp/app/fusion/scripts/DS2-controllers/ds-profile/post-controller.js create mode 100644 ui/src/main/webapp/app/fusion/scripts/DS2-controllers/samplePage-route.js create mode 100644 ui/src/main/webapp/app/fusion/scripts/DS2-services/postSearch.js create mode 100644 ui/src/main/webapp/app/fusion/scripts/DS2-view-models/ds2-profile/post.html create mode 100644 ui/src/main/webapp/app/fusion/scripts/DS2-view-models/ds2-profile/profile_searchDS2.html create mode 100644 ui/src/main/webapp/app/fusion/scripts/DS2-view-models/ds2-profile/self_profile.html create mode 100644 ui/src/main/webapp/app/fusion/scripts/DS2-view-models/ds2-samplePages/samplePage.html create mode 100644 ui/src/main/webapp/app/fusion/scripts/DS2-view-models/footer.html create mode 100644 ui/src/main/webapp/app/fusion/scripts/DS2-view-models/header-logo.html rename ui/src/main/webapp/{WEB-INF/views/welcome.jsp => app/fusion/scripts/DS2-view-models/welcome-content.html} (64%) mode change 100755 => 100644 create mode 100644 ui/src/main/webapp/app/fusion/scripts/view-models/footer.html delete mode 100755 ui/src/main/webapp/index.html delete mode 100644 ui/src/main/webapp/resources/css/ngDialog-theme-default.css delete mode 100755 ui/src/main/webapp/resources/css/style.css delete mode 100755 ui/src/main/webapp/resources/images/logo_akraino_edge_stack.png delete mode 100644 ui/src/main/webapp/resources/js/AECCommittedSubmissionsController.js delete mode 100644 ui/src/main/webapp/resources/js/AECFindBySubmissionIdController.js delete mode 100755 ui/src/main/webapp/resources/js/App.js delete mode 100644 ui/src/main/webapp/resources/js/CommonController.js delete mode 100644 ui/src/main/webapp/reusable_chart.js create mode 100644 ui/src/main/webapp/static/fusion/css/att_angular_gridster/sandbox-gridster.css create mode 100644 ui/src/main/webapp/static/fusion/css/att_angular_gridster/ui-gridster.css create mode 100644 ui/src/main/webapp/static/fusion/css/fusion-sunny.css create mode 100644 ui/src/main/webapp/static/fusion/images/att_angular_gridster/grips.png create mode 100644 ui/src/main/webapp/static/fusion/images/logo_akraino_edge_stack.png create mode 100644 ui/src/main/webapp/static/fusion/images/logo_akraino_edge_stack2.png create mode 100644 ui/src/main/webapp/static/fusion/js/att_angular_gridster/angular-gridster.js create mode 100644 ui/src/main/webapp/static/fusion/js/att_angular_gridster/ui-gridster-tpls.js create mode 100644 ui/src/main/webapp/static/fusion/sample/css/images/blank.gif create mode 100644 ui/src/main/webapp/static/fusion/sample/css/scribble.css create mode 100644 ui/src/main/webapp/static/fusion/sample/css/slider.css create mode 100644 ui/src/main/webapp/static/fusion/sample/css/spacegallery.css create mode 100644 ui/src/main/webapp/static/fusion/sample/css/welcome.css create mode 100644 ui/src/main/webapp/static/fusion/sample/html/area_chart.html create mode 100644 ui/src/main/webapp/static/fusion/sample/html/bar_chart.html create mode 100644 ui/src/main/webapp/static/fusion/sample/html/d3_gauges_demo.html create mode 100644 ui/src/main/webapp/static/fusion/sample/html/data/speedometer2.csv create mode 100644 ui/src/main/webapp/static/fusion/sample/html/data/speedometer3.csv create mode 100644 ui/src/main/webapp/static/fusion/sample/html/data/worddata.csv create mode 100644 ui/src/main/webapp/static/fusion/sample/html/donut_d3.html create mode 100644 ui/src/main/webapp/static/fusion/sample/html/js/area_chart.min.js create mode 100644 ui/src/main/webapp/static/fusion/sample/html/js/donut.min.js create mode 100644 ui/src/main/webapp/static/fusion/sample/html/js/gauges.min.js create mode 100644 ui/src/main/webapp/static/fusion/sample/html/js/line_chart.min.js create mode 100644 ui/src/main/webapp/static/fusion/sample/html/js/pie_chart.min.js create mode 100644 ui/src/main/webapp/static/fusion/sample/html/js/worddata.min.js create mode 100644 ui/src/main/webapp/static/fusion/sample/html/line_chart.html create mode 100644 ui/src/main/webapp/static/fusion/sample/html/pie_chart.html create mode 100644 ui/src/main/webapp/static/fusion/sample/html/wordcloud.html create mode 100644 ui/src/main/webapp/static/fusion/sample/images/carousel/slide_b_drive_test_map.png create mode 100644 ui/src/main/webapp/static/fusion/sample/images/carousel/slide_b_eppt_county.png create mode 100644 ui/src/main/webapp/static/fusion/sample/images/carousel/slide_b_eppt_regression.png create mode 100644 ui/src/main/webapp/static/fusion/sample/images/carousel/slide_b_ios_throughput.png create mode 100644 ui/src/main/webapp/static/fusion/sample/images/carousel/slide_b_lata_map.png create mode 100644 ui/src/main/webapp/static/fusion/sample/images/carousel/slide_b_lata_map_legend.png create mode 100644 ui/src/main/webapp/static/fusion/sample/images/carousel/slide_b_nova_sdn_map.png create mode 100644 ui/src/main/webapp/static/fusion/sample/images/tunnels/1_mon.png create mode 100644 ui/src/main/webapp/static/fusion/sample/images/tunnels/2_tue.png create mode 100644 ui/src/main/webapp/static/fusion/sample/images/tunnels/3_wed.png create mode 100644 ui/src/main/webapp/static/fusion/sample/images/tunnels/4_thu.png create mode 100644 ui/src/main/webapp/static/fusion/sample/images/tunnels/5_fri.png create mode 100644 ui/src/main/webapp/static/fusion/sample/images/tunnels/6_sat.png create mode 100644 ui/src/main/webapp/static/fusion/sample/images/tunnels/7_sun.png create mode 100644 ui/src/main/webapp/static/fusion/sample/images/tunnels/BH_DLSTX_IN.png create mode 100644 ui/src/main/webapp/static/fusion/sample/images/tunnels/BH_DLSTX_OUT.png create mode 100644 ui/src/main/webapp/static/fusion/sample/images/tunnels/BH_Nat.png create mode 100644 ui/src/main/webapp/static/fusion/sample/images/tunnels/BH_Nat_Def.png create mode 100644 ui/src/main/webapp/static/fusion/sample/images/tunnels/BH_Nat_Priority.png create mode 100644 ui/src/main/webapp/static/fusion/sample/js/FusionCharts.js create mode 100644 ui/src/main/webapp/static/fusion/sample/js/charts.js create mode 100644 ui/src/main/webapp/static/fusion/sample/js/scribble.js create mode 100644 ui/src/main/webapp/static/fusion/sample/org_chart/css/bootstrap.min.css create mode 100644 ui/src/main/webapp/static/fusion/sample/org_chart/css/custom.css create mode 100644 ui/src/main/webapp/static/fusion/sample/org_chart/css/prettify.css create mode 100644 ui/src/main/webapp/static/fusion/sample/org_chart/prettify.js delete mode 100644 ui/src/main/webapp/views/committedSubmissions.html delete mode 100644 ui/src/main/webapp/views/findBySubmissionId.html delete mode 100644 ui/src/main/webapp/views/indexMain.html delete mode 100644 ui/src/main/webapp/views/login.html delete mode 100644 ui/src/main/webapp/views/newSubmission.html diff --git a/.coafile b/.coafile index 95a31b4..0514a52 100644 --- a/.coafile +++ b/.coafile @@ -46,6 +46,12 @@ bears = SpaceConsistencyBear,JavaPMDBear files = ui/**.java language = java use_spaces = true +ignore = ui/target/**, + ui/src/main/java/org/akraino/validation/ui/login/LoginStrategyImpl.java, + ui/src/main/java/org/akraino/validation/ui/conf/ExternalAppInitializer.java, + ui/src/main/java/org/akraino/validation/ui/scheduler/RegistryAdapter.java, + ui/src/main/java/org/akraino/validation/ui/conf/ExternalAppConfig.java, + ui/src/main/java/org/akraino/validation/ui/filter/SecurityXssFilter.java [all.JS] bears = ESLintBear,JSComplexityBear @@ -53,6 +59,10 @@ files = ui/**.js language = javascript javascript_strictness = False use_spaces = true -ignore = ui/src/main/webapp/reusable_chart.js, +ignore = ui/src/main/webapp/app/fusion/**, + ui/src/main/webapp/static/**, ui/bin/**, - ui/target/** + ui/target/**, + ui/src/main/webapp/app/AECBlueprintValidationUI/NewSubmission/AECNewSubmission.js, + ui/src/main/webapp/app/AECBlueprintValidationUI/CommittedSubmissions/AECCommittedSubmissions.js, + ui/src/main/webapp/app/AECBlueprintValidationUI/GetBySubmissionId/AECGetBySubmissionId.js diff --git a/docker/README.rst b/docker/README.rst index 34e7641..e4c4f4b 100644 --- a/docker/README.rst +++ b/docker/README.rst @@ -76,9 +76,8 @@ stored on the local server. By default, the container will run the k8s conformance test. If you want to enter the container, add */bin/sh* at the end of the command above - -The postgresql container -======================== +The mariadb container +===================== Building and pushing the container ---------------------------------- @@ -87,25 +86,35 @@ To build just the postgresql container, use the command: .. code-block:: console - make postgresql-build [ REGISTRY= NAME=] + make mariadb-build [ REGISTRY= NAME=] To both build and push the container, use the command: .. code-block:: console - make postgresql [ REGISTRY= NAME=] + make mariadb [ REGISTRY= NAME=] Using the container ------------------- +In order for the container to be easily created, the deploy.sh script has been developed. This script accepts the following as input parameters: -If you want to deploy the container, you can run the corresponding deploy.sh script with the appropriate parameters. +CONTAINER_NAME, name of the container, default value is akraino-validation-mariadb +MARIADB_ROOT_PASSWORD, the desired mariadb root user password, this variable is required +UI_ADMIN_PASSWORD, the desired Blueprint Validation UI password for the admin user, this variable is required +UI_AKRAINO_PASSWORD, the desired Blueprint Validation UI password for the akraino user, this variable is required +REGISTRY, registry of the mariadb image, default value is akraino +NAME, name of the mariadb image, default value is validation +TAG_PRE, first part of the image version, default value is mariadb +TAG_VER, last part of the image version, default value is latest +MARIADB_HOST_PORT, port on which mariadb is exposed on host, default value is 3307 -Example: +If you want to deploy the container, you can run this script with the appropriate parameters. -.. code-block:: console +Example (assuming you have used the default variables for building the image using the make command): - ./deploy.sh POSTGRES_PASSWORD=password +.. code-block:: console + ./deploy.sh MARIADB_ROOT_PASSWORD=password UI_ADMIN_PASSWORD=admin UI_AKRAINO_PASSWORD=akraino The ui container ================ @@ -113,8 +122,7 @@ The ui container Building and pushing the container ---------------------------------- -To build just the ui container, you must first compile the ui project. -Then use the command: +To build just the UI container, use the command: .. code-block:: console @@ -128,15 +136,37 @@ To both build and push the container, use the command: Using the container ------------------- +In order for the container to be easily created, the deploy.sh script has been developed. This script accepts the following as input parameters: -If you want to deploy the container, you can run the corresponding deploy.sh script with the appropriate parameters. -Note, that you must also build and run the postgresql container for a functional UI. +CONTAINER_NAME, name of the contaner, default value is akraino-validation-ui +DB_CONNECTION_URL, the URL connection with the akraino database of the maridb instance, this variable is required +MARIADB_ROOT_PASSWORD, mariadb root user password, this variable is required +REGISTRY, registry of the mariadb image, default value is akraino +NAME, name of the mariadb image, default value is validation +TAG_PRE, first part of the image version, default value is ui +TAG_VER, last part of the image version, default value is latest +JENKINS_URL, the URL of the Jenkins instance, this variable is required +JENKINS_USERNAME, the Jenkins user name, this variable is required +JENKINS_USER_PASSWORD, the Jenkins user password, this variable is required +JENKINS_JOB_NAME, the name of Jenkins job capable of executing the blueprint validation tests, this variable is required +NEXUS_PROXY, the proxy needed in order for the Nexus server to be reachable, default value is none +JENKINS_PROXY, the proxy needed in order for the Jenkins server to be reachable, default value is none -Example: +Note that, for a functional UI, the following prerequisites are needed: + +- The mariadb container in up and running state +- A Jenkins instance capable of running the blueprint validation test +- A Nexus repo in which all the test results are stored. + +Look at the UI README file for more info. + +If you want to deploy the container, you can run the aforementioned script with the appropriate parameters. + +Example (assuming you have used the default variables for building the image using the make command): .. code-block:: console - ./deploy.sh postgres_db_user_pwd=password jenkins_url=http://192.168.2.2:8080 jenkins_user_name=name jenkins_user_pwd=jenkins_pwd jenkins_job_name=job1 nexus_results_url=https://nexus.akraino.org/content/sites/logs proxy_ip=172.28.40.9 proxy_port=3128 + ./deploy.sh DB_CONNECTION_URL=172.17.0.3:3306/akraino MARIADB_ROOT_PASSWORD=password JENKINS_URL=http://192.168.2.2:8080 JENKINS_USERNAME=name JENKINS_USER_PASSWORD=jenkins_pwd JENKINS_JOB_NAME=job1 The kube-conformance container ============================== diff --git a/docker/mariadb/Dockerfile b/docker/mariadb/Dockerfile new file mode 100644 index 0000000..7d109bc --- /dev/null +++ b/docker/mariadb/Dockerfile @@ -0,0 +1,25 @@ +############################################################################## +# Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. # +# # +# Licensed under the Apache License, Version 2.0 (the "License"); # +# you maynot use this file except in compliance with the License. # +# # +# You may obtain a copy of the License at # +# http://www.apache.org/licenses/LICENSE-2.0 # +# # +# Unless required by applicable law or agreed to in writing, software # +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # +# See the License for the specific language governing permissions and # +# limitations under the License. # +############################################################################## + +FROM alpine/git:1.0.7 +RUN git clone https://gerrit.akraino.org/r/validation /opt/akraino/validation/repo + +FROM mariadb:10.4.6 +COPY --from=0 /opt/akraino/validation/repo/ui/db-scripts/EcompSdkDDLMySql_2_4_Common.sql /docker-entrypoint-initdb.d +COPY --from=0 /opt/akraino/validation/repo/ui/db-scripts/EcompSdkDDLMySql_2_4_OS.sql /docker-entrypoint-initdb.d +COPY --from=0 /opt/akraino/validation/repo/ui/db-scripts/EcompSdkDMLMySql_2_4_Common.sql /docker-entrypoint-initdb.d +COPY --from=0 /opt/akraino/validation/repo/ui/db-scripts/EcompSdkDMLMySql_2_4_OS.sql /docker-entrypoint-initdb.d +COPY --from=0 /opt/akraino/validation/repo/ui/db-scripts/akraino-blueprint_validation_db.sql /docker-entrypoint-initdb.d diff --git a/docker/postgresql/Makefile b/docker/mariadb/Makefile similarity index 100% rename from docker/postgresql/Makefile rename to docker/mariadb/Makefile diff --git a/docker/mariadb/deploy.sh b/docker/mariadb/deploy.sh new file mode 100755 index 0000000..12c985c --- /dev/null +++ b/docker/mariadb/deploy.sh @@ -0,0 +1,71 @@ +#!/bin/bash +# +# Copyright (c) 2019 AT&T Intellectual Property. All other rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Directory on host in where database data will be stored +HOST_STORAGE_DIR="/var/lib/mariadb" +# Container name +CONTAINER_NAME="akraino-validation-mariadb" +# Container input variables +MARIADB_ROOT_PASSWORD="" +UI_ADMIN_PASSWORD="" +UI_AKRAINO_PASSWORD="" +# Image data +REGISTRY=akraino +NAME=validation +TAG_PRE=mariadb +TAG_VER=latest +MARIADB_HOST_PORT=3307 + +for ARGUMENT in "$@" +do + KEY=$(echo $ARGUMENT | cut -f1 -d=) + VALUE=$(echo $ARGUMENT | cut -f2 -d=) + case "$KEY" in + REGISTRY) REGISTRY=${VALUE} ;; + NAME) NAME=${VALUE} ;; + TAG_VER) TAG_VER=${VALUE} ;; + TAG_PRE) TAG_PRE=${VALUE} ;; + MARIADB_ROOT_PASSWORD) MARIADB_ROOT_PASSWORD=${VALUE} ;; + CONTAINER_NAME) CONTAINER_NAME=${VALUE} ;; + MARIADB_HOST_PORT) MARIADB_HOST_PORT=${VALUE} ;; + UI_ADMIN_PASSWORD) UI_ADMIN_PASSWORD=${VALUE} ;; + UI_AKRAINO_PASSWORD) UI_AKRAINO_PASSWORD=${VALUE} ;; + *) + esac +done + +if [ -z "$MARIADB_ROOT_PASSWORD" ] + then + echo "ERROR: You must specify the mariadb database root password" + exit 1 +fi + +if [ -z "$UI_ADMIN_PASSWORD" ] + then + echo "ERROR: You must specify the password of the UI admin user" + exit 1 +fi + +if [ -z "$UI_AKRAINO_PASSWORD" ] + then + echo "ERROR: You must specify the password for the UI akraino user" + exit 1 +fi + +IMAGE="$REGISTRY"/"$NAME":"$TAG_PRE"-"$TAG_VER" +docker run --detach --name $CONTAINER_NAME --publish $MARIADB_HOST_PORT:3306 --volume $HOST_STORAGE_DIR:/var/lib/mysql -v "/$(pwd)/mariadb.conf:/etc/mysql/conf.d/my.cnf" -e MYSQL_ROOT_PASSWORD="$MARIADB_ROOT_PASSWORD" -e UI_ADMIN_PASSWORD="$UI_ADMIN_PASSWORD" -e UI_AKRAINO_PASSWORD="$UI_AKRAINO_PASSWORD" $IMAGE +sleep 10 +docker exec $CONTAINER_NAME /bin/bash -c 'sed -i 's/admin_password/'"$UI_ADMIN_PASSWORD"'/g' /docker-entrypoint-initdb.d/EcompSdkDMLMySql_2_4_OS.sql ; sed -i 's/akraino_password/'"$UI_AKRAINO_PASSWORD"'/g' /docker-entrypoint-initdb.d/akraino-blueprint_validation_db.sql; continue=`ps aux | grep mysql` ; while [ -z "$continue" ]; do continue=`ps aux | grep mysql`; sleep 5; done ; sleep 10 ;' diff --git a/docker/postgresql/Dockerfile b/docker/mariadb/mariadb.conf similarity index 83% rename from docker/postgresql/Dockerfile rename to docker/mariadb/mariadb.conf index 0259da2..0819156 100644 --- a/docker/postgresql/Dockerfile +++ b/docker/mariadb/mariadb.conf @@ -14,8 +14,6 @@ # limitations under the License. # ############################################################################## -FROM postgres:9.6.9 +[mysqld] +lower_case_table_names = 1 -COPY akraino-blueprint_validation_db.sql /akraino-blueprint_validation_db.sql -RUN chown -R postgres:postgres /var/lib/postgresql/data && \ - chown -R postgres:postgres /akraino-blueprint_validation_db.sql \ No newline at end of file diff --git a/docker/postgresql/akraino-blueprint_validation_db.sql b/docker/postgresql/akraino-blueprint_validation_db.sql deleted file mode 100644 index fb27ad5..0000000 --- a/docker/postgresql/akraino-blueprint_validation_db.sql +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -drop sequence IF EXISTS akraino.seq_timeslot; -drop sequence IF EXISTS akraino.seq_blueprint; -drop sequence IF EXISTS akraino.seq_blueprint_instance; -drop sequence IF EXISTS akraino.seq_submission; - -drop table IF EXISTS akraino.submission; -drop table IF EXISTS akraino.blueprint_instance; -drop table IF EXISTS akraino.blueprint; -drop table IF EXISTS akraino.timeslot; - -CREATE SCHEMA IF NOT EXISTS akraino - AUTHORIZATION postgres; - -CREATE TABLE akraino.timeslot -( - timeslot_id bigint not NULL unique, - start_date_time text not NULL, - duration int not NULL, - lab text not NULL -) -WITH ( - OIDS = FALSE -) -; -ALTER TABLE akraino.timeslot - OWNER TO postgres; - -CREATE TABLE akraino.blueprint -( - blueprint_id bigint not NULL, - blueprint_name text not NULL unique, - CONSTRAINT blueprint_id_pk PRIMARY KEY (blueprint_id) -) -WITH ( - OIDS = FALSE -) -; -ALTER TABLE akraino.blueprint - OWNER TO postgres; - -CREATE TABLE akraino.blueprint_instance -( - blueprint_instance_id bigint not NULL, - blueprint_id bigint not NULL, - version text not NULL, - layer text not NULL, - layer_description text not NULL, - timeslot_id bigint not NULL unique, - CONSTRAINT blueprint_instance_id_pk PRIMARY KEY (blueprint_instance_id), - CONSTRAINT blueprint_id_fk FOREIGN KEY (blueprint_id) - REFERENCES akraino.blueprint (blueprint_id) MATCH SIMPLE - ON UPDATE NO ACTION ON DELETE NO ACTION, - CONSTRAINT timeslot_id_fk FOREIGN KEY (timeslot_id) - REFERENCES akraino.timeslot (timeslot_id) MATCH SIMPLE - ON UPDATE NO ACTION ON DELETE NO ACTION -) -WITH ( - OIDS = FALSE -) -; -ALTER TABLE akraino.blueprint_instance - OWNER TO postgres; - -CREATE TABLE akraino.submission -( - submission_id bigint not NULL, - status text not NULL, - jenkins_queue_job_item_url text, - nexus_result_url text, - blueprint_instance_id bigint not NULL, - CONSTRAINT submission_id_pk PRIMARY KEY (submission_id), - CONSTRAINT blueprint_instance_id_fk FOREIGN KEY (blueprint_instance_id) - REFERENCES akraino.blueprint_instance (blueprint_instance_id) MATCH SIMPLE - ON UPDATE NO ACTION ON DELETE NO ACTION -) -WITH ( - OIDS = FALSE -) -; -ALTER TABLE akraino.submission - OWNER TO postgres; - -CREATE SEQUENCE akraino.seq_timeslot - START WITH 1 INCREMENT BY 1; - -CREATE SEQUENCE akraino.seq_blueprint - START WITH 1 INCREMENT BY 1; - -CREATE SEQUENCE akraino.seq_blueprint_instance - START WITH 1 INCREMENT BY 1; - -CREATE SEQUENCE akraino.seq_submission - START WITH 1 INCREMENT BY 1; - -insert into akraino.timeslot values(1, now(), 10, 0); /* stands for AT&T lab */ -insert into akraino.timeslot values(2, now(), 1000, 0); /* stands for AT&T lab */ -insert into akraino.timeslot values(3, now(), 10000, 0); /* stands for AT&T lab */ -insert into akraino.timeslot values(4, now(), 100000, 0); /* stands for AT&T lab */ -insert into akraino.timeslot values(5, now(), 100000, 0); /* stands for AT&T lab */ - -insert into akraino.blueprint (blueprint_id, blueprint_name) values(1, 'dummy'); -insert into akraino.blueprint (blueprint_id, blueprint_name) values(2, 'Unicycle'); -insert into akraino.blueprint (blueprint_id, blueprint_name) values(3, 'REC'); - -insert into akraino.blueprint_instance (blueprint_instance_id, blueprint_id, version, layer, layer_description, timeslot_id) values(1, 1, '0.0.2-SNAPSHOT', 0, 'Dell Hardware', 1); /* 0 Stands for hardware layer */ -insert into akraino.blueprint_instance (blueprint_instance_id, blueprint_id, version, layer, layer_description, timeslot_id) values(2, 2, '0.0.1-SNAPSHOT', 0, 'Dell Hardware', 2); /* 0 Stands for hardware layer */ -insert into akraino.blueprint_instance (blueprint_instance_id, blueprint_id, version, layer, layer_description, timeslot_id) values(3, 2, '0.0.7-SNAPSHOT', 1, 'CentOS Linux 7 (Core)', 3); /* 1 Stands for OS layer */ -insert into akraino.blueprint_instance (blueprint_instance_id, blueprint_id, version, layer, layer_description, timeslot_id) values(4, 3, '0.0.4-SNAPSHOT', 2, 'K8s with High Availability Ingress controller', 4); /* 2 Stands for k8s layer */ -insert into akraino.blueprint_instance (blueprint_instance_id, blueprint_id, version, layer, layer_description, timeslot_id) values(5, 3, '0.0.8-SNAPSHOT', 2, 'K8s with High Availability Ingress controller', 5); /* 2 Stands for k8s layer */ - -commit; diff --git a/docker/postgresql/deploy.sh b/docker/postgresql/deploy.sh deleted file mode 100755 index 60af84e..0000000 --- a/docker/postgresql/deploy.sh +++ /dev/null @@ -1,54 +0,0 @@ -#!/bin/bash -# -# Copyright (c) 2019 AT&T Intellectual Property. All other rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -export DROOT=/var/lib -CONTAINER_NAME="validation_postgresql" -POSTGRES_HOST_PORT=6432 -REGISTRY=akraino -NAME=validation -TAG_PRE=`echo "${PWD##*/}"` -TAG_VER=latest -POSTGRES_PASSWORD="" -HOST_ARCH=amd64 - -# get the architecture of the host -if [ "`uname -m`" = "aarch64" ]; then - HOST_ARCH=arm64 -fi - -for ARGUMENT in "$@" -do - KEY=$(echo $ARGUMENT | cut -f1 -d=) - VALUE=$(echo $ARGUMENT | cut -f2 -d=) - case "$KEY" in - REGISTRY) REGISTRY=${VALUE} ;; - NAME) NAME=${VALUE} ;; - TAG_VER) TAG_VER=${VALUE} ;; - POSTGRES_PASSWORD) POSTGRES_PASSWORD=${VALUE} ;; - *) - esac -done - -if [ -z "$POSTGRES_PASSWORD" ] - then - echo "ERROR: You must specify at least the postgreSQL database password" - exit 1 -fi - -IMAGE="$REGISTRY"/"$NAME":"$TAG_PRE"-"$HOST_ARCH"-"$TAG_VER" -docker run --detach --name $CONTAINER_NAME --restart=always --publish $POSTGRES_HOST_PORT:5432 --volume $DROOT/postgres:/var/lib/postgresql/data --env POSTGRES_USER=admin --env POSTGRES_PASSWORD="$POSTGRES_PASSWORD" $IMAGE -sleep 10 -docker exec $CONTAINER_NAME /bin/bash -c "psql -h localhost -p 5432 -U admin -f /akraino-blueprint_validation_db.sql" diff --git a/docker/ui/Dockerfile b/docker/ui/Dockerfile index cec47f9..3f5c98a 100644 --- a/docker/ui/Dockerfile +++ b/docker/ui/Dockerfile @@ -16,7 +16,7 @@ FROM maven:3.6.1-jdk-11 as build RUN git clone https://gerrit.akraino.org/r/validation /opt/akraino/validation/repo -RUN cd /opt/akraino/validation/repo/ui && mvn clean install +RUN cd /opt/akraino/validation/repo/ui && mvn clean package FROM tomcat:8.5.37 COPY --from=build /opt/akraino/validation/repo/ui/target/AECBlueprintValidationUI.war /usr/local/tomcat/webapps diff --git a/docker/ui/deploy.sh b/docker/ui/deploy.sh index fef0bed..6b77dd9 100755 --- a/docker/ui/deploy.sh +++ b/docker/ui/deploy.sh @@ -14,26 +14,22 @@ # See the License for the specific language governing permissions and # limitations under the License. -CONTAINER_NAME="validation-ui" +# Container name +CONTAINER_NAME="akraino-validation-ui" +# Image data REGISTRY=akraino NAME=validation -TAG_PRE=`echo "${PWD##*/}"` +TAG_PRE=ui TAG_VER=latest -HOST_ARCH=amd64 -postgres_db_user_pwd="" -jenkins_url="" -jenkins_user_name="" -jenkins_user_pwd="" -jenkins_job_name="" -nexus_results_url="" -proxy_ip="" -proxy_port="" - -# get the architecture of the host -if [ "`uname -m`" = "aarch64" ] - then - HOST_ARCH=arm64 -fi +# Container input parameters +MARIADB_ROOT_PASSWORD="" +JENKINS_URL="" +JENKINS_USERNAME="" +JENKINS_USER_PASSWORD="" +JENKINS_JOB_NAME="" +DB_CONNECTION_URL="" +NEXUS_PROXY="" +JENKINS_PROXY="" for ARGUMENT in "$@" do @@ -42,55 +38,57 @@ do case "$KEY" in REGISTRY) REGISTRY=${VALUE} ;; NAME) NAME=${VALUE} ;; + TAG_PRE) TAG_PRE=${VALUE} ;; TAG_VER) TAG_VER=${VALUE} ;; - postgres_db_user_pwd) postgres_db_user_pwd=${VALUE} ;; - jenkins_url) jenkins_url=${VALUE} ;; - jenkins_user_name) jenkins_user_name=${VALUE} ;; - jenkins_user_pwd) jenkins_user_pwd=${VALUE} ;; - jenkins_job_name) jenkins_job_name=${VALUE} ;; - nexus_results_url) nexus_results_url=${VALUE} ;; - proxy_ip) proxy_ip=${VALUE} ;; - proxy_port) proxy_port=${VALUE} ;; + MARIADB_ROOT_PASSWORD) MARIADB_ROOT_PASSWORD=${VALUE} ;; + JENKINS_URL) JENKINS_URL=${VALUE} ;; + JENKINS_USERNAME) JENKINS_USERNAME=${VALUE} ;; + JENKINS_USER_PASSWORD) JENKINS_USER_PASSWORD=${VALUE} ;; + JENKINS_JOB_NAME) JENKINS_JOB_NAME=${VALUE} ;; + DB_CONNECTION_URL) DB_CONNECTION_URL=${VALUE} ;; + CONTAINER_NAME) CONTAINER_NAME=${VALUE} ;; + NEXUS_PROXY) NEXUS_PROXY=${VALUE} ;; + JENKINS_PROXY) JENKINS_PROXY=${VALUE} ;; *) esac done -if [ -z "$postgres_db_user_pwd" ] +if [ -z "$DB_CONNECTION_URL" ] then - echo "ERROR: You must specify the postgresql root user password" + echo "ERROR: You must specify the database connection url" exit 1 fi -if [ -z "$jenkins_url" ] +if [ -z "$MARIADB_ROOT_PASSWORD" ] then - echo "ERROR: You must specify the Jenkins Url" + echo "ERROR: You must specify the mariadb root user password" exit 1 fi -if [ -z "$jenkins_user_name" ] +if [ -z "$JENKINS_URL" ] then - echo "ERROR: You must specify the Jenkins username" + echo "ERROR: You must specify the Jenkins Url" exit 1 fi -if [ -z "$jenkins_user_pwd" ] +if [ -z "$JENKINS_USERNAME" ] then - echo "ERROR: You must specify the Jenkins user password" + echo "ERROR: You must specify the Jenkins username" exit 1 fi -if [ -z "$jenkins_job_name" ] +if [ -z "$JENKINS_USER_PASSWORD" ] then - echo "ERROR: You must specify the Jenkins job name" + echo "ERROR: You must specify the Jenkins user password" exit 1 fi -if [ -z "$nexus_results_url" ] +if [ -z "$JENKINS_JOB_NAME" ] then - echo "ERROR: You must specify the Nexus Url" + echo "ERROR: You must specify the Jenkins job name" exit 1 fi -IMAGE="$REGISTRY"/"$NAME":"$TAG_PRE"-"$HOST_ARCH"-"$TAG_VER" -docker run --name $CONTAINER_NAME --network="host" -it --rm -e postgres_db_user_pwd="$postgres_db_user_pwd" -e jenkins_url="$jenkins_url" -e jenkins_user_name="$jenkins_user_name" -e jenkins_user_pwd="$jenkins_user_pwd" -e jenkins_job_name="$jenkins_job_name" -e nexus_results_url="$nexus_results_url" -e proxy_ip="$proxy_ip" -e proxy_port="$proxy_port" $IMAGE +IMAGE="$REGISTRY"/"$NAME":"$TAG_PRE"-"$TAG_VER" +docker run --name $CONTAINER_NAME --network="host" -it --rm -e DB_CONNECTION_URL="$DB_CONNECTION_URL" -e MARIADB_ROOT_PASSWORD="$MARIADB_ROOT_PASSWORD" -e JENKINS_URL="$JENKINS_URL" -e JENKINS_USERNAME="$JENKINS_USERNAME" -e JENKINS_USER_PASSWORD="$JENKINS_USER_PASSWORD" -e JENKINS_JOB_NAME="$JENKINS_JOB_NAME" -e NEXUS_PROXY="$NEXUS_PROXY" -e JENKINS_PROXY="$JENKINS_PROXY" $IMAGE sleep 10 diff --git a/ui/CHANGELOG.md b/ui/CHANGELOG.md index fd87d9b..beb7192 100644 --- a/ui/CHANGELOG.md +++ b/ui/CHANGELOG.md @@ -59,4 +59,39 @@ All notable changes to this project will be documented in this file. - Trailing spaces removed from all files. - README file is updated. -### Removed \ No newline at end of file +### Removed + +## [0.1.0-SNAPSHOT] - 24 June 2019 +### Added +- The following database initialization scripts of ONAP portal SDK project have been added (but modified in order to support the Akraino database) : epsdk-app-common/db-scripts/EcompSdkDDLMySql_2_4_Common.sql, epsdk-app-os/db-scripts/EcompSdkDDLMySql_2_4_OS.sql, epsdk-app-common/db-scripts/EcompSdkDMLMySql_2_4_Common.sql and epsdk-app-os/db-scripts/EcompSdkDMLMySql_2_4_OS.sql. The copyrights of these files have not been changed. +- Proxies for connecting with Nexus and Jenkins are now supported. +- io.fabric8/docker-maven-plugin can now be used for creating UI container for development purposes + +### Changed +- Adaptation to ONAP portal SDK completed. Version 2.4.0 (Casablanca) has been used. +- The new URL of the results stored in Nexus is now used. +- Jenkins API is used by utilizing lower case for blueprint names and layers +- README file is updated +- Bug fixed when test suite is selected +- Jenkins job name is dynamically defined in the Nexus result URL +- Shell script input variables are now declared using capital letters + +### Removed + +## [0.1.0-SNAPSHOT] - 2 Jule 2019 +### Added +- "All" blueprint layers is now supported. +- Pop up windows inform UI user about the status of result retrieval +- Blueprint version is now passed as a parameter to the Jenkins validation job +- Database tables have been added, namely 'lab' and 'silo' + +### Changed +- Start date time and duration are initialized to 'now' and null respectively, as they are not taken into account +- As the blueprint, bluprint_instance_for_validation and timeslot tables must be initialized differently for each lab use case, the previous initialization data was extracted from the db-scripts/akraino-blueprint_validation_db_example.sql file and was placed inside a new file, namely db-scripts/examples/initialize_db_example.sql. +- The table 'blueprint_instance' has been renamed to 'blueprint_instance_for_validation' +- DB scripts are now copied to the /docker-entrypoint-initdb.d directory +- Lab field has been removed from timeslot table and placed in the submission table. +- README file has been updated +- Definition of system architecture removed from the pom.xml + +### Removed diff --git a/ui/README.rst b/ui/README.rst index 73ec832..afb7c16 100644 --- a/ui/README.rst +++ b/ui/README.rst @@ -2,159 +2,343 @@ Akraino Blueprint Validation UI ======== -This project contains the source code of the Akraino Blueprint Validation UI. +Introduction +------------ + +This project contains the source code of the Akraino Blueprint Validation UI. It is based on the ONAP portal SDK, version 2.4.0. It should be noted that the copyright of all the files of the aforementioned project that were left intact, has not been changed. This UI consists of the front-end and back-end parts. -The front-end part is based on HTML, CSS, and AngularJS technologies. -The back-end part is based on Spring MVC and Apache Tomcat technologies. + +The front-end part is based on HTML, CSS, and AngularJS technologies. The back-end part is based on Spring MVC and Apache Tomcat technologies. Based on these instructions, a user can provide the prerequisites, compile the source code and deploy the UI. +Scope +----- + +The blueprint validation UI aims to be hosted by LF servers and will be exposed using public IP and domain names. + +It provides a user-friendly way for displaying blueprints validation test results. Based on these results, the status of a blueprint can be determined (mature, incubation state, etc.). + +In specific, the purpose of the UI is twofold: + +1) Support full control loop of producing results. In this mode, the UI must be connected with a Jenkins instance capable of running blueprint validation tests. + It will enable the user to define a blueprint for validation using its name, version, layer, desired lab and desired timeslot. This data constitutes a submission. It should be noted that the blueprint family is derived from the blueprint name. + Also, the UI will have the ability to track the lifecycle of a submission. A submission state can be one of the following: submitted, waiting, running and completed. The implementation vehicle for this action is the REST API of Jenkins. + Moreover, the UI must be connected with a mariadb instance and the Nexus server where the results are stored. + Then, it will be able to trigger the appropriate job in Jenkins and receive the corresponding results from Nexus. + Note that it makes no difference whether the Jenkins instance is the community one or a private one. +2) Partial control of producing results. In this mode, the UI must be connected with a mariadb instance and the Nexus server where the results are stored. + Every blueprint owner is responsible of executing tests and storing results in Nexus using his/her own Jenkins instance. The UI only retrieves results from Nexus and displays them. + +Currently, the partial control loop is not supported. + +In both modes, user authentication, authorization and accounting (AAA) will be supported in order to control access to resources, enforce policies on these resources and audit their usage. + +Prerequisites: +~~~~~~~~~~~~~~ + +In order for the blueprint validation UI to be functional, the following items are taken for granted: + +- An appropriate mariadb instance is up and running (look at the Database subsection). + This prerequisite concerns both of the UI modes. + +- The available labs for blueprint validation execution are defined by the corresponding lab owners (look at the Database subsection). It is their responsibility to publish them. Currently, this data is statically stored in the blueprint validation UI mariadb database. In order for a lab owner to update them, he/her must update the corresponding table entries. This inconvenience will be handled in the future. + This prerequisite concerns only the full control loop mode. + +- The available timeslots for blueprint validation execution of every lab are defined by the corresponding lab owners (look at the Database subsection). It is their responsibility to publish them. Currently, this data is statically stored in the blueprint validation UI mariadb database. In order for a lab owner to update them, he/her must update the corresponding table entries. This inconvenience will be handled in the future. + This prerequisite concerns only the full control loop mode. + +- The data of the lab silos (i.e. which silo is used by a lab in order to store results in Nexus) is stored in the mariadb database (look at the Database subsection). It is the blueprint owner's responsibility to publish it. Currently, this data is statically stored in the blueprint validation UI mariadb database. In order for a blueprint owner to update it, he/her must update the corresponding table entries. This inconvenience will be handled in the future. + This prerequisite concerns only the full control loop mode. + +- The data of available blueprints (i.e. blueprint name) is stored in the mariadb database (look at the Database subsection). It is the blueprint owner's responsibility to publish it. Currently, this data is statically stored in the blueprint validation UI mariadb database. In order for a blueprint owner to update it, he/her must update the corresponding table entries. This inconvenience will be handled in the future. + This prerequisite concerns only the full control loop mode. + +- The data of an available blueprint instance for validation (i.e. version, layer and description of the layer) is stored in the mariadb database (look at the Database subsection). It is the blueprint owner's responsibility to publish it. Currently, this data is statically stored in the blueprint validation UI mariadb database. In order for a blueprint owner to update it, he/her must update the corresponding table entries. This inconvenience will be handled in the future. + This prerequisite concerns only the full control loop mode. + +- A Jenkins instance exists capable of executing blueprint validation tests on the specified lab and storing the results to Nexus server (look at the Jenkins configuration subsection). + This prerequisite concerns only the full control loop mode. + +- A Nexus server exists where all the blueprint validation results are stored (look at the Nexus subsection). + This prerequisite concerns both of the UI modes. + +- The whole installation and deployment of a blueprint and its corresponding blueprint family components (i.e. the appropriate edge cloud stack with its combination of infrastructure hardware components, OS, K8s, software, etc) are already performed in the appropriate lab. + Recall that multiple labs can be used for a specific blueprint validation. Also, it is the responsibility of the blueprint submitter to ensure that the edge validation and community CI labs can support comprehensive validation of the blueprint and cover all use case characteristics. + This prerequisite concerns both of the UI modes. + +Developer's guide +----------------- + Download the project --------------------- +~~~~~~~~~~~~~~~~~~~~ .. code-block:: console git clone "https://gerrit.akraino.org/r/validation" Prerequisites ---------------- +~~~~~~~~~~~~~ - Database -A PostgreSQL database instance is needed with the appropriate relations in order for the back-end system to store and retrieve data. -Configure the postgreSQL root password in the variable POSTGRES_PASSWORD and execute the following commands in order to build and deploy this database container: +A mariadb database instance is needed for both modes of the UI with the appropriate databases and tables in order for the back-end system to store and retrieve data. + +The pom.xml file supports the creation of an appropriate docker image for development purposes. The initialization scripts reside under the db-scripts directory. + +Also, a script has been developed, namely validation/docker/mariadb/deploy.sh which easily deploys the container. This script accepts the following as input parameters: + +CONTAINER_NAME, name of the container, default value is akraino-validation-mariadb +MARIADB_ROOT_PASSWORD, the desired mariadb root user password, this variable is required +UI_ADMIN_PASSWORD, the desired Blueprint Validation UI password for the admin user, this variable is required +UI_AKRAINO_PASSWORD, the desired Blueprint Validation UI password for the akraino user, this variable is required +REGISTRY, registry of the mariadb image, default value is akraino +NAME, name of the mariadb image, default value is validation +TAG_PRE, first part of the image version, default value is mariadb +TAG_VER, last part of the image version, default value is latest +MARIADB_HOST_PORT, port on which mariadb is exposed on host, default value is 3307 + +Currently, two users are supported for the UI, namely admin (full privileges) and akraino (limited privileges). Their passwords must be defined in the database. + +Let's build and deploy the image using only the required parameters. + +Configure the mariadb root user password (currently the UI connects to the database using root privileges), the UI admin password and the UI akraino password in the appropriate variables and execute the following commands in order to build and deploy this database container: + +.. code-block:: console + + cd validation/ui + mvn docker:build + cd ../docker/mariadb + ./deploy.sh TAG_PRE=dev-mariadb MARIADB_ROOT_PASSWORD= UI_ADMIN_PASSWORD= UI_AKRAINO_PASSWORD= + mysql -p -uroot -h < ../../ui/db-scripts/examples/initialize_db_example.sql + +In order to retrieve the IP of the mariadb container, execute the following command: .. code-block:: console - cd validation/docker/postgresql - make build - ./deploy.sh POSTGRES_PASSWORD=password + docker inspect + +It should be noted that, currently, both images (UI and mariadb) are built using the mvn docker:build command. + +Furthermore, the TAG_PRE variable should be defined as the default value is 'mariadb' (note that the 'dev-mariadb' is used for development purposes - look at pom.xml file). + +If you want to re-deploy the database, you must first delete the container and the directory on the host machine where data are stored. To this end, execute the following command: + +.. code-block:: console + + docker stop ; docker rm ; sudo rm -rf /var/lib/mariadb + +In the context of the full control loop mode, the following tables must be initialized with appropriate data: + +- lab (here every lab owner should store the name of the lab) +- timeslot (here every lab owner should register the available timeslots that can be used for blueprint validation test execution) +- silo (here every lab owner should register the silo which is used for storing results in Nexus, for example for AT&T lab the value is 'att-blu-val') +- blueprint (here every blueprint owner should register the name of the blueprint) +- blueprint_instance_for_validation (here every blueprint owner should register the blueprint instances for validation, i.e. version, layer and description of a layer) + +The following file can be used for initializing the aforementioned data (as we did in the above example using the 'mysql -p -uroot -h < ../../ui/db-scripts/examples/initialize_db_example.sql' command): + + db-scripts/examples/initialize_db_example.sql -Below, some data that is initialized in the aforementioned database is illustrated (note that this data is used mainly for testing purposes): +Some of this data is illustrated below (refer to 'org.akraino.validation.ui.data' package for more info regarding available values): .. code-block:: console + Lab + id:1, lab:0 (0 stands for AT&T) + Timeslots: - id:1 , start date and time: now() (i.e. the time of the postgreSQL container deployment), duration: 10 (sec), lab: 0 (i.e. AT&T) - id:2 , start date and time: now() (i.e. the time of the postgreSQL container deployment), duration: 1000 (sec), lab: 0 (i.e. AT&T) + id:1 , start date and time: 'now', duration: null, lab: 1 + + Silo + id:1, silo: 'att-blu-val', lab: 1 Blueprints: - id: 1 , name : 'dummy' - id: 2 , name : 'Unicycle' + id: 3 , name : 'REC' Blueprint Instances: - id: 1, blueprint_id: 1 (i.e. dummy), version: "0.0.2-SNAPSHOT", layer: 0 (i.e. Hardware), layer_description: "Dell Hardware", timeslot id: 1 - id: 2, blueprint_id: 2 (i.e. Unicycle), version: "0.0.1-SNAPSHOT", layer: 0 (i.e. Hardware), layer_description: "Dell Hardware", timeslot id: 2 - -For more information about this data, please refer to the file: + id: 2, blueprint_id: 3 (i.e. REC), version: "latest", layer: 0 (i.e. Hardware), layer_description: "AT&T Hardware" - validation/docker/postgresql/akraino-blueprint_validation_db.sql +It should be noted that currently the start date and time and the duration of the timeslot are not taken into account by the UI (see limitation section). Therefore, a user should define 'now' and null respectively for their content. Based on this data, the UI enables the user to select an appropriate blueprint instance for validation. -Currently, this data cannot be retrieved dynamically by the UI (see limitations subsection). +Currently, this data cannot be retrieved dynamically by the UI (see limitations subsection). For this reason, in cases of new data, a user should define new entries in this database. -For this reason, in cases of new blueprint data, a user should define new entries in this database. +For example, if a user wants to define a new lab with the following data: + + lab: Community + +the following file should be created: + +name: dbscript +content: + SET FOREIGN_KEY_CHECKS=1; + use akraino; + insert into lab values(2, 2); + +2 stands for community lab. Refer to 'org.akraino.validation.ui.data' package for more info. + +Then, the following command should be executed: + +.. code-block:: console + + mysql -p -uroot -h < ./dbscript.sql For example, if a user wants to define a new timeslot with the following data: - start date and time:now, duration: 123 in secs, lab: Community + start date and time:'now', duration: 0, lab: AT&T + +the following file should be created: + +name: dbscript +content: + SET FOREIGN_KEY_CHECKS=1; + use akraino; + insert into timeslot values(2, 'now', null, 1); + +1 is the id of the AT&T lab. + +Then, the following command should be executed: + +.. code-block:: console + + mysql -p -uroot -h < ./dbscript.sql + +For example, if a user wants to define a new silo with the following data: + + silo: 'community-blu-val', lab: AT&T the following file should be created: name: dbscript content: - insert into akraino.timeslot values(5, now(), 123, 2); + SET FOREIGN_KEY_CHECKS=1; + use akraino; + insert into silo values(2, 'community-blu-val', 2); + +2 is the id of the community lab. Then, the following command should be executed: .. code-block:: console - psql -h -p 6432 -U admin -f ./dbscript + mysql -p -uroot -h < ./dbscript.sql Furthermore, if a user wants to define a new blueprint, namely "newBlueprint" and a new instance of this blueprint with the following data: - version: "0.0.1-SNAPSHOT", layer: 2 (i.e. K8s), layer_description: "K8s with High Availability Ingress controller", timeslot id: 5 (i.e. the new timeslot) + version: "latest", layer: 2 (i.e. K8s), layer_description: "K8s with High Availability Ingress controller" the following file should be created: name: dbscript content: - insert into akraino.blueprint (blueprint_id, blueprint_name) values(4, 'newBlueprint'); - insert into akraino.blueprint_instance (blueprint_instance_id, blueprint_id, version, layer, layer_description, timeslot_id) values(6, 4, '0.0.1-SNAPSHOT', 2, 'K8s with High Availability Ingress controller', 5); + SET FOREIGN_KEY_CHECKS=1; + use akraino; + insert into blueprint (blueprint_id, blueprint_name) values(4, 'newBlueprint'); + insert into blueprint_instance (blueprint_instance_id, blueprint_id, version, layer, layer_description) values(6, 4, 'latest', 2, 'K8s with High Availability Ingress controller'); Then, the following command should be executed: .. code-block:: console - psql -h -p 6432 -U admin -f ./dbscript + mysql -p -uroot -h < ./dbscript.sql The UI will automatically retrieve this new data and display it to the user. - Jenkins Configuration -The Blueprint validation UI will trigger job executions in a Jenkins instance. +Recall that for full control loop, a Jenkins instance is needed capable of executing blueprint validation tests to the specified lab. The Blueprint validation UI will trigger job executions in that instance. + +It should be noted that it is not the UI responsibility to deploy a Jenkins instance. -This instance must have the following option enabled: "Manage Jenkins -> Configure Global Security -> Prevent Cross Site Request Forgery exploits". +Furthermore, this instance must have the following option enabled: "Manage Jenkins -> Configure Global Security -> Prevent Cross Site Request Forgery exploits". -Also, currently corresponding Jenkins job should accept the following as input parameters: "SUBMISSION_ID", "BLUEPRINT", "LAYER" and "UI_IP". -The "SUBMISSION_ID" and "UI_IP" parameters (i.e. IP address of the UI host machine-this is needed by the Jenkins instance in order to send back Job completion notification) are created and provided by the backend part of the UI. -The "BLUEPRINT" and "LAYER" parameters are configured by the UI user. +Also, currently, the corresponding Jenkins job should accept the following as input parameters: "SUBMISSION_ID", "BLUEPRINT", "VERSION", "LAYER" and "UI_IP". +The "SUBMISSION_ID" and "UI_IP" parameters (i.e. IP address of the UI host machine-this is needed by the Jenkins instance in order to send back Job completion notification) are created and provided by the back-end part of the UI. +The "BLUEPRINT", "VERSION" and "LAYER" parameters are configured by the UI user. -Moreover, as the Jenkins notification plugin (https://wiki.jenkins.io/display/JENKINS/Notification+Plugin) seems to ignore proxy settings, the corresponding Jenkins job must be configured to execute the following command at the end (Post-build Actions) +Moreover, as the Jenkins notification plugin (https://wiki.jenkins.io/display/JENKINS/Notification+Plugin) seems to ignore proxy settings, the corresponding Jenkins job must be configured to execute the following commands at the end (Post-build Actions) .. code-block:: console - curl -v -H "Content-Type: application/json" -X POST --insecure --silent http://$UI_IP:8080/AECBlueprintValidationUI/api/jenkinsJobNotification/ --data '{"submissionId": "'"$SUBMISSION_ID"'" , "name":"'"$JOB_NAME"'", "buildNumber":"'"$BUILD_NUMBER"'"}' + cookie=`curl -v -H "Content-Type: application/x-www-form-urlencoded" -X POST --insecure --silent http://$UI_IP:8080/AECBlueprintValidationUI/login_external -d "loginId=akraino&password=akraino" 2>&1 | grep "Set-Cookie: " | awk -F ':' '{print $2}'` + curl -v --cookie $cookie -H "Content-Type: application/json" -X POST --insecure --silent http://$UI_IP:8080/AECBlueprintValidationUI/api/jenkinsJobNotification/ --data '{"submissionId": "'"$SUBMISSION_ID"'" , "name":"'"$JOB_NAME"'", "buildNumber":"'"$BUILD_NUMBER"'"}' -Finally, the Jenkins instance must be accessible from the UI host without using system proxy. +It should be noted that the credentials user=akraino and password=akraino defined in the above commands should be replaced with the credentials of a real UI user. Recall that these credentials are defined in the database. - Nexus server -All the blueprint validation results are stored in Nexus server. +All the blueprint validation results are stored in Nexus server for both modes of the UI. + +It should be noted that it is not the UI responsibility to deploy a Nexus server. + +In the context of the full control loop, these results must be available in the following url: -These results must be available in the following url: + https://nexus.akraino.org/content/sites/logs//job///results//. - https://nexus.akraino.org/content/sites/logs/"lab"-blu-val/job/validation/"Jenkins job number"/results/"name_of_the_test_suite". +where is the silo used by a lab for storing results in Nexus (for example 'att-blu-val'), is the Jenkins job name that is triggered by the UI, is the number of the Jenkins job that produced this result, is the blueprint layer and is the name of the corresponding test suite. -where "lab" is the name of the lab (for example 'att'), "Jenkins job number" is the number of the Jenkins job that produced this result, and "name_of_the_test_suite" is the name of the test suite. -If multiple test suites must run, multiple directories should be created. +If multiple test suites are available, multiple test suite names should be created. -Moreover, the results should be stored in the 'output.xml' file using the following format: +Moreover, the results should be stored in the 'output.xml' file and placed in the aforementioned URL using the following format: TBD -Finally, the Nexus server must be accessible from the UI (with or without using system proxy). +In the context of partial control, the results must be available in the following url: +TBD Compiling ---------- +~~~~~~~~~ .. code-block:: console cd validation/ui - mvn clean install + mvn clean package Deploying ---------- - -In the context of deploying, the following data is needed: - -- The postgres root user password +~~~~~~~~~ + +The pom.xml file supports the building of an appropriate container image using the produced war file. Also, a script has been developed, namely validation/docker/ui/deploy.sh which easily deploys the container. + +This script accepts the following as input parameters: + +CONTAINER_NAME, name of the contaner, default value is akraino-validation-ui +DB_CONNECTION_URL, the URL connection with the akraino database of the maridb instance, this variable is required +MARIADB_ROOT_PASSWORD, mariadb root user password, this variable is required +REGISTRY, registry of the mariadb image, default value is akraino +NAME, name of the mariadb image, default value is validation +TAG_PRE, first part of the image version, default value is ui +TAG_VER, last part of the image version, default value is latest +JENKINS_URL, the URL of the Jenkins instance, this variable is required +JENKINS_USERNAME, the Jenkins user name, this variable is required +JENKINS_USER_PASSWORD, the Jenkins user password, this variable is required +JENKINS_JOB_NAME, the name of Jenkins job capable of executing the blueprint validation tests, this variable is required +NEXUS_PROXY, the proxy needed in order for the Nexus server to be reachable, default value is none +JENKINS_PROXY, the proxy needed in order for the Jenkins server to be reachable, default value is none + +Let's build the image using only the required parameters. To this end, the following data is needed: + +- The mariadb root user password (look at the Database subsection) +- The URL for connecting to the akraino database of the mariadb - The Jenkins url - The Jenkins username and password - The name of Jenkins Job -- The Url of the Nexus results -- The host system's proxy ip and port -These variables must be configured as content of the deploy script input parameters. Execute the following commands in order to build and deploy the UI container: +Execute the following commands in order to build and deploy the UI container: .. code-block:: console - cd validation/docker/ui - make build - ./deploy.sh postgres_db_user_pwd=password jenkins_url=http://192.168.2.2:8080 jenkins_user_name=name jenkins_user_pwd=jenkins_pwd jenkins_job_name=job1 nexus_results_url=https://nexus.akraino.org/content/sites/logs proxy_ip=172.28.40.9 proxy_port=3128 + cd validation/ui + mvn docker:build + cd ../docker/ui + ./deploy.sh TAG_PRE=dev-ui DB_CONNECTION_URL= MARIADB_ROOT_PASSWORD= JENKINS_URL= JENKINS_USERNAME= JENKINS_USER_PASSWORD= JENKINS_JOB_NAME= + +The content of the DB_CONNECTION_URL can be for example 172.17.0.3:3306/akraino (i.e. IP and port of the database container plus '/akraino'). + +Furthermore, the TAG_PRE variable should be defined as the default value is 'ui' (note that the 'dev-ui' is used for development purposes - look at pom.xml file). If no proxy exists, just do not define proxy ip and port variables. @@ -162,16 +346,20 @@ The UI should be available in the following url: http://localhost:8080/AECBlueprintValidationUI +Note that the deployment uses the network host mode, so the 8080 must be available on the host. + +User's guide +----------------- +TBD + Limitations ----------- - +- The partial loop mode is not currently supported. - The UI has been tested using Chrome and Firefox browsers. -- The UI is not connected to any LDAP server. Currently, any user can login. -- The UI and postgreSQL containers must be deployed on the same server. -- The back-end part of the UI does not take into account the configured timeslot. It immediately triggers the corresponding Jenkins Job. +- The back-end part of the UI does not take into account the start date and time and duration of the configured timeslot. It immediately triggers the corresponding Jenkins Job. - Results data manipulation (filtering, graphical representation, indexing in time order, etc) is not supported. - Only the following labs are supported: AT&T, Ericsson, Community and Arm. - Only the following tabs are functional: 'Committed Submissions', 'Blueprint Validation Results -> Get by submission id'. -- The UI configures only the "BLUEPRINT" and "LAYER" input parameters of the Jenkins job. -- The available blueprints and timeslots must be manually configured in the PostgreSQL database. -- The Jenkins instance must be accessible from the UI host without using system proxy. \ No newline at end of file +- The UI configures only the "BLUEPRINT", "VERSION", "LAYER", "SUBMISSION_ID" and "UI_IP" input parameters of the Jenkins job. +- The silos, labs, and the available blueprints and timeslots must be manually configured in the mariadb database. +- Logout action is not currently supported. \ No newline at end of file diff --git a/ui/db-scripts/EcompSdkDDLMySql_2_4_Common.sql b/ui/db-scripts/EcompSdkDDLMySql_2_4_Common.sql new file mode 100644 index 0000000..bdfb647 --- /dev/null +++ b/ui/db-scripts/EcompSdkDDLMySql_2_4_Common.sql @@ -0,0 +1,1392 @@ +-- --------------------------------------------------------------------------------------------------------------- +-- This script creates tables in the COMMON version 2.1.0 of the ONAP SDK application database. +-- Additional DDL scripts may be required! +-- +-- Note to database admin: set the MySQL system variable called lower_case_table_names to 1 +-- It can be set 3 different ways: +-- command-line options (Cmd-line), +-- options valid in configuration files (Option file), or +-- server system variables (System Var). +-- +-- When set to 1 table names are stored in lowercase on disk and comparisons are not case sensitive. +-- +-- MySql/MariaDB Version compatibility information +-- +-- bash-4.2$ mysql --version – cluster version +-- mysql Ver 15.1 Distrib 10.1.17-MariaDB, for Linux (x86_64) using readline 5.1 +-- +-- All versions newer or older than these DO NOT necessarily mean they are compatible. +-- --------------------------------------------------------------------------------------------------------------- + +SET FOREIGN_KEY_CHECKS=1; + +CREATE DATABASE IF NOT EXISTS akraino; + +USE akraino; + +-- ---------- create table SECTION +-- +-- NAME: CR_FAVORITE_REPORTS; TYPE: TABLE +-- +create table cr_favorite_reports ( + USER_ID INTEGER NOT NULL, + REP_ID INTEGER NOT NULL +); + +-- +-- NAME: CR_FILEHIST_LOG; TYPE: TABLE +-- +create table cr_filehist_log ( + SCHEDULE_ID NUMERIC(11,0) NOT NULL, + URL CHARACTER VARYING(4000), + NOTES CHARACTER VARYING(3500), + RUN_TIME TIMESTAMP +); + +-- +-- NAME: CR_FOLDER; TYPE: TABLE +-- +create table cr_folder ( + FOLDER_ID INTEGER NOT NULL, + FOLDER_NAME CHARACTER VARYING(50) NOT NULL, + DESCR CHARACTER VARYING(500), + CREATE_ID INTEGER NOT NULL, + CREATE_DATE TIMESTAMP NOT NULL, + PARENT_FOLDER_ID INTEGER, + PUBLIC_YN CHARACTER VARYING(1) DEFAULT 'N' NOT NULL +); + +-- +-- NAME: CR_FOLDER_ACCESS; TYPE: TABLE +-- +create table cr_folder_access ( + FOLDER_ACCESS_ID NUMERIC(11,0) NOT NULL, + FOLDER_ID NUMERIC(11,0) NOT NULL, + ORDER_NO NUMERIC(11,0) NOT NULL, + ROLE_ID NUMERIC(11,0), + USER_ID NUMERIC(11,0), + READ_ONLY_YN CHARACTER VARYING(1) DEFAULT 'N' NOT NULL +); + +-- +-- NAME: CR_HIST_USER_MAP; TYPE: TABLE +-- +create table cr_hist_user_map ( + HIST_ID INT(11) NOT NULL, + USER_ID INT(11) NOT NULL +); + +-- +-- NAME: CR_LU_FILE_TYPE; TYPE: TABLE +-- +create table cr_lu_file_type ( + LOOKUP_ID NUMERIC(2,0) NOT NULL, + LOOKUP_DESCR CHARACTER VARYING(255) NOT NULL, + ACTIVE_YN CHARACTER(1) DEFAULT 'Y', + ERROR_CODE NUMERIC(11,0) +); + +-- +-- NAME: CR_RAPTOR_ACTION_IMG; TYPE: TABLE +-- +create table cr_raptor_action_img ( + IMAGE_ID CHARACTER VARYING(100) NOT NULL, + IMAGE_LOC CHARACTER VARYING(400) +); + +-- +-- NAME: CR_RAPTOR_PDF_IMG; TYPE: TABLE +-- +create table cr_raptor_pdf_img ( + IMAGE_ID CHARACTER VARYING(100) NOT NULL, + IMAGE_LOC CHARACTER VARYING(400) +); + +-- +-- NAME: CR_REMOTE_SCHEMA_INFO; TYPE: TABLE +-- +create table cr_remote_schema_info ( + SCHEMA_PREFIX CHARACTER VARYING(5) NOT NULL, + SCHEMA_DESC CHARACTER VARYING(75) NOT NULL, + DATASOURCE_TYPE CHARACTER VARYING(100) +); + +-- +-- NAME: CR_REPORT; TYPE: TABLE +-- +create table cr_report ( + REP_ID NUMERIC(11,0) NOT NULL, + TITLE CHARACTER VARYING(100) NOT NULL, + DESCR CHARACTER VARYING(255), + PUBLIC_YN CHARACTER VARYING(1) DEFAULT 'N' NOT NULL, + REPORT_XML TEXT, + CREATE_ID NUMERIC(11,0), + CREATE_DATE TIMESTAMP default now(), + MAINT_ID NUMERIC(11,0), + MAINT_DATE TIMESTAMP DEFAULT NOW(), + MENU_ID CHARACTER VARYING(500), + MENU_APPROVED_YN CHARACTER VARYING(1) DEFAULT 'N' NOT NULL, + OWNER_ID NUMERIC(11,0), + FOLDER_ID INTEGER DEFAULT 0, + DASHBOARD_TYPE_YN CHARACTER VARYING(1) DEFAULT 'N', + DASHBOARD_YN CHARACTER VARYING(1) DEFAULT 'N' +); + +-- +-- NAME: CR_REPORT_ACCESS; TYPE: TABLE +-- +create table cr_report_access ( + REP_ID NUMERIC(11,0) NOT NULL, + ORDER_NO NUMERIC(11,0) NOT NULL, + ROLE_ID NUMERIC(11,0), + USER_ID NUMERIC(11,0), + READ_ONLY_YN CHARACTER VARYING(1) DEFAULT 'N' NOT NULL +); + +-- +-- NAME: CR_REPORT_DWNLD_LOG; TYPE: TABLE +-- +create table cr_report_dwnld_log ( + USER_ID NUMERIC(11,0) NOT NULL, + REP_ID INTEGER NOT NULL, + FILE_NAME CHARACTER VARYING(100) NOT NULL, + DWNLD_START_TIME TIMESTAMP DEFAULT NOW() NOT NULL, + RECORD_READY_TIME TIMESTAMP DEFAULT NOW(), + FILTER_PARAMS CHARACTER VARYING(2000) +); + +-- +-- NAME: CR_REPORT_EMAIL_SENT_LOG; TYPE: TABLE +-- +create table cr_report_email_sent_log ( + LOG_ID INTEGER NOT NULL, + SCHEDULE_ID NUMERIC(11,0), + GEN_KEY CHARACTER VARYING(25) NOT NULL, + REP_ID NUMERIC(11,0) NOT NULL, + USER_ID NUMERIC(11,0), + SENT_DATE TIMESTAMP DEFAULT NOW(), + ACCESS_FLAG CHARACTER VARYING(1) DEFAULT 'Y' NOT NULL, + TOUCH_DATE TIMESTAMP DEFAULT NOW() +); + +-- +-- NAME: CR_REPORT_FILE_HISTORY; TYPE: TABLE +-- +create table cr_report_file_history ( + HIST_ID INT(11) NOT NULL, + SCHED_USER_ID NUMERIC(11,0) NOT NULL, + SCHEDULE_ID NUMERIC(11,0) NOT NULL, + USER_ID NUMERIC(11,0) NOT NULL, + REP_ID NUMERIC(11,0), + RUN_DATE TIMESTAMP, + RECURRENCE CHARACTER VARYING(50), + FILE_TYPE_ID NUMERIC(2,0), + FILE_NAME CHARACTER VARYING(80), + FILE_BLOB BLOB, + FILE_SIZE NUMERIC(11,0), + RAPTOR_URL CHARACTER VARYING(4000), + ERROR_YN CHARACTER(1) DEFAULT 'N', + ERROR_CODE NUMERIC(11,0), + DELETED_YN CHARACTER(1) DEFAULT 'N', + DELETED_BY NUMERIC(38,0) +); + +-- +-- NAME: CR_REPORT_LOG; TYPE: TABLE +-- +create table cr_report_log ( + REP_ID NUMERIC(11,0) NOT NULL, + LOG_TIME TIMESTAMP NOT NULL, + USER_ID NUMERIC(11,0) NOT NULL, + ACTION CHARACTER VARYING(2000) NOT NULL, + ACTION_VALUE CHARACTER VARYING(50), + FORM_FIELDS CHARACTER VARYING(4000) +); + +-- +-- NAME: CR_REPORT_SCHEDULE; TYPE: TABLE +-- +create table cr_report_schedule ( + SCHEDULE_ID NUMERIC(11,0) NOT NULL, + SCHED_USER_ID NUMERIC(11,0) NOT NULL, + REP_ID NUMERIC(11,0) NOT NULL, + ENABLED_YN CHARACTER VARYING(1) NOT NULL, + START_DATE TIMESTAMP DEFAULT NOW(), + END_DATE TIMESTAMP DEFAULT NOW(), + RUN_DATE TIMESTAMP DEFAULT NOW(), + RECURRENCE CHARACTER VARYING(50), + CONDITIONAL_YN CHARACTER VARYING(1) NOT NULL, + CONDITION_SQL CHARACTER VARYING(4000), + NOTIFY_TYPE INTEGER DEFAULT 0, + MAX_ROW INTEGER DEFAULT 1000, + INITIAL_FORMFIELDS CHARACTER VARYING(3500), + PROCESSED_FORMFIELDS CHARACTER VARYING(3500), + FORMFIELDS CHARACTER VARYING(3500), + CONDITION_LARGE_SQL TEXT, + ENCRYPT_YN CHARACTER(1) DEFAULT 'N', + ATTACHMENT_YN CHARACTER(1) DEFAULT 'Y' +); + +-- +-- NAME: CR_REPORT_SCHEDULE_USERS; TYPE: TABLE +-- +create table cr_report_schedule_users ( + SCHEDULE_ID NUMERIC(11,0) NOT NULL, + REP_ID NUMERIC(11,0) NOT NULL, + USER_ID NUMERIC(11,0) NOT NULL, + ROLE_ID NUMERIC(11,0), + ORDER_NO NUMERIC(11,0) NOT NULL +); + +-- +-- NAME: CR_REPORT_TEMPLATE_MAP; TYPE: TABLE +-- +create table cr_report_template_map ( + REPORT_ID INTEGER NOT NULL, + TEMPLATE_FILE CHARACTER VARYING(200) +); + +-- +-- NAME: CR_SCHEDULE_ACTIVITY_LOG; TYPE: TABLE +-- +create table cr_schedule_activity_log ( + SCHEDULE_ID NUMERIC(11,0) NOT NULL, + URL CHARACTER VARYING(4000), + NOTES CHARACTER VARYING(2000), + RUN_TIME TIMESTAMP +); + +-- +-- NAME: CR_TABLE_JOIN; TYPE: TABLE +-- +create table cr_table_join ( + SRC_TABLE_NAME CHARACTER VARYING(30) NOT NULL, + DEST_TABLE_NAME CHARACTER VARYING(30) NOT NULL, + JOIN_EXPR CHARACTER VARYING(500) NOT NULL +); + +-- +-- NAME: CR_TABLE_ROLE; TYPE: TABLE +-- +create table cr_table_role ( + TABLE_NAME CHARACTER VARYING(30) NOT NULL, + ROLE_ID NUMERIC(11,0) NOT NULL +); + +-- +-- NAME: CR_TABLE_SOURCE; TYPE: TABLE +-- +create table cr_table_source ( + TABLE_NAME CHARACTER VARYING(30) NOT NULL, + DISPLAY_NAME CHARACTER VARYING(30) NOT NULL, + PK_FIELDS CHARACTER VARYING(200), + WEB_VIEW_ACTION CHARACTER VARYING(50), + LARGE_DATA_SOURCE_YN CHARACTER VARYING(1) DEFAULT 'N' NOT NULL, + FILTER_SQL CHARACTER VARYING(4000), + SOURCE_DB CHARACTER VARYING(50) +); + +-- +-- NAME: FN_LU_TIMEZONE; TYPE: TABLE +-- +create table fn_lu_timezone ( + TIMEZONE_ID INT(11) NOT NULL, + TIMEZONE_NAME CHARACTER VARYING(100) NOT NULL, + TIMEZONE_VALUE CHARACTER VARYING(100) NOT NULL +); + +create table fn_user ( + USER_ID INT(11) NOT NULL PRIMARY KEY AUTO_INCREMENT, + ORG_ID INT(11), + MANAGER_ID INT(11), + FIRST_NAME CHARACTER VARYING(50), + MIDDLE_NAME CHARACTER VARYING(50), + LAST_NAME CHARACTER VARYING(50), + PHONE CHARACTER VARYING(25), + FAX CHARACTER VARYING(25), + CELLULAR CHARACTER VARYING(25), + EMAIL CHARACTER VARYING(50), + ADDRESS_ID NUMERIC(11,0), + ALERT_METHOD_CD CHARACTER VARYING(10), + HRID CHARACTER VARYING(20), + ORG_USER_ID CHARACTER VARYING(20), + ORG_CODE CHARACTER VARYING(30), + LOGIN_ID CHARACTER VARYING(25), + LOGIN_PWD CHARACTER VARYING(25), + LAST_LOGIN_DATE TIMESTAMP, + ACTIVE_YN CHARACTER VARYING(1) DEFAULT 'Y' NOT NULL, + CREATED_ID INT(11), + CREATED_DATE TIMESTAMP DEFAULT NOW(), + MODIFIED_ID INT(11), + MODIFIED_DATE TIMESTAMP default now(), + IS_INTERNAL_YN CHARACTER(1) DEFAULT 'N' NOT NULL, + ADDRESS_LINE_1 CHARACTER VARYING(100), + ADDRESS_LINE_2 CHARACTER VARYING(100), + CITY CHARACTER VARYING(50), + STATE_CD CHARACTER VARYING(3), + ZIP_CODE CHARACTER VARYING(11), + COUNTRY_CD CHARACTER VARYING(3), + LOCATION_CLLI CHARACTER VARYING(8), + ORG_MANAGER_USERID CHARACTER VARYING(20), + COMPANY CHARACTER VARYING(100), + DEPARTMENT_NAME CHARACTER VARYING(100), + JOB_TITLE CHARACTER VARYING(100), + TIMEZONE INT(11), + DEPARTMENT CHARACTER VARYING(25), + BUSINESS_UNIT CHARACTER VARYING(25), + BUSINESS_UNIT_NAME CHARACTER VARYING(100), + COST_CENTER CHARACTER VARYING(25), + FIN_LOC_CODE CHARACTER VARYING(10), + SILO_STATUS CHARACTER VARYING(10) +); + +-- +-- NAME: FN_ROLE; TYPE: TABLE +-- +create table fn_role ( + ROLE_ID INT(11) NOT NULL PRIMARY KEY AUTO_INCREMENT, + ROLE_NAME CHARACTER VARYING(300) NOT NULL, + ACTIVE_YN CHARACTER VARYING(1) DEFAULT 'Y' NOT NULL, + PRIORITY NUMERIC(4,0) +); + +-- +-- NAME: FN_AUDIT_ACTION; TYPE: TABLE +-- +create table fn_audit_action ( + AUDIT_ACTION_ID INTEGER NOT NULL, + CLASS_NAME CHARACTER VARYING(500) NOT NULL, + METHOD_NAME CHARACTER VARYING(50) NOT NULL, + AUDIT_ACTION_CD CHARACTER VARYING(20) NOT NULL, + AUDIT_ACTION_DESC CHARACTER VARYING(200), + ACTIVE_YN CHARACTER VARYING(1) +); + +-- +-- NAME: FN_AUDIT_ACTION_LOG; TYPE: TABLE +-- +create table fn_audit_action_log ( + AUDIT_LOG_ID INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT, + AUDIT_ACTION_CD CHARACTER VARYING(200), + ACTION_TIME TIMESTAMP, + USER_ID NUMERIC(11,0), + CLASS_NAME CHARACTER VARYING(100), + METHOD_NAME CHARACTER VARYING(50), + SUCCESS_MSG CHARACTER VARYING(20), + ERROR_MSG CHARACTER VARYING(500) +); + +-- +-- NAME: FN_LU_ACTIVITY; TYPE: TABLE +-- +create table fn_lu_activity ( + ACTIVITY_CD CHARACTER VARYING(50) NOT NULL PRIMARY KEY, + ACTIVITY CHARACTER VARYING(50) NOT NULL +); + +-- +-- NAME: FN_AUDIT_LOG; TYPE: TABLE +-- +create table fn_audit_log ( + LOG_ID INT(11) NOT NULL PRIMARY KEY AUTO_INCREMENT, + USER_ID INT(11) NOT NULL, + ACTIVITY_CD CHARACTER VARYING(50) NOT NULL, + AUDIT_DATE TIMESTAMP DEFAULT NOW() NOT NULL, + COMMENTS CHARACTER VARYING(1000), + AFFECTED_RECORD_ID_BK CHARACTER VARYING(500), + AFFECTED_RECORD_ID CHARACTER VARYING(4000), + CONSTRAINT FK_FN_AUDIT_REF_209_FN_USER FOREIGN KEY (USER_ID) REFERENCES FN_USER(USER_ID) +); + +-- +-- NAME: FN_BROADCAST_MESSAGE; TYPE: TABLE +-- +create table fn_broadcast_message ( + MESSAGE_ID INT(11) NOT NULL PRIMARY KEY AUTO_INCREMENT, + MESSAGE_TEXT CHARACTER VARYING(1000) NOT NULL, + MESSAGE_LOCATION_ID NUMERIC(11,0) NOT NULL, + BROADCAST_START_DATE TIMESTAMP NOT NULL DEFAULT NOW(), + BROADCAST_END_DATE TIMESTAMP NOT NULL DEFAULT NOW(), + ACTIVE_YN CHARACTER(1) DEFAULT 'Y' NOT NULL, + SORT_ORDER NUMERIC(4,0) NOT NULL, + BROADCAST_SITE_CD CHARACTER VARYING(50) +); + +-- +-- NAME: FN_CHAT_LOGS; TYPE: TABLE +-- +create table fn_chat_logs ( + CHAT_LOG_ID INTEGER NOT NULL, + CHAT_ROOM_ID INTEGER, + USER_ID INTEGER, + MESSAGE CHARACTER VARYING(1000), + MESSAGE_DATE_TIME TIMESTAMP +); + +-- +-- NAME: FN_CHAT_ROOM; TYPE: TABLE +-- +create table fn_chat_room ( + CHAT_ROOM_ID INTEGER NOT NULL, + NAME CHARACTER VARYING(50) NOT NULL, + DESCRIPTION CHARACTER VARYING(500), + OWNER_ID INTEGER, + CREATED_DATE TIMESTAMP DEFAULT NOW(), + UPDATED_DATE TIMESTAMP DEFAULT NOW() +); + +-- +-- NAME: FN_CHAT_USERS; TYPE: TABLE +-- +create table fn_chat_users ( + CHAT_ROOM_ID INTEGER, + USER_ID INTEGER, + LAST_ACTIVITY_DATE_TIME TIMESTAMP, + CHAT_STATUS CHARACTER VARYING(20), + ID INTEGER NOT NULL +); + +-- +-- NAME: FN_DATASOURCE; TYPE: TABLE +-- +create table fn_datasource ( + ID INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT, + NAME CHARACTER VARYING(50), + DRIVER_NAME CHARACTER VARYING(256), + SERVER CHARACTER VARYING(256), + PORT INTEGER, + USER_NAME CHARACTER VARYING(256), + PASSWORD CHARACTER VARYING(256), + URL CHARACTER VARYING(256), + MIN_POOL_SIZE INTEGER, + MAX_POOL_SIZE INTEGER, + ADAPTER_ID INTEGER, + DS_TYPE CHARACTER VARYING(20) +); + +-- +-- NAME: FN_FUNCTION; TYPE: TABLE +-- +create table fn_function ( + FUNCTION_CD CHARACTER VARYING(30) NOT NULL PRIMARY KEY, + FUNCTION_NAME CHARACTER VARYING(50) NOT NULL, + TYPE VARCHAR(20) NOT NULL, + ACTION VARCHAR(20) NOT NULL, + UNIQUE KEY function (FUNCTION_CD,TYPE,ACTION) +); + +-- +-- NAME: FN_LU_ALERT_METHOD; TYPE: TABLE +-- +create table fn_lu_alert_method ( + ALERT_METHOD_CD CHARACTER VARYING(10) NOT NULL, + ALERT_METHOD CHARACTER VARYING(50) NOT NULL +); + +-- +-- NAME: FN_LU_BROADCAST_SITE; TYPE: TABLE +-- +create table fn_lu_broadcast_site ( + BROADCAST_SITE_CD CHARACTER VARYING(50) NOT NULL, + BROADCAST_SITE_DESCR CHARACTER VARYING(100) +); +-- +-- NAME: FN_LU_MENU_SET; TYPE: TABLE +-- +create table fn_lu_menu_set ( + MENU_SET_CD CHARACTER VARYING(10) NOT NULL PRIMARY KEY, + MENU_SET_NAME CHARACTER VARYING(50) NOT NULL +); + +-- +-- NAME: FN_LU_PRIORITY; TYPE: TABLE +-- +create table fn_lu_priority ( + PRIORITY_ID NUMERIC(11,0) NOT NULL, + PRIORITY CHARACTER VARYING(50) NOT NULL, + ACTIVE_YN CHARACTER(1) NOT NULL, + SORT_ORDER NUMERIC(5,0) +); + +-- +-- NAME: FN_LU_ROLE_TYPE; TYPE: TABLE +-- +create table fn_lu_role_type ( + ROLE_TYPE_ID NUMERIC(11,0) NOT NULL, + ROLE_TYPE CHARACTER VARYING(50) NOT NULL +); +-- +-- NAME: FN_LU_TAB_SET; TYPE: TABLE +-- +create table fn_lu_tab_set ( + TAB_SET_CD CHARACTER VARYING(30) NOT NULL, + TAB_SET_NAME CHARACTER VARYING(50) NOT NULL +); + +-- +-- NAME: FN_MENU; TYPE: TABLE +-- +create table fn_menu ( + MENU_ID INT(11) NOT NULL PRIMARY KEY AUTO_INCREMENT, + LABEL CHARACTER VARYING(100), + PARENT_ID INT(11), + SORT_ORDER NUMERIC(4,0), + ACTION CHARACTER VARYING(200), + FUNCTION_CD CHARACTER VARYING(30), + ACTIVE_YN CHARACTER VARYING(1) DEFAULT 'Y' NOT NULL, + SERVLET CHARACTER VARYING(50), + QUERY_STRING CHARACTER VARYING(200), + EXTERNAL_URL CHARACTER VARYING(200), + TARGET CHARACTER VARYING(25), + MENU_SET_CD CHARACTER VARYING(10) DEFAULT 'APP', + SEPARATOR_YN CHARACTER(1) DEFAULT 'N', + IMAGE_SRC CHARACTER VARYING(100), + CONSTRAINT FK_FN_MENU_REF_196_FN_MENU FOREIGN KEY (PARENT_ID) REFERENCES FN_MENU(MENU_ID), + CONSTRAINT FK_FN_MENU_MENU_SET_CD FOREIGN KEY (MENU_SET_CD) REFERENCES FN_LU_MENU_SET(MENU_SET_CD) +); + +-- +-- NAME: FN_ORG; TYPE: TABLE +-- +create table fn_org ( + ORG_ID INT(11) NOT NULL, + ORG_NAME CHARACTER VARYING(50) NOT NULL, + ACCESS_CD CHARACTER VARYING(10) +); + +-- +-- NAME: FN_RESTRICTED_URL; TYPE: TABLE +-- +create table fn_restricted_url ( + RESTRICTED_URL CHARACTER VARYING(250) NOT NULL, + FUNCTION_CD CHARACTER VARYING(30) NOT NULL +); + +-- +-- NAME: FN_ROLE_COMPOSITE; TYPE: TABLE +-- +create table fn_role_composite ( + PARENT_ROLE_ID INT(11) NOT NULL, + CHILD_ROLE_ID INT(11) NOT NULL, + CONSTRAINT FK_FN_ROLE_COMPOSITE_CHILD FOREIGN KEY (CHILD_ROLE_ID) REFERENCES FN_ROLE(ROLE_ID), + CONSTRAINT FK_FN_ROLE_COMPOSITE_PARENT FOREIGN KEY (PARENT_ROLE_ID) REFERENCES FN_ROLE(ROLE_ID) +); + +-- +-- NAME: FN_ROLE_FUNCTION; TYPE: TABLE +-- +create table fn_role_function ( + ROLE_ID INT(11) NOT NULL, + FUNCTION_CD CHARACTER VARYING(30) NOT NULL, + CONSTRAINT FK_FN_ROLE__REF_198_FN_ROLE FOREIGN KEY (ROLE_ID) REFERENCES FN_ROLE(ROLE_ID) +); + +-- +-- NAME: FN_TAB; TYPE: TABLE +-- +create table fn_tab ( + TAB_CD CHARACTER VARYING(30) NOT NULL, + TAB_NAME CHARACTER VARYING(50) NOT NULL, + TAB_DESCR CHARACTER VARYING(100), + ACTION CHARACTER VARYING(100) NOT NULL, + FUNCTION_CD CHARACTER VARYING(30) NOT NULL, + ACTIVE_YN CHARACTER(1) NOT NULL, + SORT_ORDER NUMERIC(11,0) NOT NULL, + PARENT_TAB_CD CHARACTER VARYING(30), + TAB_SET_CD CHARACTER VARYING(30) +); + +-- +-- NAME: FN_TAB_SELECTED; TYPE: TABLE +-- +create table fn_tab_selected ( + SELECTED_TAB_CD CHARACTER VARYING(30) NOT NULL, + TAB_URI CHARACTER VARYING(40) NOT NULL +); + +-- +-- NAME: FN_USER_PSEUDO_ROLE; TYPE: TABLE +-- +create table fn_user_pseudo_role ( + PSEUDO_ROLE_ID INT(11) NOT NULL, + USER_ID INT(11) NOT NULL +); + +-- +-- NAME: FN_USER_ROLE; TYPE: TABLE +-- +create table fn_user_role ( + USER_ID INT(10) NOT NULL, + ROLE_ID INT(10) NOT NULL, + PRIORITY NUMERIC(4,0), + APP_ID INT(11) DEFAULT 1, + CONSTRAINT FK_FN_USER__REF_172_FN_USER FOREIGN KEY (USER_ID) REFERENCES FN_USER(USER_ID), + CONSTRAINT FK_FN_USER__REF_175_FN_ROLE FOREIGN KEY (ROLE_ID) REFERENCES FN_ROLE(ROLE_ID) +); +-- +-- NAME: SCHEMA_INFO; TYPE: TABLE +-- +create table schema_info ( + SCHEMA_ID CHARACTER VARYING(25) NOT NULL, + SCHEMA_DESC CHARACTER VARYING(75) NOT NULL, + DATASOURCE_TYPE CHARACTER VARYING(100), + CONNECTION_URL VARCHAR(200) NOT NULL, + USER_NAME VARCHAR(45) NOT NULL, + PASSWORD VARCHAR(45) NULL DEFAULT NULL, + DRIVER_CLASS VARCHAR(100) NOT NULL, + MIN_POOL_SIZE INT NOT NULL, + MAX_POOL_SIZE INT NOT NULL, + IDLE_CONNECTION_TEST_PERIOD INT NOT NULL + +); + +-- ---------------------------------------------------------- +-- NAME: FN_APP; TYPE: TABLE +-- ---------------------------------------------------------- +create table fn_app ( + APP_ID int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT, + APP_NAME varchar(100) NOT NULL DEFAULT '?', + APP_IMAGE_URL varchar(256) DEFAULT NULL, + APP_DESCRIPTION varchar(512) DEFAULT NULL, + APP_NOTES varchar(4096) DEFAULT NULL, + APP_URL varchar(256) DEFAULT NULL, + APP_ALTERNATE_URL varchar(256) DEFAULT NULL, + APP_REST_ENDPOINT varchar(2000) DEFAULT NULL, + ML_APP_NAME varchar(50) NOT NULL DEFAULT '?', + ML_APP_ADMIN_ID varchar(7) NOT NULL DEFAULT '?', + MOTS_ID int(11) DEFAULT NULL, + APP_PASSWORD varchar(256) NOT NULL DEFAULT '?', + OPEN char(1) DEFAULT 'N', + ENABLED char(1) DEFAULT 'Y', + THUMBNAIL mediumblob, + APP_USERNAME varchar(50), + UEB_KEY VARCHAR(256) DEFAULT NULL, + UEB_SECRET VARCHAR(256) DEFAULT NULL, + UEB_TOPIC_NAME VARCHAR(256) DEFAULT NULL + +); + +-- ---------------------------------------------------------- +-- NAME: FN_FN_WORKFLOW; TYPE: TABLE +-- ---------------------------------------------------------- +create table fn_workflow ( + id mediumint(9) NOT NULL AUTO_INCREMENT, + name varchar(20) NOT NULL, + description varchar(500) DEFAULT NULL, + run_link varchar(300) DEFAULT NULL, + suspend_link varchar(300) DEFAULT NULL, + modified_link varchar(300) DEFAULT NULL, + active_yn varchar(300) DEFAULT NULL, + created varchar(300) DEFAULT NULL, + created_by int(11) DEFAULT NULL, + modified varchar(300) DEFAULT NULL, + modified_by int(11) DEFAULT NULL, + workflow_key varchar(50) DEFAULT NULL, + PRIMARY KEY (id), + UNIQUE KEY name (name) +); + +-- ---------------------------------------------------------- +-- NAME: FN_SCHEDULE_WORKFLOWS; TYPE: TABLE +-- ---------------------------------------------------------- +create table fn_schedule_workflows ( + id_schedule_workflows bigint(25) PRIMARY KEY NOT NULL AUTO_INCREMENT, + workflow_server_url varchar(45) DEFAULT NULL, + workflow_key varchar(45) NOT NULL, + workflow_arguments varchar(45) DEFAULT NULL, + startDateTimeCron varchar(45) DEFAULT NULL, + endDateTime TIMESTAMP DEFAULT NOW(), + start_date_time TIMESTAMP DEFAULT NOW(), + recurrence varchar(45) DEFAULT NULL + ); + +-- For demo reporting application add : demo_bar_chart, demo_bar_chart_inter, demo_line_chart, demo_pie_chart and demo_util_chart +-- demo_scatter_chart, demo_scatter_plot +-- ---------------------------------------------------------- +-- NAME: DEMO_BAR_CHART; TYPE: TABLE +-- ---------------------------------------------------------- +create table demo_bar_chart ( + label varchar(20), + value numeric(25,15) + ); + +-- ---------------------------------------------------------- +-- NAME: DEMO_BAR_CHART_INTER; TYPE: TABLE +-- ---------------------------------------------------------- +create table demo_bar_chart_inter ( + spam_date date, + num_rpt_sources numeric(10,0), + num_det_sources numeric(10,0) + ); + +-- ---------------------------------------------------------- +-- NAME: DEMO_LINE_CHART; TYPE: TABLE +-- ---------------------------------------------------------- +create table demo_line_chart ( + series varchar(20), + log_date date, + data_value numeric(10,5) + ); + +-- ---------------------------------------------------------- +-- NAME: DEMO_PIE_CHART; TYPE: TABLE +-- ---------------------------------------------------------- +create table demo_pie_chart ( + legend varchar(20), + data_value numeric(10,5) + ); + +-- ---------------------------------------------------------- +-- NAME: DEMO_UTIL_CHART; TYPE: TABLE +-- ---------------------------------------------------------- +create table demo_util_chart ( + traffic_date date, + util_perc numeric(10,5) + ); + +-- ---------------------------------------------------------- +-- NAME: DEMO_SCATTER_CHART; TYPE: TABLE +-- ---------------------------------------------------------- +create table demo_scatter_chart ( + rainfall numeric(10,2), + key_value varchar(20), + measurements numeric(10,2) +); + +-- ---------------------------------------------------------- +-- NAME: DEMO_SCATTER_PLOT; TYPE: TABLE +-- ---------------------------------------------------------- +create table demo_scatter_plot +( + SERIES VARCHAR(20), + VALUEX numeric(25,15), + VALUEY numeric(25,15) +); + +-- ---------------------------------------------------------- +-- NAME: FN_QZ_JOB_DETAILS; TYPE: TABLE +-- ---------------------------------------------------------- +create table fn_qz_job_details ( +SCHED_NAME VARCHAR(120) NOT NULL, +JOB_NAME VARCHAR(200) NOT NULL, +JOB_GROUP VARCHAR(200) NOT NULL, +DESCRIPTION VARCHAR(250) NULL, +JOB_CLASS_NAME VARCHAR(250) NOT NULL, +IS_DURABLE VARCHAR(1) NOT NULL, +IS_NONCONCURRENT VARCHAR(1) NOT NULL, +IS_UPDATE_DATA VARCHAR(1) NOT NULL, +REQUESTS_RECOVERY VARCHAR(1) NOT NULL, +JOB_DATA BLOB NULL, +PRIMARY KEY (SCHED_NAME,JOB_NAME,JOB_GROUP) +); + +-- ---------------------------------------------------------- +-- NAME: FN_QZ_TRIGGERS; TYPE: TABLE +-- ---------------------------------------------------------- +create table fn_qz_triggers ( +SCHED_NAME VARCHAR(120) NOT NULL, +TRIGGER_NAME VARCHAR(200) NOT NULL, +TRIGGER_GROUP VARCHAR(200) NOT NULL, +JOB_NAME VARCHAR(200) NOT NULL, +JOB_GROUP VARCHAR(200) NOT NULL, +DESCRIPTION VARCHAR(250) NULL, +NEXT_FIRE_TIME BIGINT(13) NULL, +PREV_FIRE_TIME BIGINT(13) NULL, +PRIORITY INTEGER NULL, +TRIGGER_STATE VARCHAR(16) NOT NULL, +TRIGGER_TYPE VARCHAR(8) NOT NULL, +START_TIME BIGINT(13) NOT NULL, +END_TIME BIGINT(13) NULL, +CALENDAR_NAME VARCHAR(200) NULL, +MISFIRE_INSTR SMALLINT(2) NULL, +JOB_DATA BLOB NULL, +PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), +FOREIGN KEY (SCHED_NAME,JOB_NAME,JOB_GROUP) +REFERENCES FN_QZ_JOB_DETAILS(SCHED_NAME,JOB_NAME,JOB_GROUP) +); + +-- ---------------------------------------------------------- +-- NAME: FN_QZ_SIMPLE_TRIGGERS; TYPE: TABLE +-- ---------------------------------------------------------- +create table fn_qz_simple_triggers ( +SCHED_NAME VARCHAR(120) NOT NULL, +TRIGGER_NAME VARCHAR(200) NOT NULL, +TRIGGER_GROUP VARCHAR(200) NOT NULL, +REPEAT_COUNT BIGINT(7) NOT NULL, +REPEAT_INTERVAL BIGINT(12) NOT NULL, +TIMES_TRIGGERED BIGINT(10) NOT NULL, +PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), +FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +REFERENCES FN_QZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +); + +-- ---------------------------------------------------------- +-- NAME: FN_QZ_CRON_TRIGGERS; TYPE: TABLE +-- ---------------------------------------------------------- +create table fn_qz_cron_triggers ( +SCHED_NAME VARCHAR(120) NOT NULL, +TRIGGER_NAME VARCHAR(200) NOT NULL, +TRIGGER_GROUP VARCHAR(200) NOT NULL, +CRON_EXPRESSION VARCHAR(120) NOT NULL, +TIME_ZONE_ID VARCHAR(80), +PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), +FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +REFERENCES FN_QZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +); + +-- ---------------------------------------------------------- +-- NAME: FN_QZ_SIMPROP_TRIGGERS; TYPE: TABLE +-- ---------------------------------------------------------- +create table fn_qz_simprop_triggers + ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + STR_PROP_1 VARCHAR(512) NULL, + STR_PROP_2 VARCHAR(512) NULL, + STR_PROP_3 VARCHAR(512) NULL, + INT_PROP_1 INT NULL, + INT_PROP_2 INT NULL, + LONG_PROP_1 BIGINT NULL, + LONG_PROP_2 BIGINT NULL, + DEC_PROP_1 NUMERIC(13,4) NULL, + DEC_PROP_2 NUMERIC(13,4) NULL, + BOOL_PROP_1 VARCHAR(1) NULL, + BOOL_PROP_2 VARCHAR(1) NULL, + PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) + REFERENCES FN_QZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +); + +-- ---------------------------------------------------------- +-- NAME: FN_QZ_BLOB_TRIGGERS; TYPE: TABLE +-- ---------------------------------------------------------- +create table fn_qz_blob_triggers ( +SCHED_NAME VARCHAR(120) NOT NULL, +TRIGGER_NAME VARCHAR(200) NOT NULL, +TRIGGER_GROUP VARCHAR(200) NOT NULL, +BLOB_DATA BLOB NULL, +PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), +INDEX (SCHED_NAME,TRIGGER_NAME, TRIGGER_GROUP), +FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +REFERENCES FN_QZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +); + +-- ---------------------------------------------------------- +-- NAME: FN_QZ_CALENDARS; TYPE: TABLE +-- ---------------------------------------------------------- +create table fn_qz_calendars ( +SCHED_NAME VARCHAR(120) NOT NULL, +CALENDAR_NAME VARCHAR(200) NOT NULL, +CALENDAR BLOB NOT NULL, +PRIMARY KEY (SCHED_NAME,CALENDAR_NAME) +); + +-- ---------------------------------------------------------- +-- NAME: FN_QZ_PAUSED_TRIGGER_GRPS; TYPE: TABLE +-- ---------------------------------------------------------- +create table fn_qz_paused_trigger_grps ( +SCHED_NAME VARCHAR(120) NOT NULL, +TRIGGER_GROUP VARCHAR(200) NOT NULL, +PRIMARY KEY (SCHED_NAME,TRIGGER_GROUP) +); + +-- ---------------------------------------------------------- +-- NAME: FN_QZ_FIRED_TRIGGERS; TYPE: TABLE +-- ---------------------------------------------------------- +create table fn_qz_fired_triggers ( +SCHED_NAME VARCHAR(120) NOT NULL, +ENTRY_ID VARCHAR(95) NOT NULL, +TRIGGER_NAME VARCHAR(200) NOT NULL, +TRIGGER_GROUP VARCHAR(200) NOT NULL, +INSTANCE_NAME VARCHAR(200) NOT NULL, +FIRED_TIME BIGINT(13) NOT NULL, +SCHED_TIME BIGINT(13) NOT NULL, +PRIORITY INTEGER NOT NULL, +STATE VARCHAR(16) NOT NULL, +JOB_NAME VARCHAR(200) NULL, +JOB_GROUP VARCHAR(200) NULL, +IS_NONCONCURRENT VARCHAR(1) NULL, +REQUESTS_RECOVERY VARCHAR(1) NULL, +PRIMARY KEY (SCHED_NAME,ENTRY_ID) +); + +-- ---------------------------------------------------------- +-- NAME: FN_QZ_SCHEDULER_STATE; TYPE: TABLE +-- ---------------------------------------------------------- +create table fn_qz_scheduler_state ( +SCHED_NAME VARCHAR(120) NOT NULL, +INSTANCE_NAME VARCHAR(200) NOT NULL, +LAST_CHECKIN_TIME BIGINT(13) NOT NULL, +CHECKIN_INTERVAL BIGINT(13) NOT NULL, +PRIMARY KEY (SCHED_NAME,INSTANCE_NAME) +); + +-- ---------------------------------------------------------- +-- NAME: FN_QZ_LOCKS; TYPE: TABLE +-- ---------------------------------------------------------- +create table fn_qz_locks ( +SCHED_NAME VARCHAR(120) NOT NULL, +LOCK_NAME VARCHAR(40) NOT NULL, +PRIMARY KEY (SCHED_NAME,LOCK_NAME) +); + +-- +-- name: rcloudinvocation; type: table +-- +create table rcloudinvocation ( + id varchar(128) not null primary key, + created timestamp not null, + userinfo varchar(2048) not null, + notebookid varchar(128) not null, + parameters varchar(2048) default null, + tokenreaddate timestamp null +); + +-- +-- name: rcloudnotebook; type: table +-- +create table rcloudnotebook ( + notebookname varchar(128) not null primary key, + notebookid varchar(128) not null +); + +-- +-- Name: fn_lu_message_location; Type: TABLE +-- + +CREATE TABLE fn_lu_message_location ( + message_location_id numeric(11,0) NOT NULL, + message_location_descr character varying(30) NOT NULL +); + +-- ------------------ CREATE VIEW SECTION +-- +-- NAME: V_URL_ACCESS; TYPE: VIEW +-- +CREATE VIEW v_url_access AS + SELECT DISTINCT M.ACTION AS URL, + M.FUNCTION_CD + FROM FN_MENU M + WHERE (M.ACTION IS NOT NULL) +UNION + SELECT DISTINCT T.ACTION AS URL, + T.FUNCTION_CD + FROM FN_TAB T + WHERE (T.ACTION IS NOT NULL) +UNION + SELECT R.RESTRICTED_URL AS URL, + R.FUNCTION_CD + FROM FN_RESTRICTED_URL R; + +-- ------------------ ALTER TABLE ADD CONSTRAINT PRIMARY KEY SECTION +-- +-- NAME: CR_FAVORITE_REPORTS_USER_IDREP_ID; TYPE: CONSTRAINT +-- +alter table cr_favorite_reports + add constraint cr_favorite_reports_user_idrep_id primary key (user_id, rep_id); +-- +-- NAME: CR_FOLDER_FOLDER_ID; TYPE: CONSTRAINT +-- +alter table cr_folder + add constraint cr_folder_folder_id primary key (folder_id); +-- +-- NAME: CR_FOLDER_ACCESS_FOLDER_ACCESS_ID; TYPE: CONSTRAINT +-- +alter table cr_folder_access + add constraint cr_folder_access_folder_access_id primary key (folder_access_id); +-- +-- NAME: CR_HIST_USER_MAP_HIST_IDUSER_ID; TYPE: CONSTRAINT +-- +alter table cr_hist_user_map + add constraint cr_hist_user_map_hist_iduser_id primary key (hist_id, user_id); +-- +-- NAME: CR_LU_FILE_TYPE_LOOKUP_ID; TYPE: CONSTRAINT +-- +alter table cr_lu_file_type + add constraint cr_lu_file_type_lookup_id primary key (lookup_id); +-- +-- NAME: CR_RAPTOR_ACTION_IMG_IMAGE_ID; TYPE: CONSTRAINT +-- +alter table cr_raptor_action_img + add constraint cr_raptor_action_img_image_id primary key (image_id); +-- +-- NAME: CR_RAPTOR_PDF_IMG_IMAGE_ID; TYPE: CONSTRAINT +-- +alter table cr_raptor_pdf_img + add constraint cr_raptor_pdf_img_image_id primary key (image_id); +-- +-- NAME: CR_REMOTE_SCHEMA_INFO_SCHEMA_PREFIX; TYPE: CONSTRAINT +-- +alter table cr_remote_schema_info + add constraint cr_remote_schema_info_schema_prefix primary key (schema_prefix); +-- +-- NAME: CR_REPORT_REP_ID; TYPE: CONSTRAINT +-- +alter table cr_report + add constraint cr_report_rep_id primary key (rep_id); +-- +-- NAME: CR_REPORT_ACCESS_REP_IDORDER_NO; TYPE: CONSTRAINT +-- +alter table cr_report_access + add constraint cr_report_access_rep_idorder_no primary key (rep_id, order_no); +-- +-- NAME: CR_REPORT_EMAIL_SENT_LOG_LOG_ID; TYPE: CONSTRAINT +-- +alter table cr_report_email_sent_log + add constraint cr_report_email_sent_log_log_id primary key (log_id); +-- +-- NAME: CR_REPORT_FILE_HISTORY_HIST_ID; TYPE: CONSTRAINT +-- +alter table cr_report_file_history + add constraint cr_report_file_history_hist_id primary key (hist_id); +-- +-- NAME: CR_REPORT_SCHEDULE_SCHEDULE_ID; TYPE: CONSTRAINT +-- +alter table cr_report_schedule + add constraint cr_report_schedule_schedule_id primary key (schedule_id); +-- +-- NAME: CR_REPORT_SCHEDULE_USERS_SCHEDULE_IDREP_IDUSER_IDORDER_NO; TYPE: CONSTRAINT +-- +alter table cr_report_schedule_users + add constraint cr_report_schedule_users_schedule_idrep_iduser_idorder_no primary key (schedule_id, rep_id, user_id, order_no); +-- +-- NAME: CR_REPORT_TEMPLATE_MAP_REPORT_ID; TYPE: CONSTRAINT +-- +alter table cr_report_template_map + add constraint cr_report_template_map_report_id primary key (report_id); +-- +-- NAME: CR_TABLE_ROLE_TABLE_NAMEROLE_ID; TYPE: CONSTRAINT +-- +alter table cr_table_role + add constraint cr_table_role_table_namerole_id primary key (table_name, role_id); +-- +-- NAME: CR_TABLE_SOURCE_TABLE_NAME; TYPE: CONSTRAINT +-- +alter table cr_table_source + add constraint cr_table_source_table_name primary key (table_name); +-- +-- NAME: FN_AUDIT_ACTION_AUDIT_ACTION_ID; TYPE: CONSTRAINT +-- +alter table fn_audit_action + add constraint fn_audit_action_audit_action_id primary key (audit_action_id); +-- +-- NAME: FN_CHAT_LOGS_CHAT_LOG_ID; TYPE: CONSTRAINT +-- +alter table fn_chat_logs + add constraint fn_chat_logs_chat_log_id primary key (chat_log_id); +-- +-- NAME: FN_CHAT_ROOM_CHAT_ROOM_ID; TYPE: CONSTRAINT +-- +alter table fn_chat_room + add constraint fn_chat_room_chat_room_id primary key (chat_room_id); +-- +-- NAME: FN_CHAT_USERS_ID; TYPE: CONSTRAINT +-- +alter table fn_chat_users + add constraint fn_chat_users_id primary key (id); +-- +-- NAME: FN_LU_ALERT_METHOD_ALERT_METHOD_CD; TYPE: CONSTRAINT +-- +alter table fn_lu_alert_method + add constraint fn_lu_alert_method_alert_method_cd primary key (alert_method_cd); +-- +-- NAME: FN_LU_BROADCAST_SITE_BROADCAST_SITE_CD; TYPE: CONSTRAINT +-- +alter table fn_lu_broadcast_site + add constraint fn_lu_broadcast_site_broadcast_site_cd primary key (broadcast_site_cd); +-- +-- NAME: FN_LU_PRIORITY_PRIORITY_ID; TYPE: CONSTRAINT +-- +alter table fn_lu_priority + add constraint fn_lu_priority_priority_id primary key (priority_id); +-- +-- NAME: FN_LU_ROLE_TYPE_ROLE_TYPE_ID; TYPE: CONSTRAINT +-- +alter table fn_lu_role_type + add constraint fn_lu_role_type_role_type_id primary key (role_type_id); +-- +-- NAME: FN_LU_TAB_SET_TAB_SET_CD; TYPE: CONSTRAINT +-- +alter table fn_lu_tab_set + add constraint fn_lu_tab_set_tab_set_cd primary key (tab_set_cd); +-- +-- NAME: FN_LU_TIMEZONE_TIMEZONE_ID; TYPE: CONSTRAINT +-- +alter table fn_lu_timezone + add constraint fn_lu_timezone_timezone_id primary key (timezone_id); +-- +-- NAME: FN_ORG_ORG_ID; TYPE: CONSTRAINT +-- +alter table fn_org + add constraint fn_org_org_id primary key (org_id); +-- +-- NAME: FN_RESTRICTED_URL_RESTRICTED_URLFUNCTION_CD; TYPE: CONSTRAINT +-- +alter table fn_restricted_url + add constraint fn_restricted_url_restricted_urlfunction_cd primary key (restricted_url, function_cd); +-- +-- NAME: FN_ROLE_COMPOSITE_PARENT_ROLE_IDCHILD_ROLE_ID; TYPE: CONSTRAINT +-- +alter table fn_role_composite + add constraint fn_role_composite_parent_role_idchild_role_id primary key (parent_role_id, child_role_id); +-- +-- NAME: FN_ROLE_FUNCTION_ROLE_IDFUNCTION_CD; TYPE: CONSTRAINT +-- +alter table fn_role_function + add constraint fn_role_function_role_idfunction_cd primary key (role_id, function_cd); +-- +-- NAME: FN_TAB_TAB_CD; TYPE: CONSTRAINT +-- +alter table fn_tab + add constraint fn_tab_tab_cd primary key (tab_cd); +-- +-- NAME: FN_TAB_SELECTED_SELECTED_TAB_CDTAB_URI; TYPE: CONSTRAINT +-- +alter table fn_tab_selected + add constraint fn_tab_selected_selected_tab_cdtab_uri primary key (selected_tab_cd, tab_uri); +-- +-- NAME: FN_USER_PSEUDO_ROLE_PSEUDO_ROLE_IDUSER_ID; TYPE: CONSTRAINT +-- +alter table fn_user_pseudo_role + add constraint fn_user_pseudo_role_pseudo_role_iduser_id primary key (pseudo_role_id, user_id); +-- +-- NAME: FN_USER_ROLE_USER_IDROLE_ID; TYPE: CONSTRAINT +-- +alter table fn_user_role + add constraint fn_user_role_user_idrole_id primary key (user_id, role_id, app_id); +-- +-- Name: fn_lu_message_location_MESSAGE_LOCATION_ID; Type: CONSTRAINT +-- + +ALTER TABLE fn_lu_message_location + ADD CONSTRAINT fn_lu_message_location_MESSAGE_LOCATION_ID PRIMARY KEY (message_location_id); + +-- ------------------ CREATE INDEX SECTION +-- +-- NAME: CR_REPORT_CREATE_IDPUBLIC_YNTITLE; TYPE: INDEX +-- +create index cr_report_create_idpublic_yntitle using btree on cr_report (create_id, public_yn, title); +-- +-- NAME: CR_TABLE_JOIN_DEST_TABLE_NAME; TYPE: INDEX +-- +create index cr_table_join_dest_table_name using btree on cr_table_join (dest_table_name); +-- +-- NAME: CR_TABLE_JOIN_SRC_TABLE_NAME; TYPE: INDEX +-- +create index cr_table_join_src_table_name using btree on cr_table_join (src_table_name); +-- +-- NAME: FN_AUDIT_LOG_ACTIVITY_CD; TYPE: INDEX +-- +create index fn_audit_log_activity_cd using btree on fn_audit_log (activity_cd); +-- +-- NAME: FN_AUDIT_LOG_USER_ID; TYPE: INDEX +-- +create index fn_audit_log_user_id using btree on fn_audit_log (user_id); +-- +-- NAME: FN_ORG_ACCESS_CD; TYPE: INDEX +-- +create index fn_org_access_cd using btree on fn_org (access_cd); +-- +-- NAME: FN_ROLE_FUNCTION_FUNCTION_CD; TYPE: INDEX +-- +create index fn_role_function_function_cd using btree on fn_role_function (function_cd); +-- +-- NAME: FN_ROLE_FUNCTION_ROLE_ID; TYPE: INDEX +-- +create index fn_role_function_role_id using btree on fn_role_function (role_id); +-- +-- NAME: FN_USER_ADDRESS_ID; TYPE: INDEX +-- +create index fn_user_address_id using btree on fn_user (address_id); +-- +-- NAME: FN_USER_ALERT_METHOD_CD; TYPE: INDEX +-- +create index fn_user_alert_method_cd using btree on fn_user (alert_method_cd); +-- +-- NAME: FN_USER_HRID; TYPE: INDEX +-- +create unique index fn_user_hrid using btree on fn_user (hrid); +-- +-- NAME: FN_USER_LOGIN_ID; TYPE: INDEX +-- +create unique index fn_user_login_id using btree on fn_user (login_id); +-- +-- NAME: FN_USER_ORG_ID; TYPE: INDEX +-- +create index fn_user_org_id using btree on fn_user (org_id); +-- +-- NAME: FN_USER_ROLE_ROLE_ID; TYPE: INDEX +-- +create index fn_user_role_role_id using btree on fn_user_role (role_id); +-- +-- NAME: FN_USER_ROLE_USER_ID; TYPE: INDEX +-- +create index fn_user_role_user_id using btree on fn_user_role (user_id); +-- +-- NAME: FK_FN_USER__REF_178_FN_APP_idx; TYPE: INDEX +-- +create index fk_fn_user__ref_178_fn_app_IDX on fn_user_role (app_id); + +-- ---------------------------------------------------------- +-- NAME: QUARTZ TYPE: INDEXES +-- ---------------------------------------------------------- +create index idx_fn_qz_j_req_recovery on fn_qz_job_details(sched_name,requests_recovery); +create index idx_fn_qz_j_grp on fn_qz_job_details(sched_name,job_group); +create index idx_fn_qz_t_j on fn_qz_triggers(sched_name,job_name,job_group); +create index idx_fn_qz_t_jg on fn_qz_triggers(sched_name,job_group); +create index idx_fn_qz_t_c on fn_qz_triggers(sched_name,calendar_name); +create index idx_fn_qz_t_g on fn_qz_triggers(sched_name,trigger_group); +create index idx_fn_qz_t_state on fn_qz_triggers(sched_name,trigger_state); +create index idx_fn_qz_t_n_state on fn_qz_triggers(sched_name,trigger_name,trigger_group,trigger_state); +create index idx_fn_qz_t_n_g_state on fn_qz_triggers(sched_name,trigger_group,trigger_state); +create index idx_fn_qz_t_next_fire_time on fn_qz_triggers(sched_name,next_fire_time); +create index idx_fn_qz_t_nft_st on fn_qz_triggers(sched_name,trigger_state,next_fire_time); +create index idx_fn_qz_t_nft_misfire on fn_qz_triggers(sched_name,misfire_instr,next_fire_time); +create index idx_fn_qz_t_nft_st_misfire on fn_qz_triggers(sched_name,misfire_instr,next_fire_time,trigger_state); +create index idx_fn_qz_t_nft_st_misfire_grp on fn_qz_triggers(sched_name,misfire_instr,next_fire_time,trigger_group,trigger_state); +create index idx_fn_qz_ft_trig_inst_name on fn_qz_fired_triggers(sched_name,instance_name); +create index idx_fn_qz_ft_inst_job_req_rcvry on fn_qz_fired_triggers(sched_name,instance_name,requests_recovery); +create index idx_fn_qz_ft_j_g on fn_qz_fired_triggers(sched_name,job_name,job_group); +create index idx_fn_qz_ft_jg on fn_qz_fired_triggers(sched_name,job_group); +create index idx_fn_qz_ft_t_g on fn_qz_fired_triggers(sched_name,trigger_name,trigger_group); +create index idx_fn_qz_ft_tg on fn_qz_fired_triggers(sched_name,trigger_group); + +-- ------------------ ALTER TABLE ADD CONSTRAINT FOREIGN KEY SECTION +-- +-- NAME: FK_FN_AUDIT_REF_205_FN_LU_AC; TYPE: CONSTRAINT +-- +alter table fn_audit_log + add constraint fk_fn_audit_ref_205_fn_lu_ac foreign key (activity_cd) references fn_lu_activity(activity_cd); +-- +-- NAME: FK_FN_ROLE__REF_201_FN_FUNCT; TYPE: CONSTRAINT +-- +alter table fn_role_function + add constraint fk_fn_role__ref_201_fn_funct foreign key (function_cd) references fn_function(function_cd); +-- +-- NAME: FK_FN_USER__REF_178_FN_APP; TYPE: FK CONSTRAINT +-- +alter table fn_user_role + add constraint fk_fn_user__ref_178_fn_app foreign key (app_id) references fn_app(app_id); +-- +-- NAME: FK_CR_REPOR_REF_14707_CR_REPOR; TYPE: FK CONSTRAINT +-- +alter table cr_report_schedule + add constraint fk_cr_repor_ref_14707_cr_repor foreign key (rep_id) references cr_report(rep_id); +-- +-- NAME: FK_CR_REPOR_REF_14716_CR_REPOR; TYPE: FK CONSTRAINT +-- +alter table cr_report_schedule_users + add constraint fk_cr_repor_ref_14716_cr_repor foreign key (schedule_id) references cr_report_schedule(schedule_id); +-- +-- NAME: FK_CR_REPOR_REF_17645_CR_REPOR; TYPE: FK CONSTRAINT +-- +alter table cr_report_log + add constraint fk_cr_repor_ref_17645_cr_repor foreign key (rep_id) references cr_report(rep_id); +-- +-- NAME: FK_CR_REPOR_REF_8550_CR_REPOR; TYPE: FK CONSTRAINT +-- +alter table cr_report_access + add constraint fk_cr_repor_ref_8550_cr_repor foreign key (rep_id) references cr_report(rep_id); +-- +-- NAME: FK_CR_REPORT_REP_ID; TYPE: FK CONSTRAINT +-- +alter table cr_report_email_sent_log + add constraint fk_cr_report_rep_id foreign key (rep_id) references cr_report(rep_id); +-- +-- NAME: FK_CR_TABLE_REF_311_CR_TAB; TYPE: FK CONSTRAINT +-- +alter table cr_table_join + add constraint fk_cr_table_ref_311_cr_tab foreign key (src_table_name) references cr_table_source(table_name); +-- +-- NAME: FK_CR_TABLE_REF_315_CR_TAB; TYPE: FK CONSTRAINT +-- +alter table cr_table_join + add constraint fk_cr_table_ref_315_cr_tab foreign key (dest_table_name) references cr_table_source(table_name); +-- +-- NAME: FK_CR_TABLE_REF_32384_CR_TABLE; TYPE: FK CONSTRAINT +-- +alter table cr_table_role + add constraint fk_cr_table_ref_32384_cr_table foreign key (table_name) references cr_table_source(table_name); +-- +-- NAME: FK_FN_TAB_FUNCTION_CD; TYPE: FK CONSTRAINT +-- +alter table fn_tab + add constraint fk_fn_tab_function_cd foreign key (function_cd) references fn_function(function_cd); +-- +-- NAME: FK_FN_TAB_SELECTED_TAB_CD; TYPE: FK CONSTRAINT +-- +alter table fn_tab_selected + add constraint fk_fn_tab_selected_tab_cd foreign key (selected_tab_cd) references fn_tab(tab_cd); +-- +-- NAME: FK_FN_TAB_SET_CD; TYPE: FK CONSTRAINT +-- +alter table fn_tab + add constraint fk_fn_tab_set_cd foreign key (tab_set_cd) references fn_lu_tab_set(tab_set_cd); +-- +-- NAME: FK_FN_USER_REF_110_FN_ORG; TYPE: FK CONSTRAINT +-- +alter table fn_user + add constraint fk_fn_user_ref_110_fn_org foreign key (org_id) references fn_org(org_id); +-- +-- NAME: FK_FN_USER_REF_123_FN_LU_AL; TYPE: FK CONSTRAINT +-- +alter table fn_user + add constraint fk_fn_user_ref_123_fn_lu_al foreign key (alert_method_cd) references fn_lu_alert_method(alert_method_cd); +-- +-- NAME: FK_FN_USER_REF_197_FN_USER; TYPE: FK CONSTRAINT +-- +alter table fn_user + add constraint fk_fn_user_ref_197_fn_user foreign key (manager_id) references fn_user(user_id); +-- +-- NAME: FK_FN_USER_REF_198_FN_USER; TYPE: FK CONSTRAINT +-- +alter table fn_user + add constraint fk_fn_user_ref_198_fn_user foreign key (created_id) references fn_user(user_id); +-- +-- NAME: FK_FN_USER_REF_199_FN_USER; TYPE: FK CONSTRAINT +-- +alter table fn_user + add constraint fk_fn_user_ref_199_fn_user foreign key (modified_id) references fn_user(user_id); +-- +-- NAME: FK_PARENT_KEY_CR_FOLDER; TYPE: FK CONSTRAINT +-- +alter table cr_folder + add constraint fk_parent_key_cr_folder foreign key (parent_folder_id) references cr_folder(folder_id); +-- +-- NAME: FK_PSEUDO_ROLE_PSEUDO_ROLE_ID; TYPE: FK CONSTRAINT +-- +alter table fn_user_pseudo_role + add constraint fk_pseudo_role_pseudo_role_id foreign key (pseudo_role_id) references fn_role(role_id); +-- +-- NAME: FK_PSEUDO_ROLE_USER_ID; TYPE: FK CONSTRAINT +-- +alter table fn_user_pseudo_role + add constraint fk_pseudo_role_user_id foreign key (user_id) references fn_user(user_id); +-- +-- NAME: FK_TIMEZONE; TYPE: FK CONSTRAINT +-- +alter table fn_user + add constraint fk_timezone foreign key (timezone) references fn_lu_timezone(timezone_id); +-- +-- NAME: SYS_C0014614; TYPE: FK CONSTRAINT +-- +alter table cr_report_file_history + add constraint sys_c0014614 foreign key (file_type_id) references cr_lu_file_type(lookup_id); +-- +-- NAME: SYS_C0014615; TYPE: FK CONSTRAINT +-- +alter table cr_report_file_history + add constraint sys_c0014615 foreign key (rep_id) references cr_report(rep_id); +-- +-- NAME: SYS_C0014616; TYPE: FK CONSTRAINT +-- +alter table cr_hist_user_map + add constraint sys_c0014616 foreign key (hist_id) references cr_report_file_history(hist_id); +-- +-- NAME: SYS_C0014617; TYPE: FK CONSTRAINT +-- +alter table cr_hist_user_map + add constraint sys_c0014617 foreign key (user_id) references fn_user(user_id); + +commit; diff --git a/ui/db-scripts/EcompSdkDDLMySql_2_4_OS.sql b/ui/db-scripts/EcompSdkDDLMySql_2_4_OS.sql new file mode 100644 index 0000000..4a35dd6 --- /dev/null +++ b/ui/db-scripts/EcompSdkDDLMySql_2_4_OS.sql @@ -0,0 +1,12 @@ +-- --------------------------------------------------------------------------------------------------------------- +-- This script adds tables for the OPEN-SOURCE version 2.1.0 of the ECOMP SDK application database. +-- The DDL COMMON script must be executed first! +-- --------------------------------------------------------------------------------------------------------------- + +SET FOREIGN_KEY_CHECKS=1; + +USE akraino; + +-- No additional tables required at this time + +commit; diff --git a/ui/db-scripts/EcompSdkDMLMySql_2_4_Common.sql b/ui/db-scripts/EcompSdkDMLMySql_2_4_Common.sql new file mode 100644 index 0000000..611c6f8 --- /dev/null +++ b/ui/db-scripts/EcompSdkDMLMySql_2_4_Common.sql @@ -0,0 +1,2881 @@ +-- --------------------------------------------------------------------------------------------------------------- +-- This script populates tables in the COMMON version 2.1.0 of the ONAP SDK application database. +-- Additional DML scripts may be required! +-- --------------------------------------------------------------------------------------------------------------- + +SET FOREIGN_KEY_CHECKS=1; + +USE akraino; + +-- fn_function +Insert into fn_function (FUNCTION_CD,FUNCTION_NAME,TYPE,ACTION) values ('menu_process','Process List','menu','*'); +Insert into fn_function (FUNCTION_CD,FUNCTION_NAME,TYPE,ACTION) values ('menu_job','Job Menu','menu','*'); +Insert into fn_function (FUNCTION_CD,FUNCTION_NAME,TYPE,ACTION) values ('menu_job_create','Job Create','menu','*'); +Insert into fn_function (FUNCTION_CD,FUNCTION_NAME,TYPE,ACTION) values ('menu_job_designer','Process in Designer view','menu','*'); +Insert into fn_function (FUNCTION_CD,FUNCTION_NAME,TYPE,ACTION) values ('menu_task','Task Menu','menu','*'); +Insert into fn_function (FUNCTION_CD,FUNCTION_NAME,TYPE,ACTION) values ('menu_task_search','Task Search','menu','*'); +Insert into fn_function (FUNCTION_CD,FUNCTION_NAME,TYPE,ACTION) values ('menu_map','Map Menu','menu','*'); +Insert into fn_function (FUNCTION_CD,FUNCTION_NAME,TYPE,ACTION) values ('menu_sample','Sample Pages Menu','menu','*'); +Insert into fn_function (FUNCTION_CD,FUNCTION_NAME,TYPE,ACTION) values ('login','Login','url','*'); +Insert into fn_function (FUNCTION_CD,FUNCTION_NAME,TYPE,ACTION) values ('menu_home','Home Menu','menu','*'); +Insert into fn_function (FUNCTION_CD,FUNCTION_NAME,TYPE,ACTION) values ('menu_customer','Customer Menu','menu','*'); +Insert into fn_function (FUNCTION_CD,FUNCTION_NAME,TYPE,ACTION) values ('menu_reports','Reports Menu','menu','*'); +Insert into fn_function (FUNCTION_CD,FUNCTION_NAME,TYPE,ACTION) values ('menu_profile','Profile Menu','menu','*'); +Insert into fn_function (FUNCTION_CD,FUNCTION_NAME,TYPE,ACTION) values ('menu_admin','Admin Menu','menu','*'); +Insert into fn_function (FUNCTION_CD,FUNCTION_NAME,TYPE,ACTION) values ('menu_feedback','Feedback Menu','menu','*'); +Insert into fn_function (FUNCTION_CD,FUNCTION_NAME,TYPE,ACTION) values ('menu_help','Help Menu','menu','*'); +Insert into fn_function (FUNCTION_CD,FUNCTION_NAME,TYPE,ACTION) values ('menu_logout','Logout Menu','menu','*'); +Insert into fn_function (FUNCTION_CD,FUNCTION_NAME,TYPE,ACTION) values ('menu_notes','Notes Menu','menu','*'); +Insert into fn_function (FUNCTION_CD,FUNCTION_NAME,TYPE,ACTION) values ('menu_ajax','Ajax Menu','menu','*'); +Insert into fn_function (FUNCTION_CD,FUNCTION_NAME,TYPE,ACTION) values ('menu_customer_create','Customer Create','menu','*'); +Insert into fn_function (FUNCTION_CD,FUNCTION_NAME,TYPE,ACTION) values ('menu_profile_create','Profile Create','menu','*'); +Insert into fn_function (FUNCTION_CD,FUNCTION_NAME,TYPE,ACTION) values ('menu_profile_import','Profile Import','menu','*'); +Insert into fn_function (FUNCTION_CD,FUNCTION_NAME,TYPE,ACTION) values ('menu_tab','Sample Tab Menu','menu','*'); +Insert into fn_function (FUNCTION_CD,FUNCTION_NAME,TYPE,ACTION) values ('view_reports','View Raptor reports','menu','*'); + +Insert into fn_function (FUNCTION_CD,FUNCTION_NAME,TYPE,ACTION) values ('menu_itracker_admin','Itracker Admin/Support menu','menu','*'); +Insert into fn_function (FUNCTION_CD,FUNCTION_NAME,TYPE,ACTION) values ('quantum_bd','Big Data Function','url','*'); +Insert into fn_function (FUNCTION_CD,FUNCTION_NAME,TYPE,ACTION) values ('menu_hiveconfig','Hive Configuration','menu','*'); +Insert into fn_function (FUNCTION_CD,FUNCTION_NAME,TYPE,ACTION) values ('menu_mapreduce_create','Map Reduce Configuration Create','menu','*'); +Insert into fn_function (FUNCTION_CD,FUNCTION_NAME,TYPE,ACTION) values ('menu_mapreduce_search','Map Reduce Configuration Search','menu','*'); +Insert into fn_function (FUNCTION_CD,FUNCTION_NAME,TYPE,ACTION) values ('menu_hiveconfig_search','Hive Configuration Search','menu','*'); +Insert into fn_function (FUNCTION_CD,FUNCTION_NAME,TYPE,ACTION) values ('menu_hiveconfig_create','Hive Configuration Create','menu','*'); +Insert into fn_function (FUNCTION_CD,FUNCTION_NAME,TYPE,ACTION) values ('menu_test','Test Menu','menu','*'); +Insert into fn_function (FUNCTION_CD,FUNCTION_NAME,TYPE,ACTION) values ('menu_doclib','Document Library Menu','menu','*'); +Insert into fn_function (FUNCTION_CD,FUNCTION_NAME,TYPE,ACTION) values ('doclib','Document Library','menu','*'); +Insert into fn_function (FUNCTION_CD,FUNCTION_NAME,TYPE,ACTION) values ('doclib_admin','Document Library Admin','menu','*'); +Insert into fn_function (FUNCTION_CD,FUNCTION_NAME,TYPE,ACTION) values ('menu_concept','CoNCEPT','menu','*'); +Insert into fn_function (FUNCTION_CD,FUNCTION_NAME,TYPE,ACTION) values ('menu_itracker','iTracker Menu','menu','*'); +Insert into fn_function (FUNCTION_CD,FUNCTION_NAME,TYPE,ACTION) values ('menu_mapreduce','Map Reduce Configuration','menu','*'); + +-- fn_lu_activity +Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('add_role','add_role'); +Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('remove_role','remove_role'); +Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('add_user_role','add_user_role'); +Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('remove_user_role','remove_user_role'); +Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('add_role_function','add_role_function'); +Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('remove_role_function','remove_role_function'); +Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('add_child_role','add_child_role'); +Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('remove_child_role','remove_child_role'); +Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('mobile_login','Mobile Login'); +Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('mobile_logout','Mobile Logout'); +Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('login','Login'); +Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('logout','Logout'); + +-- fn_lu_alert_method +Insert into fn_lu_alert_method (ALERT_METHOD_CD,ALERT_METHOD) values ('PHONE','Phone'); +Insert into fn_lu_alert_method (ALERT_METHOD_CD,ALERT_METHOD) values ('FAX','Fax'); +Insert into fn_lu_alert_method (ALERT_METHOD_CD,ALERT_METHOD) values ('PAGER','Pager'); +Insert into fn_lu_alert_method (ALERT_METHOD_CD,ALERT_METHOD) values ('EMAIL','Email'); +Insert into fn_lu_alert_method (ALERT_METHOD_CD,ALERT_METHOD) values ('SMS','SMS'); + +-- fn_lu_menu_set +Insert into fn_lu_menu_set (MENU_SET_CD,MENU_SET_NAME) values ('APP','Application Menu'); + +-- fn_lu_priority +Insert into fn_lu_priority (PRIORITY_ID,PRIORITY,ACTIVE_YN,SORT_ORDER) values (10,'Low','Y',10); +Insert into fn_lu_priority (PRIORITY_ID,PRIORITY,ACTIVE_YN,SORT_ORDER) values (20,'Normal','Y',20); +Insert into fn_lu_priority (PRIORITY_ID,PRIORITY,ACTIVE_YN,SORT_ORDER) values (30,'High','Y',30); +Insert into fn_lu_priority (PRIORITY_ID,PRIORITY,ACTIVE_YN,SORT_ORDER) values (40,'Urgent','Y',40); +Insert into fn_lu_priority (PRIORITY_ID,PRIORITY,ACTIVE_YN,SORT_ORDER) values (50,'Fatal','Y',50); + +-- fn_lu_tab_set +Insert into fn_lu_tab_set (TAB_SET_CD,TAB_SET_NAME) values ('APP','Application Tabs'); + +-- fn_lu_timezone +Insert into fn_lu_timezone (TIMEZONE_ID,TIMEZONE_NAME,TIMEZONE_VALUE) values (10,'US/Eastern','US/Eastern'); +Insert into fn_lu_timezone (TIMEZONE_ID,TIMEZONE_NAME,TIMEZONE_VALUE) values (20,'US/Central','US/Central'); +Insert into fn_lu_timezone (TIMEZONE_ID,TIMEZONE_NAME,TIMEZONE_VALUE) values (30,'US/Mountain','US/Mountain'); +Insert into fn_lu_timezone (TIMEZONE_ID,TIMEZONE_NAME,TIMEZONE_VALUE) values (40,'US/Arizona','America/Phoenix'); +Insert into fn_lu_timezone (TIMEZONE_ID,TIMEZONE_NAME,TIMEZONE_VALUE) values (50,'US/Pacific','US/Pacific'); +Insert into fn_lu_timezone (TIMEZONE_ID,TIMEZONE_NAME,TIMEZONE_VALUE) values (60,'US/Alaska','US/Alaska'); +Insert into fn_lu_timezone (TIMEZONE_ID,TIMEZONE_NAME,TIMEZONE_VALUE) values (70,'US/Hawaii','US/Hawaii'); + +-- fn_restricted_url +INSERT INTO fn_restricted_url (restricted_url, function_cd) VALUES ('attachment.htm','menu_admin'); +INSERT INTO fn_restricted_url (restricted_url, function_cd) VALUES ('broadcast.htm','menu_admin'); +INSERT INTO fn_restricted_url (restricted_url, function_cd) VALUES ('file_upload.htm','menu_admin'); +INSERT INTO fn_restricted_url (restricted_url, function_cd) VALUES ('job.htm','menu_admin'); +INSERT INTO fn_restricted_url (restricted_url, function_cd) VALUES ('role.htm','menu_admin'); +INSERT INTO fn_restricted_url (restricted_url, function_cd) VALUES ('role_function.htm','menu_admin'); +INSERT INTO fn_restricted_url (restricted_url, function_cd) VALUES ('test.htm','menu_admin'); +INSERT INTO fn_restricted_url (restricted_url, function_cd) VALUES ('async_test.htm','menu_home'); +INSERT INTO fn_restricted_url (restricted_url, function_cd) VALUES ('chatWindow.htm','menu_home'); +INSERT INTO fn_restricted_url (restricted_url, function_cd) VALUES ('contact_list.htm','menu_home'); +INSERT INTO fn_restricted_url (restricted_url, function_cd) VALUES ('customer_dynamic_list.htm','menu_home'); +INSERT INTO fn_restricted_url (restricted_url, function_cd) VALUES ('event.htm','menu_home'); +INSERT INTO fn_restricted_url (restricted_url, function_cd) VALUES ('event_list.htm','menu_home'); +INSERT INTO fn_restricted_url (restricted_url, function_cd) VALUES ('mobile_welcome.htm','menu_home'); +INSERT INTO fn_restricted_url (restricted_url, function_cd) VALUES ('sample_map.htm','menu_home'); +INSERT INTO fn_restricted_url (restricted_url, function_cd) VALUES ('template.jsp','menu_home'); +INSERT INTO fn_restricted_url (restricted_url, function_cd) VALUES ('jbpm_designer.htm','menu_job_create'); +INSERT INTO fn_restricted_url (restricted_url, function_cd) VALUES ('jbpm_drools.htm','menu_job_create'); +INSERT INTO fn_restricted_url (restricted_url, function_cd) VALUES ('process_job.htm','menu_job_create'); +INSERT INTO fn_restricted_url (restricted_url, function_cd) VALUES ('profile.htm','menu_profile_create'); +INSERT INTO fn_restricted_url (restricted_url, function_cd) VALUES ('raptor.htm','menu_reports'); +INSERT INTO fn_restricted_url (restricted_url, function_cd) VALUES ('raptor2.htm','menu_reports'); +INSERT INTO fn_restricted_url (restricted_url, function_cd) VALUES ('raptor_blob_extract.htm','menu_reports'); +INSERT INTO fn_restricted_url (restricted_url, function_cd) VALUES ('raptor_email_attachment.htm','menu_reports'); +INSERT INTO fn_restricted_url (restricted_url, function_cd) VALUES ('raptor_search.htm','menu_reports'); +INSERT INTO fn_restricted_url (restricted_url, function_cd) VALUES ('report_list.htm','menu_reports'); +INSERT INTO fn_restricted_url (restricted_url, function_cd) VALUES ('gauge.htm','menu_tab'); +INSERT INTO fn_restricted_url (restricted_url, function_cd) VALUES ('gmap_controller.htm','menu_tab'); +INSERT INTO fn_restricted_url (restricted_url, function_cd) VALUES ('gmap_frame.htm','menu_tab'); +INSERT INTO fn_restricted_url (restricted_url, function_cd) VALUES ('map.htm','menu_tab'); +INSERT INTO fn_restricted_url (restricted_url, function_cd) VALUES ('map_download.htm','menu_tab'); +INSERT INTO fn_restricted_url (restricted_url, function_cd) VALUES ('map_grid_search.htm','menu_tab'); +INSERT INTO fn_restricted_url (restricted_url, function_cd) VALUES ('sample_animated_map.htm','menu_tab'); +INSERT INTO fn_restricted_url (restricted_url, function_cd) VALUES ('sample_map_2.htm','menu_tab'); +INSERT INTO fn_restricted_url (restricted_url, function_cd) VALUES ('sample_map_3.htm','menu_tab'); +INSERT INTO fn_restricted_url (restricted_url, function_cd) VALUES ('tab2_sub1.htm','menu_tab'); +INSERT INTO fn_restricted_url (restricted_url, function_cd) VALUES ('tab2_sub2_link1.htm','menu_tab'); +INSERT INTO fn_restricted_url (restricted_url, function_cd) VALUES ('tab2_sub2_link2.htm','menu_tab'); +INSERT INTO fn_restricted_url (restricted_url, function_cd) VALUES ('tab2_sub3.htm','menu_tab'); +INSERT INTO fn_restricted_url (restricted_url, function_cd) VALUES ('tab3.htm','menu_tab'); +INSERT INTO fn_restricted_url (restricted_url, function_cd) VALUES ('tab4.htm','menu_tab'); +INSERT INTO fn_restricted_url (restricted_url, function_cd) VALUES ('raptor.htm','view_reports'); +INSERT INTO fn_restricted_url (restricted_url, function_cd) VALUES ('raptor_blob_extract.htm','view_reports'); +INSERT INTO fn_restricted_url VALUES('admin','menu_admin'); +INSERT INTO fn_restricted_url VALUES('get_role','menu_admin'); +INSERT INTO fn_restricted_url VALUES('get_role_functions','menu_admin'); +INSERT INTO fn_restricted_url VALUES('role_list/*','menu_admin'); +INSERT INTO fn_restricted_url VALUES('role_function_list/*','menu_admin'); +INSERT INTO fn_restricted_url VALUES('addRole','menu_admin'); +INSERT INTO fn_restricted_url VALUES('addRoleFunction','menu_admin'); +INSERT INTO fn_restricted_url VALUES('removeRole','menu_admin'); +INSERT INTO fn_restricted_url VALUES('removeRoleFunction','menu_admin'); +INSERT INTO fn_restricted_url VALUES('profile/*','menu_admin'); +INSERT INTO fn_restricted_url VALUES('samplePage','menu_sample'); +INSERT INTO fn_restricted_url VALUES('workflows','menu_admin'); +INSERT INTO fn_restricted_url VALUES('workflows/list','menu_admin'); +INSERT INTO fn_restricted_url VALUES('workflows/addWorkflow','menu_admin'); +INSERT INTO fn_restricted_url VALUES('workflows/saveCronJob','menu_admin'); +INSERT INTO fn_restricted_url VALUES('workflows/editWorkflow','menu_admin'); +INSERT INTO fn_restricted_url VALUES('workflows/removeWorkflow','menu_admin'); +INSERT INTO fn_restricted_url VALUES('workflows/removeAllWorkflows','menu_admin'); +INSERT INTO fn_restricted_url VALUES('role/saveRole.htm','menu_admin'); +INSERT INTO fn_restricted_url VALUES('post_search/process','menu_admin'); +INSERT INTO fn_restricted_url VALUES('post_search/search','menu_admin'); +INSERT INTO fn_restricted_url VALUES('post_search/search','menu_profile'); +INSERT INTO fn_restricted_url VALUES('report/wizard/retrieve_def_tab_wise_data/*','menu_reports'); +INSERT INTO fn_restricted_url VALUES('report/wizard/retrieve_form_tab_wise_data/*','menu_reports'); +INSERT INTO fn_restricted_url VALUES('report/wizard/retrieve_sql_tab_wise_data/*','menu_reports'); +INSERT INTO fn_restricted_url VALUES('report/wizard/security/*','menu_reports'); +INSERT INTO fn_restricted_url VALUES('report/wizard/copy_report/*','menu_reports'); +INSERT INTO fn_restricted_url VALUES('report/wizard/save_def_tab_data/*','menu_reports'); +INSERT INTO fn_restricted_url VALUES('report/wizard/retrieve_data/true','menu_reports'); + +-- fn_role +Insert into fn_role (ROLE_ID,ROLE_NAME,ACTIVE_YN,PRIORITY) values (16,'Standard User','Y',5); +Insert into fn_role (ROLE_ID,ROLE_NAME,ACTIVE_YN,PRIORITY) values (1,'System Administrator','Y',1); + +-- fn_role_composite +Insert into fn_role_composite (PARENT_ROLE_ID,CHILD_ROLE_ID) values (1,16); + +-- fn_role_function +Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'login'); +Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_admin'); +Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_ajax'); +Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_customer'); +Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_customer_create'); +Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_feedback'); +Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_help'); +Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_home'); +Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_job'); +Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_job_create'); +Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_logout'); +Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_notes'); +Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_process'); +Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_profile'); +Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_profile_create'); +Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_profile_import'); +Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_reports'); +Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_sample'); +Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_tab'); +Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (16,'login'); +Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (16,'menu_ajax'); +Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (16,'menu_customer'); +Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (16,'menu_customer_create'); +Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (16,'menu_home'); +Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (16,'menu_logout'); +Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (16,'menu_map'); +Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (16,'menu_profile'); +Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (16,'menu_reports'); +Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (16,'menu_tab'); + +-- fn_tab +Insert into fn_tab (TAB_CD,TAB_NAME,TAB_DESCR,ACTION,FUNCTION_CD,ACTIVE_YN,SORT_ORDER,PARENT_TAB_CD,TAB_SET_CD) values ('TAB2_SUB1_S1','Left Tab 1','Sub - Sub Tab 1 Information','tab2_sub1.htm','menu_tab','Y',10,'TAB2_SUB1','APP'); +Insert into fn_tab (TAB_CD,TAB_NAME,TAB_DESCR,ACTION,FUNCTION_CD,ACTIVE_YN,SORT_ORDER,PARENT_TAB_CD,TAB_SET_CD) values ('TAB1','Tab 1','Tab 1 Information','tab1.htm','menu_tab','Y',10,null,'APP'); +Insert into fn_tab (TAB_CD,TAB_NAME,TAB_DESCR,ACTION,FUNCTION_CD,ACTIVE_YN,SORT_ORDER,PARENT_TAB_CD,TAB_SET_CD) values ('TAB2','Tab 2','Tab 2 Information','tab2_sub1.htm','menu_tab','Y',20,null,'APP'); +Insert into fn_tab (TAB_CD,TAB_NAME,TAB_DESCR,ACTION,FUNCTION_CD,ACTIVE_YN,SORT_ORDER,PARENT_TAB_CD,TAB_SET_CD) values ('TAB3','Tab 3','Tab 3 Information','tab3.htm','menu_tab','Y',30,null,'APP'); +Insert into fn_tab (TAB_CD,TAB_NAME,TAB_DESCR,ACTION,FUNCTION_CD,ACTIVE_YN,SORT_ORDER,PARENT_TAB_CD,TAB_SET_CD) values ('TAB4','Tab 4','Tab 4 Information','tab4.htm','menu_tab','Y',40,null,'APP'); +Insert into fn_tab (TAB_CD,TAB_NAME,TAB_DESCR,ACTION,FUNCTION_CD,ACTIVE_YN,SORT_ORDER,PARENT_TAB_CD,TAB_SET_CD) values ('TAB2_SUB1','Sub Tab 1','Sub Tab 1 Information','tab2_sub1.htm','menu_tab','Y',10,'TAB2','APP'); +Insert into fn_tab (TAB_CD,TAB_NAME,TAB_DESCR,ACTION,FUNCTION_CD,ACTIVE_YN,SORT_ORDER,PARENT_TAB_CD,TAB_SET_CD) values ('TAB2_SUB2','Sub Tab 2','Sub Tab 2 Information','tab2_sub2.htm','menu_tab','Y',20,'TAB2','APP'); +Insert into fn_tab (TAB_CD,TAB_NAME,TAB_DESCR,ACTION,FUNCTION_CD,ACTIVE_YN,SORT_ORDER,PARENT_TAB_CD,TAB_SET_CD) values ('TAB2_SUB3','Sub Tab 3','Sub Tab 3 Information','tab2_sub3.htm','menu_tab','Y',30,'TAB2','APP'); + +-- fn_tab_selected +Insert into fn_tab_selected (SELECTED_TAB_CD,TAB_URI) values ('TAB1','tab1'); +Insert into fn_tab_selected (SELECTED_TAB_CD,TAB_URI) values ('TAB2','tab2_sub1'); +Insert into fn_tab_selected (SELECTED_TAB_CD,TAB_URI) values ('TAB2','tab2_sub2'); +Insert into fn_tab_selected (SELECTED_TAB_CD,TAB_URI) values ('TAB2','tab2_sub3'); +Insert into fn_tab_selected (SELECTED_TAB_CD,TAB_URI) values ('TAB2_SUB1','tab2_sub1'); +Insert into fn_tab_selected (SELECTED_TAB_CD,TAB_URI) values ('TAB2_SUB1_S1','tab2_sub1'); +Insert into fn_tab_selected (SELECTED_TAB_CD,TAB_URI) values ('TAB2_SUB2','tab2_sub2'); +Insert into fn_tab_selected (SELECTED_TAB_CD,TAB_URI) values ('TAB2_SUB3','tab2_sub3'); +Insert into fn_tab_selected (SELECTED_TAB_CD,TAB_URI) values ('TAB3','tab3'); +Insert into fn_tab_selected (SELECTED_TAB_CD,TAB_URI) values ('TAB4','tab4'); + +-- DEMO_BAR_CHART +Insert into demo_bar_chart (label, value) values ('A', 29.765957771107); +Insert into demo_bar_chart (label, value) values ('B', 0); +Insert into demo_bar_chart (label, value) values ('C', 32.807804682612); +Insert into demo_bar_chart (label, value) values ('D', 196.45946739256); +Insert into demo_bar_chart (label, value) values ('E', 0.19434030906893); +Insert into demo_bar_chart (label, value) values ('F', 98.079782601442); +Insert into demo_bar_chart (label, value) values ('G', 13.925743130903); +Insert into demo_bar_chart (label, value) values ('H', 5.1387322875705); + +-- DEMO_BAR_CHART_INTER +Insert into demo_bar_chart_inter (spam_date, num_rpt_sources, num_det_sources) values (STR_TO_DATE('6-Mar-13','%e-%b-%y'), 198, 220); +Insert into demo_bar_chart_inter (spam_date, num_rpt_sources, num_det_sources) values (STR_TO_DATE('5-Mar-13','%e-%b-%y'), 198, 220); +Insert into demo_bar_chart_inter (spam_date, num_rpt_sources, num_det_sources) values (STR_TO_DATE('4-Mar-13','%e-%b-%y'), 238, 235); +Insert into demo_bar_chart_inter (spam_date, num_rpt_sources, num_det_sources) values (STR_TO_DATE('3-Mar-13','%e-%b-%y'), 238, 235); +Insert into demo_bar_chart_inter (spam_date, num_rpt_sources, num_det_sources) values (STR_TO_DATE('2-Mar-13','%e-%b-%y'), 256, 275); +Insert into demo_bar_chart_inter (spam_date, num_rpt_sources, num_det_sources) values (STR_TO_DATE('1-Mar-13','%e-%b-%y'), 239, 260); +Insert into demo_bar_chart_inter (spam_date, num_rpt_sources, num_det_sources) values (STR_TO_DATE('28-Feb-13','%e-%b-%y'), 247, 255); +Insert into demo_bar_chart_inter (spam_date, num_rpt_sources, num_det_sources) values (STR_TO_DATE('27-Feb-13','%e-%b-%y'), 252, 265); +Insert into demo_bar_chart_inter (spam_date, num_rpt_sources, num_det_sources) values (STR_TO_DATE('26-Feb-13','%e-%b-%y'), 198, 220); + +-- DEMO_LINE_CHART +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('1-May-12','%e-%b-%y'),582.13); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('30-Apr-12','%e-%b-%y'),583.98); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('27-Apr-12','%e-%b-%y'),603); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('26-Apr-12','%e-%b-%y'),607.7); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('25-Apr-12','%e-%b-%y'),610); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('24-Apr-12','%e-%b-%y'),560.28); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('23-Apr-12','%e-%b-%y'),571.7); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('20-Apr-12','%e-%b-%y'),572.98); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('19-Apr-12','%e-%b-%y'),587.44); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('18-Apr-12','%e-%b-%y'),608.34); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('17-Apr-12','%e-%b-%y'),609.7); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('16-Apr-12','%e-%b-%y'),580.13); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('13-Apr-12','%e-%b-%y'),605.23); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('12-Apr-12','%e-%b-%y'),622.77); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('11-Apr-12','%e-%b-%y'),626.2); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('10-Apr-12','%e-%b-%y'),628.44); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('9-Apr-12','%e-%b-%y'),636.23); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('5-Apr-12','%e-%b-%y'),633.68); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('4-Apr-12','%e-%b-%y'),624.31); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('3-Apr-12','%e-%b-%y'),629.32); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('2-Apr-12','%e-%b-%y'),618.63); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('30-Mar-12','%e-%b-%y'),599.55); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('29-Mar-12','%e-%b-%y'),609.86); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('28-Mar-12','%e-%b-%y'),617.62); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('27-Mar-12','%e-%b-%y'),614.48); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('26-Mar-12','%e-%b-%y'),606.98); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('23-Mar-12','%e-%b-%y'),596.05); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('22-Mar-12','%e-%b-%y'),599.34); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('21-Mar-12','%e-%b-%y'),602.5); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('20-Mar-12','%e-%b-%y'),605.96); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('19-Mar-12','%e-%b-%y'),601.1); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('16-Mar-12','%e-%b-%y'),585.57); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('15-Mar-12','%e-%b-%y'),585.56); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('14-Mar-12','%e-%b-%y'),589.58); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('13-Mar-12','%e-%b-%y'),568.1); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('12-Mar-12','%e-%b-%y'),552); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('9-Mar-12','%e-%b-%y'),545.17); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('8-Mar-12','%e-%b-%y'),541.99); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('7-Mar-12','%e-%b-%y'),530.69); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('6-Mar-12','%e-%b-%y'),530.26); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('5-Mar-12','%e-%b-%y'),533.16); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('2-Mar-12','%e-%b-%y'),545.18); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('1-Mar-12','%e-%b-%y'),544.47); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('29-Feb-12','%e-%b-%y'),542.44); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('28-Feb-12','%e-%b-%y'),535.41); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('27-Feb-12','%e-%b-%y'),525.76); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('24-Feb-12','%e-%b-%y'),522.41); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('23-Feb-12','%e-%b-%y'),516.39); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('22-Feb-12','%e-%b-%y'),513.04); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('21-Feb-12','%e-%b-%y'),514.85); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('17-Feb-12','%e-%b-%y'),502.12); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('16-Feb-12','%e-%b-%y'),502.21); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('15-Feb-12','%e-%b-%y'),497.67); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('14-Feb-12','%e-%b-%y'),509.46); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('13-Feb-12','%e-%b-%y'),502.6); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('10-Feb-12','%e-%b-%y'),493.42); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('9-Feb-12','%e-%b-%y'),493.17); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('8-Feb-12','%e-%b-%y'),476.68); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('7-Feb-12','%e-%b-%y'),468.83); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('6-Feb-12','%e-%b-%y'),463.97); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('3-Feb-12','%e-%b-%y'),459.68); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('2-Feb-12','%e-%b-%y'),455.12); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('1-Feb-12','%e-%b-%y'),456.19); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('31-Jan-12','%e-%b-%y'),456.48); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('30-Jan-12','%e-%b-%y'),453.01); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('27-Jan-12','%e-%b-%y'),447.28); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('26-Jan-12','%e-%b-%y'),444.63); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('25-Jan-12','%e-%b-%y'),446.66); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('24-Jan-12','%e-%b-%y'),420.41); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('23-Jan-12','%e-%b-%y'),427.41); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('20-Jan-12','%e-%b-%y'),420.3); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('19-Jan-12','%e-%b-%y'),427.75); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('18-Jan-12','%e-%b-%y'),429.11); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('17-Jan-12','%e-%b-%y'),424.7); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('13-Jan-12','%e-%b-%y'),419.81); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('12-Jan-12','%e-%b-%y'),421.39); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('11-Jan-12','%e-%b-%y'),422.55); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('10-Jan-12','%e-%b-%y'),423.24); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('9-Jan-12','%e-%b-%y'),421.73); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('6-Jan-12','%e-%b-%y'),422.4); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('5-Jan-12','%e-%b-%y'),418.03); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('4-Jan-12','%e-%b-%y'),413.44); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('3-Jan-12','%e-%b-%y'),411.23); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('30-Dec-11','%e-%b-%y'),405); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('29-Dec-11','%e-%b-%y'),405.12); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('28-Dec-11','%e-%b-%y'),402.64); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('27-Dec-11','%e-%b-%y'),406.53); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('23-Dec-11','%e-%b-%y'),403.43); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('22-Dec-11','%e-%b-%y'),398.55); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('21-Dec-11','%e-%b-%y'),396.44); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('20-Dec-11','%e-%b-%y'),395.95); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('19-Dec-11','%e-%b-%y'),382.21); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('16-Dec-11','%e-%b-%y'),381.02); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('15-Dec-11','%e-%b-%y'),378.94); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('14-Dec-11','%e-%b-%y'),380.19); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('13-Dec-11','%e-%b-%y'),388.81); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('12-Dec-11','%e-%b-%y'),391.84); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('9-Dec-11','%e-%b-%y'),393.62); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('8-Dec-11','%e-%b-%y'),390.66); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('7-Dec-11','%e-%b-%y'),389.09); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('6-Dec-11','%e-%b-%y'),390.95); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('5-Dec-11','%e-%b-%y'),393.01); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('2-Dec-11','%e-%b-%y'),389.7); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('1-Dec-11','%e-%b-%y'),387.93); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('30-Nov-11','%e-%b-%y'),382.2); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('29-Nov-11','%e-%b-%y'),373.2); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('28-Nov-11','%e-%b-%y'),376.12); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('25-Nov-11','%e-%b-%y'),363.57); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('23-Nov-11','%e-%b-%y'),366.99); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('22-Nov-11','%e-%b-%y'),376.51); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('21-Nov-11','%e-%b-%y'),369.01); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('18-Nov-11','%e-%b-%y'),374.94); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('17-Nov-11','%e-%b-%y'),377.41); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('16-Nov-11','%e-%b-%y'),384.77); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('15-Nov-11','%e-%b-%y'),388.83); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('14-Nov-11','%e-%b-%y'),379.26); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('11-Nov-11','%e-%b-%y'),384.62); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('10-Nov-11','%e-%b-%y'),385.22); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('9-Nov-11','%e-%b-%y'),395.28); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('8-Nov-11','%e-%b-%y'),406.23); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('7-Nov-11','%e-%b-%y'),399.73); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('4-Nov-11','%e-%b-%y'),400.24); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('3-Nov-11','%e-%b-%y'),403.07); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('2-Nov-11','%e-%b-%y'),397.41); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('1-Nov-11','%e-%b-%y'),396.51); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('31-Oct-11','%e-%b-%y'),404.78); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('28-Oct-11','%e-%b-%y'),404.95); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('27-Oct-11','%e-%b-%y'),404.69); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('26-Oct-11','%e-%b-%y'),400.6); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('25-Oct-11','%e-%b-%y'),397.77); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('24-Oct-11','%e-%b-%y'),405.77); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('21-Oct-11','%e-%b-%y'),392.87); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('20-Oct-11','%e-%b-%y'),395.31); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('19-Oct-11','%e-%b-%y'),398.62); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('18-Oct-11','%e-%b-%y'),422.24); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('17-Oct-11','%e-%b-%y'),419.99); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('14-Oct-11','%e-%b-%y'),422); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('13-Oct-11','%e-%b-%y'),408.43); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('12-Oct-11','%e-%b-%y'),402.19); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('11-Oct-11','%e-%b-%y'),400.29); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('10-Oct-11','%e-%b-%y'),388.81); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('7-Oct-11','%e-%b-%y'),369.8); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('6-Oct-11','%e-%b-%y'),377.37); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('5-Oct-11','%e-%b-%y'),378.25); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('4-Oct-11','%e-%b-%y'),372.5); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('3-Oct-11','%e-%b-%y'),374.6); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('30-Sep-11','%e-%b-%y'),381.32); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('29-Sep-11','%e-%b-%y'),390.57); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('28-Sep-11','%e-%b-%y'),397.01); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('27-Sep-11','%e-%b-%y'),399.26); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('26-Sep-11','%e-%b-%y'),403.17); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('23-Sep-11','%e-%b-%y'),404.3); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('22-Sep-11','%e-%b-%y'),401.82); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('21-Sep-11','%e-%b-%y'),412.14); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('20-Sep-11','%e-%b-%y'),413.45); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('19-Sep-11','%e-%b-%y'),411.63); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('16-Sep-11','%e-%b-%y'),400.5); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('15-Sep-11','%e-%b-%y'),392.96); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('14-Sep-11','%e-%b-%y'),389.3); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('13-Sep-11','%e-%b-%y'),384.62); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('12-Sep-11','%e-%b-%y'),379.94); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('9-Sep-11','%e-%b-%y'),377.48); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('8-Sep-11','%e-%b-%y'),384.14); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('7-Sep-11','%e-%b-%y'),383.93); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('6-Sep-11','%e-%b-%y'),379.74); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('2-Sep-11','%e-%b-%y'),374.05); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('1-Sep-11','%e-%b-%y'),381.03); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('31-Aug-11','%e-%b-%y'),384.83); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('30-Aug-11','%e-%b-%y'),389.99); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('29-Aug-11','%e-%b-%y'),389.97); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('26-Aug-11','%e-%b-%y'),383.58); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('25-Aug-11','%e-%b-%y'),373.72); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('24-Aug-11','%e-%b-%y'),376.18); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('23-Aug-11','%e-%b-%y'),373.6); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('22-Aug-11','%e-%b-%y'),356.44); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('19-Aug-11','%e-%b-%y'),356.03); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('18-Aug-11','%e-%b-%y'),366.05); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('17-Aug-11','%e-%b-%y'),380.44); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('16-Aug-11','%e-%b-%y'),380.48); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('15-Aug-11','%e-%b-%y'),383.41); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('12-Aug-11','%e-%b-%y'),376.99); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('11-Aug-11','%e-%b-%y'),373.7); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('10-Aug-11','%e-%b-%y'),363.69); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('9-Aug-11','%e-%b-%y'),374.01); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('8-Aug-11','%e-%b-%y'),353.21); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('5-Aug-11','%e-%b-%y'),373.62); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('4-Aug-11','%e-%b-%y'),377.37); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('3-Aug-11','%e-%b-%y'),392.57); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('2-Aug-11','%e-%b-%y'),388.91); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('1-Aug-11','%e-%b-%y'),396.75); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('29-Jul-11','%e-%b-%y'),390.48); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('28-Jul-11','%e-%b-%y'),391.82); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('27-Jul-11','%e-%b-%y'),392.59); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('26-Jul-11','%e-%b-%y'),403.41); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('25-Jul-11','%e-%b-%y'),398.5); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('22-Jul-11','%e-%b-%y'),393.3); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('21-Jul-11','%e-%b-%y'),387.29); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('20-Jul-11','%e-%b-%y'),386.9); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('19-Jul-11','%e-%b-%y'),376.85); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('18-Jul-11','%e-%b-%y'),373.8); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('15-Jul-11','%e-%b-%y'),364.92); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('14-Jul-11','%e-%b-%y'),357.77); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('13-Jul-11','%e-%b-%y'),358.02); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('12-Jul-11','%e-%b-%y'),353.75); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('11-Jul-11','%e-%b-%y'),354); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('8-Jul-11','%e-%b-%y'),359.71); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('7-Jul-11','%e-%b-%y'),357.2); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('6-Jul-11','%e-%b-%y'),351.76); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('5-Jul-11','%e-%b-%y'),349.43); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('1-Jul-11','%e-%b-%y'),343.26); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('30-Jun-11','%e-%b-%y'),335.67); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('29-Jun-11','%e-%b-%y'),334.04); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('28-Jun-11','%e-%b-%y'),335.26); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('27-Jun-11','%e-%b-%y'),332.04); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('24-Jun-11','%e-%b-%y'),326.35); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('23-Jun-11','%e-%b-%y'),331.23); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('22-Jun-11','%e-%b-%y'),322.61); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('21-Jun-11','%e-%b-%y'),325.3); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('20-Jun-11','%e-%b-%y'),315.32); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('17-Jun-11','%e-%b-%y'),320.26); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('16-Jun-11','%e-%b-%y'),325.16); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('15-Jun-11','%e-%b-%y'),326.75); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('14-Jun-11','%e-%b-%y'),332.44); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('13-Jun-11','%e-%b-%y'),326.6); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('10-Jun-11','%e-%b-%y'),325.9); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('9-Jun-11','%e-%b-%y'),331.49); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('8-Jun-11','%e-%b-%y'),332.24); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('7-Jun-11','%e-%b-%y'),332.04); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('6-Jun-11','%e-%b-%y'),338.04); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('3-Jun-11','%e-%b-%y'),343.44); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('2-Jun-11','%e-%b-%y'),346.1); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('1-Jun-11','%e-%b-%y'),345.51); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('31-May-11','%e-%b-%y'),347.83); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('27-May-11','%e-%b-%y'),337.41); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('26-May-11','%e-%b-%y'),335); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('25-May-11','%e-%b-%y'),336.78); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('24-May-11','%e-%b-%y'),332.19); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('23-May-11','%e-%b-%y'),334.4); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('20-May-11','%e-%b-%y'),335.22); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('19-May-11','%e-%b-%y'),340.53); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('18-May-11','%e-%b-%y'),339.87); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('17-May-11','%e-%b-%y'),336.14); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('16-May-11','%e-%b-%y'),333.3); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('13-May-11','%e-%b-%y'),340.5); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('12-May-11','%e-%b-%y'),346.57); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('11-May-11','%e-%b-%y'),347.23); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('10-May-11','%e-%b-%y'),349.45); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('9-May-11','%e-%b-%y'),347.6); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('6-May-11','%e-%b-%y'),346.66); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('5-May-11','%e-%b-%y'),346.75); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('4-May-11','%e-%b-%y'),349.57); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('3-May-11','%e-%b-%y'),348.2); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('2-May-11','%e-%b-%y'),346.28); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('29-Apr-11','%e-%b-%y'),350.13); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('28-Apr-11','%e-%b-%y'),346.75); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('27-Apr-11','%e-%b-%y'),350.15); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('26-Apr-11','%e-%b-%y'),350.42); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('25-Apr-11','%e-%b-%y'),353.01); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('21-Apr-11','%e-%b-%y'),350.7); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('20-Apr-11','%e-%b-%y'),342.41); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('19-Apr-11','%e-%b-%y'),337.86); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('18-Apr-11','%e-%b-%y'),331.85); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('15-Apr-11','%e-%b-%y'),327.46); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('14-Apr-11','%e-%b-%y'),332.42); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('13-Apr-11','%e-%b-%y'),336.13); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('12-Apr-11','%e-%b-%y'),332.4); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('11-Apr-11','%e-%b-%y'),330.8); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('8-Apr-11','%e-%b-%y'),335.06); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('7-Apr-11','%e-%b-%y'),338.08); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('6-Apr-11','%e-%b-%y'),338.04); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('5-Apr-11','%e-%b-%y'),338.89); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('4-Apr-11','%e-%b-%y'),341.19); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('1-Apr-11','%e-%b-%y'),344.56); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('31-Mar-11','%e-%b-%y'),348.51); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('30-Mar-11','%e-%b-%y'),348.63); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('29-Mar-11','%e-%b-%y'),350.96); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('28-Mar-11','%e-%b-%y'),350.44); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('25-Mar-11','%e-%b-%y'),351.54); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('24-Mar-11','%e-%b-%y'),344.97); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('23-Mar-11','%e-%b-%y'),339.19); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('22-Mar-11','%e-%b-%y'),341.2); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('21-Mar-11','%e-%b-%y'),339.3); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('18-Mar-11','%e-%b-%y'),330.67); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('17-Mar-11','%e-%b-%y'),334.64); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('16-Mar-11','%e-%b-%y'),330.01); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('15-Mar-11','%e-%b-%y'),345.43); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('14-Mar-11','%e-%b-%y'),353.56); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('11-Mar-11','%e-%b-%y'),351.99); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('10-Mar-11','%e-%b-%y'),346.67); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('9-Mar-11','%e-%b-%y'),352.47); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('8-Mar-11','%e-%b-%y'),355.76); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('7-Mar-11','%e-%b-%y'),355.36); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('4-Mar-11','%e-%b-%y'),360); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('3-Mar-11','%e-%b-%y'),359.56); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('2-Mar-11','%e-%b-%y'),352.12); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('1-Mar-11','%e-%b-%y'),349.31); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('28-Feb-11','%e-%b-%y'),353.21); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('25-Feb-11','%e-%b-%y'),348.16); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('24-Feb-11','%e-%b-%y'),342.88); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('23-Feb-11','%e-%b-%y'),342.62); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('22-Feb-11','%e-%b-%y'),338.61); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('18-Feb-11','%e-%b-%y'),350.56); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('17-Feb-11','%e-%b-%y'),358.3); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('16-Feb-11','%e-%b-%y'),363.13); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('15-Feb-11','%e-%b-%y'),359.9); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('14-Feb-11','%e-%b-%y'),359.18); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('11-Feb-11','%e-%b-%y'),356.85); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('10-Feb-11','%e-%b-%y'),354.54); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('9-Feb-11','%e-%b-%y'),358.16); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('8-Feb-11','%e-%b-%y'),355.2); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('7-Feb-11','%e-%b-%y'),351.88); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('4-Feb-11','%e-%b-%y'),346.5); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('3-Feb-11','%e-%b-%y'),343.44); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('2-Feb-11','%e-%b-%y'),344.32); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('1-Feb-11','%e-%b-%y'),345.03); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('31-Jan-11','%e-%b-%y'),339.32); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('28-Jan-11','%e-%b-%y'),336.1); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('27-Jan-11','%e-%b-%y'),343.21); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('26-Jan-11','%e-%b-%y'),343.85); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('25-Jan-11','%e-%b-%y'),341.4); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('24-Jan-11','%e-%b-%y'),337.45); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('21-Jan-11','%e-%b-%y'),326.72); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('20-Jan-11','%e-%b-%y'),332.68); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('19-Jan-11','%e-%b-%y'),338.84); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('18-Jan-11','%e-%b-%y'),340.65); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('14-Jan-11','%e-%b-%y'),348.48); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('13-Jan-11','%e-%b-%y'),345.68); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('12-Jan-11','%e-%b-%y'),344.42); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('11-Jan-11','%e-%b-%y'),341.64); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('10-Jan-11','%e-%b-%y'),342.46); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('7-Jan-11','%e-%b-%y'),336.12); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('6-Jan-11','%e-%b-%y'),333.73); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('5-Jan-11','%e-%b-%y'),334); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('4-Jan-11','%e-%b-%y'),331.29); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('3-Jan-11','%e-%b-%y'),329.57); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('31-Dec-10','%e-%b-%y'),322.56); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('30-Dec-10','%e-%b-%y'),323.66); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('29-Dec-10','%e-%b-%y'),325.29); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('28-Dec-10','%e-%b-%y'),325.47); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('27-Dec-10','%e-%b-%y'),324.68); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('23-Dec-10','%e-%b-%y'),323.6); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('22-Dec-10','%e-%b-%y'),325.16); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('21-Dec-10','%e-%b-%y'),324.2); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('20-Dec-10','%e-%b-%y'),322.21); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('17-Dec-10','%e-%b-%y'),320.61); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('16-Dec-10','%e-%b-%y'),321.25); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('15-Dec-10','%e-%b-%y'),320.36); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('14-Dec-10','%e-%b-%y'),320.29); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('13-Dec-10','%e-%b-%y'),321.67); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('10-Dec-10','%e-%b-%y'),320.56); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('9-Dec-10','%e-%b-%y'),319.76); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('8-Dec-10','%e-%b-%y'),321.01); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('7-Dec-10','%e-%b-%y'),318.21); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('6-Dec-10','%e-%b-%y'),320.15); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('3-Dec-10','%e-%b-%y'),317.44); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('2-Dec-10','%e-%b-%y'),318.15); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('1-Dec-10','%e-%b-%y'),316.4); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('30-Nov-10','%e-%b-%y'),311.15); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('29-Nov-10','%e-%b-%y'),316.87); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('26-Nov-10','%e-%b-%y'),315); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('24-Nov-10','%e-%b-%y'),314.8); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('23-Nov-10','%e-%b-%y'),308.73); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('22-Nov-10','%e-%b-%y'),313.36); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('19-Nov-10','%e-%b-%y'),306.73); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('18-Nov-10','%e-%b-%y'),308.43); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('17-Nov-10','%e-%b-%y'),300.5); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('16-Nov-10','%e-%b-%y'),301.59); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('15-Nov-10','%e-%b-%y'),307.04); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('12-Nov-10','%e-%b-%y'),308.03); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('11-Nov-10','%e-%b-%y'),316.66); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('10-Nov-10','%e-%b-%y'),318.03); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('9-Nov-10','%e-%b-%y'),316.08); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('8-Nov-10','%e-%b-%y'),318.62); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('5-Nov-10','%e-%b-%y'),317.13); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('4-Nov-10','%e-%b-%y'),318.27); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('3-Nov-10','%e-%b-%y'),312.8); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('2-Nov-10','%e-%b-%y'),309.36); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('1-Nov-10','%e-%b-%y'),304.18); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('29-Oct-10','%e-%b-%y'),300.98); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('28-Oct-10','%e-%b-%y'),305.24); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('27-Oct-10','%e-%b-%y'),307.83); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('26-Oct-10','%e-%b-%y'),308.05); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('25-Oct-10','%e-%b-%y'),308.84); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('22-Oct-10','%e-%b-%y'),307.47); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('21-Oct-10','%e-%b-%y'),309.52); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('20-Oct-10','%e-%b-%y'),310.53); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('19-Oct-10','%e-%b-%y'),309.49); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('18-Oct-10','%e-%b-%y'),318); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('15-Oct-10','%e-%b-%y'),314.74); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('14-Oct-10','%e-%b-%y'),302.31); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('13-Oct-10','%e-%b-%y'),300.14); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('12-Oct-10','%e-%b-%y'),298.54); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('11-Oct-10','%e-%b-%y'),295.36); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('8-Oct-10','%e-%b-%y'),294.07); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('7-Oct-10','%e-%b-%y'),289.22); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('6-Oct-10','%e-%b-%y'),289.19); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('5-Oct-10','%e-%b-%y'),288.94); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('4-Oct-10','%e-%b-%y'),278.64); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('1-Oct-10','%e-%b-%y'),282.52); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('30-Sep-10','%e-%b-%y'),283.75); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('29-Sep-10','%e-%b-%y'),287.37); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('28-Sep-10','%e-%b-%y'),286.86); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('27-Sep-10','%e-%b-%y'),291.16); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('24-Sep-10','%e-%b-%y'),292.32); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('23-Sep-10','%e-%b-%y'),288.92); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('22-Sep-10','%e-%b-%y'),287.75); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('21-Sep-10','%e-%b-%y'),283.77); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('20-Sep-10','%e-%b-%y'),283.23); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('17-Sep-10','%e-%b-%y'),275.37); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('16-Sep-10','%e-%b-%y'),276.57); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('15-Sep-10','%e-%b-%y'),270.22); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('14-Sep-10','%e-%b-%y'),268.06); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('13-Sep-10','%e-%b-%y'),267.04); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('10-Sep-10','%e-%b-%y'),263.41); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('9-Sep-10','%e-%b-%y'),263.07); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('8-Sep-10','%e-%b-%y'),262.92); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('7-Sep-10','%e-%b-%y'),257.81); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('6-Sep-10','%e-%b-%y'),258.77); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('3-Sep-10','%e-%b-%y'),258.77); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('2-Sep-10','%e-%b-%y'),252.17); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('1-Sep-10','%e-%b-%y'),250.33); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('31-Aug-10','%e-%b-%y'),243.1); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('30-Aug-10','%e-%b-%y'),242.5); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('27-Aug-10','%e-%b-%y'),241.62); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('26-Aug-10','%e-%b-%y'),240.28); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('25-Aug-10','%e-%b-%y'),242.89); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('24-Aug-10','%e-%b-%y'),239.93); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('23-Aug-10','%e-%b-%y'),245.8); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('20-Aug-10','%e-%b-%y'),249.64); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('19-Aug-10','%e-%b-%y'),249.88); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('18-Aug-10','%e-%b-%y'),253.07); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('17-Aug-10','%e-%b-%y'),251.97); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('16-Aug-10','%e-%b-%y'),247.64); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('13-Aug-10','%e-%b-%y'),249.1); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('12-Aug-10','%e-%b-%y'),251.79); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('11-Aug-10','%e-%b-%y'),250.19); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('10-Aug-10','%e-%b-%y'),259.41); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('9-Aug-10','%e-%b-%y'),261.75); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('6-Aug-10','%e-%b-%y'),260.09); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('5-Aug-10','%e-%b-%y'),261.7); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('4-Aug-10','%e-%b-%y'),262.98); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('3-Aug-10','%e-%b-%y'),261.93); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('2-Aug-10','%e-%b-%y'),261.85); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('30-Jul-10','%e-%b-%y'),257.25); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('29-Jul-10','%e-%b-%y'),258.11); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('28-Jul-10','%e-%b-%y'),260.96); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('27-Jul-10','%e-%b-%y'),264.08); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('26-Jul-10','%e-%b-%y'),259.28); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('23-Jul-10','%e-%b-%y'),259.94); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('22-Jul-10','%e-%b-%y'),259.02); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('21-Jul-10','%e-%b-%y'),254.24); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('20-Jul-10','%e-%b-%y'),251.89); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('19-Jul-10','%e-%b-%y'),245.58); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('16-Jul-10','%e-%b-%y'),249.9); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('15-Jul-10','%e-%b-%y'),251.45); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('14-Jul-10','%e-%b-%y'),252.73); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('13-Jul-10','%e-%b-%y'),251.8); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('12-Jul-10','%e-%b-%y'),257.28); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('9-Jul-10','%e-%b-%y'),259.62); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('8-Jul-10','%e-%b-%y'),258.09); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('7-Jul-10','%e-%b-%y'),258.66); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('6-Jul-10','%e-%b-%y'),248.63); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('5-Jul-10','%e-%b-%y'),246.94); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('2-Jul-10','%e-%b-%y'),246.94); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('1-Jul-10','%e-%b-%y'),248.48); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('30-Jun-10','%e-%b-%y'),251.53); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('29-Jun-10','%e-%b-%y'),256.17); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('28-Jun-10','%e-%b-%y'),268.3); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('25-Jun-10','%e-%b-%y'),266.7); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('24-Jun-10','%e-%b-%y'),269); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('23-Jun-10','%e-%b-%y'),270.97); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('22-Jun-10','%e-%b-%y'),273.85); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('21-Jun-10','%e-%b-%y'),270.17); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('18-Jun-10','%e-%b-%y'),274.07); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('17-Jun-10','%e-%b-%y'),271.87); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('16-Jun-10','%e-%b-%y'),267.25); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('15-Jun-10','%e-%b-%y'),259.69); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('14-Jun-10','%e-%b-%y'),254.28); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('11-Jun-10','%e-%b-%y'),253.51); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('10-Jun-10','%e-%b-%y'),250.51); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('9-Jun-10','%e-%b-%y'),243.2); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('8-Jun-10','%e-%b-%y'),249.33); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('7-Jun-10','%e-%b-%y'),250.94); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('4-Jun-10','%e-%b-%y'),255.96); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('3-Jun-10','%e-%b-%y'),263.12); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('2-Jun-10','%e-%b-%y'),263.95); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('1-Jun-10','%e-%b-%y'),260.83); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('31-May-10','%e-%b-%y'),256.88); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('28-May-10','%e-%b-%y'),256.88); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('27-May-10','%e-%b-%y'),253.35); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('26-May-10','%e-%b-%y'),244.11); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('25-May-10','%e-%b-%y'),245.22); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('24-May-10','%e-%b-%y'),246.76); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('21-May-10','%e-%b-%y'),242.32); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('20-May-10','%e-%b-%y'),237.76); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('19-May-10','%e-%b-%y'),248.34); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('18-May-10','%e-%b-%y'),252.36); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('17-May-10','%e-%b-%y'),254.22); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('14-May-10','%e-%b-%y'),253.82); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('13-May-10','%e-%b-%y'),258.36); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('12-May-10','%e-%b-%y'),262.09); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('11-May-10','%e-%b-%y'),256.52); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('10-May-10','%e-%b-%y'),253.99); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('7-May-10','%e-%b-%y'),235.86); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('6-May-10','%e-%b-%y'),246.25); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('5-May-10','%e-%b-%y'),255.98); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('4-May-10','%e-%b-%y'),258.68); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('3-May-10','%e-%b-%y'),266.35); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('30-Apr-10','%e-%b-%y'),261.09); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('29-Apr-10','%e-%b-%y'),268.64); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('28-Apr-10','%e-%b-%y'),261.6); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('27-Apr-10','%e-%b-%y'),262.04); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('26-Apr-10','%e-%b-%y'),269.5); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('23-Apr-10','%e-%b-%y'),270.83); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('22-Apr-10','%e-%b-%y'),266.47); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('21-Apr-10','%e-%b-%y'),259.22); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('20-Apr-10','%e-%b-%y'),244.59); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('19-Apr-10','%e-%b-%y'),247.07); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('16-Apr-10','%e-%b-%y'),247.4); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('15-Apr-10','%e-%b-%y'),248.92); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('14-Apr-10','%e-%b-%y'),245.69); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('13-Apr-10','%e-%b-%y'),242.43); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('12-Apr-10','%e-%b-%y'),242.29); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('9-Apr-10','%e-%b-%y'),241.79); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('8-Apr-10','%e-%b-%y'),239.95); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('7-Apr-10','%e-%b-%y'),240.6); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('6-Apr-10','%e-%b-%y'),239.54); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('5-Apr-10','%e-%b-%y'),238.49); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('2-Apr-10','%e-%b-%y'),235.97); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('1-Apr-10','%e-%b-%y'),235.97); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('31-Mar-10','%e-%b-%y'),235); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('30-Mar-10','%e-%b-%y'),235.84); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('29-Mar-10','%e-%b-%y'),232.39); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('26-Mar-10','%e-%b-%y'),230.9); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('25-Mar-10','%e-%b-%y'),226.65); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('24-Mar-10','%e-%b-%y'),229.37); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('23-Mar-10','%e-%b-%y'),228.36); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('22-Mar-10','%e-%b-%y'),224.75); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('19-Mar-10','%e-%b-%y'),222.25); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('18-Mar-10','%e-%b-%y'),224.65); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('17-Mar-10','%e-%b-%y'),224.12); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('16-Mar-10','%e-%b-%y'),224.45); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('15-Mar-10','%e-%b-%y'),223.84); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('12-Mar-10','%e-%b-%y'),226.6); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('11-Mar-10','%e-%b-%y'),225.5); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('10-Mar-10','%e-%b-%y'),224.84); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('9-Mar-10','%e-%b-%y'),223.02); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('8-Mar-10','%e-%b-%y'),219.08); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('5-Mar-10','%e-%b-%y'),218.95); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('4-Mar-10','%e-%b-%y'),210.71); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('3-Mar-10','%e-%b-%y'),209.33); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('2-Mar-10','%e-%b-%y'),208.85); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('1-Mar-10','%e-%b-%y'),208.99); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('26-Feb-10','%e-%b-%y'),204.62); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('25-Feb-10','%e-%b-%y'),202); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('24-Feb-10','%e-%b-%y'),200.66); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('23-Feb-10','%e-%b-%y'),197.06); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('22-Feb-10','%e-%b-%y'),200.42); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('19-Feb-10','%e-%b-%y'),201.67); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('18-Feb-10','%e-%b-%y'),202.93); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('17-Feb-10','%e-%b-%y'),202.55); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('16-Feb-10','%e-%b-%y'),203.4); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('15-Feb-10','%e-%b-%y'),200.38); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('12-Feb-10','%e-%b-%y'),200.38); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('11-Feb-10','%e-%b-%y'),198.67); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('10-Feb-10','%e-%b-%y'),195.12); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('9-Feb-10','%e-%b-%y'),196.19); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('8-Feb-10','%e-%b-%y'),194.12); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('5-Feb-10','%e-%b-%y'),195.46); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('4-Feb-10','%e-%b-%y'),192.05); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('3-Feb-10','%e-%b-%y'),199.23); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('2-Feb-10','%e-%b-%y'),195.86); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('1-Feb-10','%e-%b-%y'),194.73); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('29-Jan-10','%e-%b-%y'),192.06); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('28-Jan-10','%e-%b-%y'),199.29); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('27-Jan-10','%e-%b-%y'),207.88); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('26-Jan-10','%e-%b-%y'),205.94); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('25-Jan-10','%e-%b-%y'),203.08); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('22-Jan-10','%e-%b-%y'),197.75); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('21-Jan-10','%e-%b-%y'),208.07); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('20-Jan-10','%e-%b-%y'),211.72); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('19-Jan-10','%e-%b-%y'),215.04); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('18-Jan-10','%e-%b-%y'),205.93); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('15-Jan-10','%e-%b-%y'),205.93); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('14-Jan-10','%e-%b-%y'),209.43); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('13-Jan-10','%e-%b-%y'),210.65); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('12-Jan-10','%e-%b-%y'),207.72); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('11-Jan-10','%e-%b-%y'),210.11); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('8-Jan-10','%e-%b-%y'),211.98); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('7-Jan-10','%e-%b-%y'),210.58); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('6-Jan-10','%e-%b-%y'),210.97); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('5-Jan-10','%e-%b-%y'),214.38); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('4-Jan-10','%e-%b-%y'),214.01); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('1-Jan-10','%e-%b-%y'),210.73); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('31-Dec-09','%e-%b-%y'),210.73); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('30-Dec-09','%e-%b-%y'),211.64); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('29-Dec-09','%e-%b-%y'),209.1); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('28-Dec-09','%e-%b-%y'),211.61); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('25-Dec-09','%e-%b-%y'),209.04); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('24-Dec-09','%e-%b-%y'),209.04); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('23-Dec-09','%e-%b-%y'),202.1); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('22-Dec-09','%e-%b-%y'),200.36); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('21-Dec-09','%e-%b-%y'),198.23); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('18-Dec-09','%e-%b-%y'),195.43); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('17-Dec-09','%e-%b-%y'),191.86); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('16-Dec-09','%e-%b-%y'),195.03); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('15-Dec-09','%e-%b-%y'),194.17); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('14-Dec-09','%e-%b-%y'),196.98); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('11-Dec-09','%e-%b-%y'),194.67); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('10-Dec-09','%e-%b-%y'),196.43); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('9-Dec-09','%e-%b-%y'),197.8); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('8-Dec-09','%e-%b-%y'),189.87); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('7-Dec-09','%e-%b-%y'),188.95); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('4-Dec-09','%e-%b-%y'),193.32); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('3-Dec-09','%e-%b-%y'),196.48); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('2-Dec-09','%e-%b-%y'),196.23); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('1-Dec-09','%e-%b-%y'),196.97); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('30-Nov-09','%e-%b-%y'),199.91); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('27-Nov-09','%e-%b-%y'),200.59); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('26-Nov-09','%e-%b-%y'),204.19); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('25-Nov-09','%e-%b-%y'),204.19); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('24-Nov-09','%e-%b-%y'),204.44); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('23-Nov-09','%e-%b-%y'),205.88); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('20-Nov-09','%e-%b-%y'),199.92); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('19-Nov-09','%e-%b-%y'),200.51); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('18-Nov-09','%e-%b-%y'),205.96); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('17-Nov-09','%e-%b-%y'),207); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('16-Nov-09','%e-%b-%y'),206.63); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('13-Nov-09','%e-%b-%y'),204.45); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('12-Nov-09','%e-%b-%y'),201.99); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('11-Nov-09','%e-%b-%y'),203.25); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('10-Nov-09','%e-%b-%y'),202.98); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('9-Nov-09','%e-%b-%y'),201.46); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('6-Nov-09','%e-%b-%y'),194.34); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('5-Nov-09','%e-%b-%y'),194.03); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('4-Nov-09','%e-%b-%y'),190.81); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('3-Nov-09','%e-%b-%y'),188.75); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('2-Nov-09','%e-%b-%y'),189.31); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('30-Oct-09','%e-%b-%y'),188.5); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('29-Oct-09','%e-%b-%y'),196.35); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('28-Oct-09','%e-%b-%y'),192.4); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('27-Oct-09','%e-%b-%y'),197.37); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('26-Oct-09','%e-%b-%y'),202.48); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('23-Oct-09','%e-%b-%y'),203.94); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('22-Oct-09','%e-%b-%y'),205.2); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('21-Oct-09','%e-%b-%y'),204.92); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('20-Oct-09','%e-%b-%y'),198.76); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('19-Oct-09','%e-%b-%y'),189.86); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('16-Oct-09','%e-%b-%y'),188.05); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('15-Oct-09','%e-%b-%y'),190.56); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('14-Oct-09','%e-%b-%y'),191.29); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('13-Oct-09','%e-%b-%y'),190.02); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('12-Oct-09','%e-%b-%y'),190.81); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('9-Oct-09','%e-%b-%y'),190.47); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('8-Oct-09','%e-%b-%y'),189.27); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('7-Oct-09','%e-%b-%y'),190.25); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('6-Oct-09','%e-%b-%y'),190.01); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('5-Oct-09','%e-%b-%y'),186.02); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('2-Oct-09','%e-%b-%y'),184.9); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('1-Oct-09','%e-%b-%y'),180.86); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('30-Sep-09','%e-%b-%y'),185.35); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('29-Sep-09','%e-%b-%y'),185.38); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('28-Sep-09','%e-%b-%y'),186.15); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('25-Sep-09','%e-%b-%y'),182.37); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('24-Sep-09','%e-%b-%y'),183.82); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('23-Sep-09','%e-%b-%y'),185.5); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('22-Sep-09','%e-%b-%y'),184.48); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('21-Sep-09','%e-%b-%y'),184.02); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('18-Sep-09','%e-%b-%y'),185.02); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('17-Sep-09','%e-%b-%y'),184.55); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('16-Sep-09','%e-%b-%y'),181.87); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('15-Sep-09','%e-%b-%y'),175.16); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('14-Sep-09','%e-%b-%y'),173.72); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('11-Sep-09','%e-%b-%y'),172.16); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('10-Sep-09','%e-%b-%y'),172.56); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('9-Sep-09','%e-%b-%y'),171.14); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('8-Sep-09','%e-%b-%y'),172.93); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('4-Sep-09','%e-%b-%y'),170.31); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('3-Sep-09','%e-%b-%y'),166.55); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('2-Sep-09','%e-%b-%y'),165.18); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('1-Sep-09','%e-%b-%y'),165.3); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('31-Aug-09','%e-%b-%y'),168.21); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('28-Aug-09','%e-%b-%y'),170.05); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('27-Aug-09','%e-%b-%y'),169.45); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('26-Aug-09','%e-%b-%y'),167.41); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('25-Aug-09','%e-%b-%y'),169.4); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('24-Aug-09','%e-%b-%y'),169.06); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('21-Aug-09','%e-%b-%y'),169.22); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('20-Aug-09','%e-%b-%y'),166.33); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('19-Aug-09','%e-%b-%y'),164.6); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('18-Aug-09','%e-%b-%y'),164); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('17-Aug-09','%e-%b-%y'),159.59); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('14-Aug-09','%e-%b-%y'),166.78); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('13-Aug-09','%e-%b-%y'),168.42); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('12-Aug-09','%e-%b-%y'),165.31); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('10-Aug-09','%e-%b-%y'),164.72); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('7-Aug-09','%e-%b-%y'),165.51); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('6-Aug-09','%e-%b-%y'),163.91); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('5-Aug-09','%e-%b-%y'),165.11); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('4-Aug-09','%e-%b-%y'),165.55); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('3-Aug-09','%e-%b-%y'),166.43); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('31-Jul-09','%e-%b-%y'),163.39); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('30-Jul-09','%e-%b-%y'),162.79); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('29-Jul-09','%e-%b-%y'),160.03); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('28-Jul-09','%e-%b-%y'),160); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('27-Jul-09','%e-%b-%y'),160.1); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('24-Jul-09','%e-%b-%y'),159.99); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('23-Jul-09','%e-%b-%y'),157.82); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('22-Jul-09','%e-%b-%y'),156.74); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('21-Jul-09','%e-%b-%y'),151.51); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('20-Jul-09','%e-%b-%y'),152.91); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('17-Jul-09','%e-%b-%y'),151.75); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('16-Jul-09','%e-%b-%y'),147.52); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('15-Jul-09','%e-%b-%y'),146.88); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('14-Jul-09','%e-%b-%y'),142.27); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('13-Jul-09','%e-%b-%y'),142.34); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('10-Jul-09','%e-%b-%y'),138.52); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('9-Jul-09','%e-%b-%y'),136.36); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('8-Jul-09','%e-%b-%y'),137.22); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('7-Jul-09','%e-%b-%y'),135.4); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('6-Jul-09','%e-%b-%y'),138.61); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('3-Jul-09','%e-%b-%y'),140.02); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('2-Jul-09','%e-%b-%y'),140.02); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('1-Jul-09','%e-%b-%y'),142.83); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('30-Jun-09','%e-%b-%y'),142.43); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('29-Jun-09','%e-%b-%y'),141.97); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('26-Jun-09','%e-%b-%y'),142.44); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('25-Jun-09','%e-%b-%y'),139.86); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('24-Jun-09','%e-%b-%y'),136.22); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('23-Jun-09','%e-%b-%y'),134.01); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('22-Jun-09','%e-%b-%y'),137.37); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('19-Jun-09','%e-%b-%y'),139.48); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('18-Jun-09','%e-%b-%y'),135.88); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('17-Jun-09','%e-%b-%y'),135.58); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('16-Jun-09','%e-%b-%y'),136.35); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('15-Jun-09','%e-%b-%y'),136.09); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('12-Jun-09','%e-%b-%y'),136.97); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('11-Jun-09','%e-%b-%y'),139.95); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('10-Jun-09','%e-%b-%y'),140.25); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('9-Jun-09','%e-%b-%y'),142.72); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('8-Jun-09','%e-%b-%y'),143.85); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('5-Jun-09','%e-%b-%y'),144.67); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('4-Jun-09','%e-%b-%y'),143.74); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('3-Jun-09','%e-%b-%y'),140.95); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('2-Jun-09','%e-%b-%y'),139.49); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('1-Jun-09','%e-%b-%y'),139.35); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('29-May-09','%e-%b-%y'),135.81); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('28-May-09','%e-%b-%y'),135.07); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('27-May-09','%e-%b-%y'),133.05); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('26-May-09','%e-%b-%y'),130.78); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('22-May-09','%e-%b-%y'),122.5); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('21-May-09','%e-%b-%y'),124.18); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('20-May-09','%e-%b-%y'),125.87); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('19-May-09','%e-%b-%y'),127.45); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('18-May-09','%e-%b-%y'),126.65); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('15-May-09','%e-%b-%y'),122.42); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('14-May-09','%e-%b-%y'),122.95); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('13-May-09','%e-%b-%y'),119.49); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('12-May-09','%e-%b-%y'),124.42); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('11-May-09','%e-%b-%y'),129.57); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('8-May-09','%e-%b-%y'),129.19); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('7-May-09','%e-%b-%y'),129.06); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('6-May-09','%e-%b-%y'),132.5); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('5-May-09','%e-%b-%y'),132.71); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('4-May-09','%e-%b-%y'),132.07); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('1-May-09','%e-%b-%y'),127.24); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('30-Apr-09','%e-%b-%y'),125.83); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('29-Apr-09','%e-%b-%y'),125.14); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('28-Apr-09','%e-%b-%y'),123.9); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('27-Apr-09','%e-%b-%y'),124.73); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('24-Apr-09','%e-%b-%y'),123.9); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('23-Apr-09','%e-%b-%y'),125.4); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('22-Apr-09','%e-%b-%y'),121.51); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('21-Apr-09','%e-%b-%y'),121.76); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('20-Apr-09','%e-%b-%y'),120.5); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('17-Apr-09','%e-%b-%y'),123.42); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('16-Apr-09','%e-%b-%y'),121.45); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('15-Apr-09','%e-%b-%y'),117.64); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('14-Apr-09','%e-%b-%y'),118.31); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('13-Apr-09','%e-%b-%y'),120.22); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('10-Apr-09','%e-%b-%y'),119.57); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('9-Apr-09','%e-%b-%y'),119.57); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('8-Apr-09','%e-%b-%y'),116.32); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('7-Apr-09','%e-%b-%y'),115); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('6-Apr-09','%e-%b-%y'),118.45); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('3-Apr-09','%e-%b-%y'),115.99); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('2-Apr-09','%e-%b-%y'),112.71); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('1-Apr-09','%e-%b-%y'),108.69); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('31-Mar-09','%e-%b-%y'),105.12); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('30-Mar-09','%e-%b-%y'),104.49); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('27-Mar-09','%e-%b-%y'),106.85); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('26-Mar-09','%e-%b-%y'),109.87); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('25-Mar-09','%e-%b-%y'),106.49); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('24-Mar-09','%e-%b-%y'),106.5); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('23-Mar-09','%e-%b-%y'),107.66); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('20-Mar-09','%e-%b-%y'),101.59); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('19-Mar-09','%e-%b-%y'),101.62); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('18-Mar-09','%e-%b-%y'),101.52); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('17-Mar-09','%e-%b-%y'),99.66); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('16-Mar-09','%e-%b-%y'),95.42); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('13-Mar-09','%e-%b-%y'),95.93); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('12-Mar-09','%e-%b-%y'),96.35); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('11-Mar-09','%e-%b-%y'),92.68); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('10-Mar-09','%e-%b-%y'),88.63); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('9-Mar-09','%e-%b-%y'),83.11); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('6-Mar-09','%e-%b-%y'),85.3); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('5-Mar-09','%e-%b-%y'),88.84); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('4-Mar-09','%e-%b-%y'),91.17); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('3-Mar-09','%e-%b-%y'),88.37); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('2-Mar-09','%e-%b-%y'),87.94); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('27-Feb-09','%e-%b-%y'),89.31); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('26-Feb-09','%e-%b-%y'),89.19); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('25-Feb-09','%e-%b-%y'),91.16); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('24-Feb-09','%e-%b-%y'),90.25); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('23-Feb-09','%e-%b-%y'),86.95); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('20-Feb-09','%e-%b-%y'),91.2); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('19-Feb-09','%e-%b-%y'),90.64); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('18-Feb-09','%e-%b-%y'),94.37); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('17-Feb-09','%e-%b-%y'),94.53); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('13-Feb-09','%e-%b-%y'),99.16); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('12-Feb-09','%e-%b-%y'),99.27); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('11-Feb-09','%e-%b-%y'),96.82); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('10-Feb-09','%e-%b-%y'),97.83); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('9-Feb-09','%e-%b-%y'),102.51); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('6-Feb-09','%e-%b-%y'),99.72); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('5-Feb-09','%e-%b-%y'),96.46); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('4-Feb-09','%e-%b-%y'),93.55); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('3-Feb-09','%e-%b-%y'),92.98); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('2-Feb-09','%e-%b-%y'),91.51); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('30-Jan-09','%e-%b-%y'),90.13); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('29-Jan-09','%e-%b-%y'),93); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('28-Jan-09','%e-%b-%y'),94.2); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('27-Jan-09','%e-%b-%y'),90.73); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('26-Jan-09','%e-%b-%y'),89.64); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('23-Jan-09','%e-%b-%y'),88.36); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('22-Jan-09','%e-%b-%y'),88.36); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('21-Jan-09','%e-%b-%y'),82.83); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('20-Jan-09','%e-%b-%y'),78.2); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('16-Jan-09','%e-%b-%y'),82.33); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('15-Jan-09','%e-%b-%y'),83.38); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('14-Jan-09','%e-%b-%y'),85.33); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('13-Jan-09','%e-%b-%y'),87.71); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('12-Jan-09','%e-%b-%y'),88.66); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('9-Jan-09','%e-%b-%y'),90.58); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('8-Jan-09','%e-%b-%y'),92.7); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('7-Jan-09','%e-%b-%y'),91.01); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('6-Jan-09','%e-%b-%y'),93.02); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('5-Jan-09','%e-%b-%y'),94.58); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('2-Jan-09','%e-%b-%y'),90.75); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('1-Jan-09','%e-%b-%y'),85.35); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('31-Dec-08','%e-%b-%y'),85.35); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('30-Dec-08','%e-%b-%y'),86.29); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('29-Dec-08','%e-%b-%y'),86.61); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('26-Dec-08','%e-%b-%y'),85.81); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('25-Dec-08','%e-%b-%y'),85.04); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('24-Dec-08','%e-%b-%y'),85.04); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('23-Dec-08','%e-%b-%y'),86.38); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('22-Dec-08','%e-%b-%y'),85.74); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('19-Dec-08','%e-%b-%y'),90); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('18-Dec-08','%e-%b-%y'),89.43); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('17-Dec-08','%e-%b-%y'),89.16); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('16-Dec-08','%e-%b-%y'),95.43); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('15-Dec-08','%e-%b-%y'),94.75); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('12-Dec-08','%e-%b-%y'),98.27); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('11-Dec-08','%e-%b-%y'),95); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('10-Dec-08','%e-%b-%y'),98.21); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('9-Dec-08','%e-%b-%y'),100.06); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('8-Dec-08','%e-%b-%y'),99.72); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('5-Dec-08','%e-%b-%y'),94); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('4-Dec-08','%e-%b-%y'),91.41); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('3-Dec-08','%e-%b-%y'),95.9); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('2-Dec-08','%e-%b-%y'),92.47); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('1-Dec-08','%e-%b-%y'),88.93); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('28-Nov-08','%e-%b-%y'),92.67); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('27-Nov-08','%e-%b-%y'),95); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('26-Nov-08','%e-%b-%y'),95); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('25-Nov-08','%e-%b-%y'),90.8); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('24-Nov-08','%e-%b-%y'),92.95); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('21-Nov-08','%e-%b-%y'),82.58); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('20-Nov-08','%e-%b-%y'),80.49); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('19-Nov-08','%e-%b-%y'),86.29); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('18-Nov-08','%e-%b-%y'),89.91); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('17-Nov-08','%e-%b-%y'),88.14); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('14-Nov-08','%e-%b-%y'),90.24); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('13-Nov-08','%e-%b-%y'),96.44); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('12-Nov-08','%e-%b-%y'),90.12); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('11-Nov-08','%e-%b-%y'),94.77); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('10-Nov-08','%e-%b-%y'),95.88); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('7-Nov-08','%e-%b-%y'),98.24); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('6-Nov-08','%e-%b-%y'),99.1); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('5-Nov-08','%e-%b-%y'),103.3); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('4-Nov-08','%e-%b-%y'),110.99); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('3-Nov-08','%e-%b-%y'),106.96); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('31-Oct-08','%e-%b-%y'),107.59); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('30-Oct-08','%e-%b-%y'),111.04); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('29-Oct-08','%e-%b-%y'),104.55); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('28-Oct-08','%e-%b-%y'),99.91); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('27-Oct-08','%e-%b-%y'),92.09); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('24-Oct-08','%e-%b-%y'),96.38); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('23-Oct-08','%e-%b-%y'),98.23); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('22-Oct-08','%e-%b-%y'),96.87); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('21-Oct-08','%e-%b-%y'),91.49); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('20-Oct-08','%e-%b-%y'),98.44); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('17-Oct-08','%e-%b-%y'),97.4); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('16-Oct-08','%e-%b-%y'),101.89); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('15-Oct-08','%e-%b-%y'),97.95); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('14-Oct-08','%e-%b-%y'),104.08); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('13-Oct-08','%e-%b-%y'),110.26); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('10-Oct-08','%e-%b-%y'),96.8); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('9-Oct-08','%e-%b-%y'),88.74); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('8-Oct-08','%e-%b-%y'),89.79); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('7-Oct-08','%e-%b-%y'),89.16); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('6-Oct-08','%e-%b-%y'),98.14); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('3-Oct-08','%e-%b-%y'),97.07); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('2-Oct-08','%e-%b-%y'),100.1); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('1-Oct-08','%e-%b-%y'),109.12); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('30-Sep-08','%e-%b-%y'),113.66); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('29-Sep-08','%e-%b-%y'),105.26); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('26-Sep-08','%e-%b-%y'),128.24); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('25-Sep-08','%e-%b-%y'),131.93); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('24-Sep-08','%e-%b-%y'),128.71); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('23-Sep-08','%e-%b-%y'),126.84); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('22-Sep-08','%e-%b-%y'),131.05); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('19-Sep-08','%e-%b-%y'),140.91); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('18-Sep-08','%e-%b-%y'),134.09); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('17-Sep-08','%e-%b-%y'),127.83); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('16-Sep-08','%e-%b-%y'),139.88); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('15-Sep-08','%e-%b-%y'),140.36); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('12-Sep-08','%e-%b-%y'),148.94); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('11-Sep-08','%e-%b-%y'),152.65); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('10-Sep-08','%e-%b-%y'),151.61); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('9-Sep-08','%e-%b-%y'),151.68); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('8-Sep-08','%e-%b-%y'),157.92); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('5-Sep-08','%e-%b-%y'),160.18); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('4-Sep-08','%e-%b-%y'),161.22); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('3-Sep-08','%e-%b-%y'),166.96); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('2-Sep-08','%e-%b-%y'),166.19); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('29-Aug-08','%e-%b-%y'),169.53); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('28-Aug-08','%e-%b-%y'),173.74); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('27-Aug-08','%e-%b-%y'),174.67); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('26-Aug-08','%e-%b-%y'),173.64); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('25-Aug-08','%e-%b-%y'),172.55); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('22-Aug-08','%e-%b-%y'),176.79); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('21-Aug-08','%e-%b-%y'),174.29); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('20-Aug-08','%e-%b-%y'),175.84); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('19-Aug-08','%e-%b-%y'),173.53); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('18-Aug-08','%e-%b-%y'),175.39); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('15-Aug-08','%e-%b-%y'),175.74); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('14-Aug-08','%e-%b-%y'),179.32); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('13-Aug-08','%e-%b-%y'),179.3); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('12-Aug-08','%e-%b-%y'),176.73); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('11-Aug-08','%e-%b-%y'),173.56); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('8-Aug-08','%e-%b-%y'),169.55); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('7-Aug-08','%e-%b-%y'),163.57); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('6-Aug-08','%e-%b-%y'),164.19); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('5-Aug-08','%e-%b-%y'),160.64); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('4-Aug-08','%e-%b-%y'),153.23); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('1-Aug-08','%e-%b-%y'),156.66); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('31-Jul-08','%e-%b-%y'),158.95); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('30-Jul-08','%e-%b-%y'),159.88); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('29-Jul-08','%e-%b-%y'),157.08); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('28-Jul-08','%e-%b-%y'),154.4); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('25-Jul-08','%e-%b-%y'),162.12); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('24-Jul-08','%e-%b-%y'),159.03); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('23-Jul-08','%e-%b-%y'),166.26); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('22-Jul-08','%e-%b-%y'),162.02); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('21-Jul-08','%e-%b-%y'),166.29); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('18-Jul-08','%e-%b-%y'),165.15); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('17-Jul-08','%e-%b-%y'),171.81); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('16-Jul-08','%e-%b-%y'),172.81); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('15-Jul-08','%e-%b-%y'),169.64); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('14-Jul-08','%e-%b-%y'),173.88); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('11-Jul-08','%e-%b-%y'),172.58); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('10-Jul-08','%e-%b-%y'),176.63); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('9-Jul-08','%e-%b-%y'),174.25); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('8-Jul-08','%e-%b-%y'),179.55); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('7-Jul-08','%e-%b-%y'),175.16); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('3-Jul-08','%e-%b-%y'),170.12); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('2-Jul-08','%e-%b-%y'),168.18); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('1-Jul-08','%e-%b-%y'),174.68); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('30-Jun-08','%e-%b-%y'),167.44); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('27-Jun-08','%e-%b-%y'),170.09); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('26-Jun-08','%e-%b-%y'),168.26); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('25-Jun-08','%e-%b-%y'),177.39); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('24-Jun-08','%e-%b-%y'),173.25); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('23-Jun-08','%e-%b-%y'),173.16); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('20-Jun-08','%e-%b-%y'),175.27); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('19-Jun-08','%e-%b-%y'),180.9); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('18-Jun-08','%e-%b-%y'),178.75); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('17-Jun-08','%e-%b-%y'),181.43); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('16-Jun-08','%e-%b-%y'),176.84); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('13-Jun-08','%e-%b-%y'),172.37); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('12-Jun-08','%e-%b-%y'),173.26); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('11-Jun-08','%e-%b-%y'),180.81); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('10-Jun-08','%e-%b-%y'),185.64); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('9-Jun-08','%e-%b-%y'),181.61); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('6-Jun-08','%e-%b-%y'),185.64); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('5-Jun-08','%e-%b-%y'),189.43); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('4-Jun-08','%e-%b-%y'),185.19); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('3-Jun-08','%e-%b-%y'),185.37); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('2-Jun-08','%e-%b-%y'),186.1); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('30-May-08','%e-%b-%y'),188.75); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('29-May-08','%e-%b-%y'),186.69); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('28-May-08','%e-%b-%y'),187.01); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('27-May-08','%e-%b-%y'),186.43); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('23-May-08','%e-%b-%y'),181.17); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('22-May-08','%e-%b-%y'),177.05); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('21-May-08','%e-%b-%y'),178.19); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('20-May-08','%e-%b-%y'),185.9); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('19-May-08','%e-%b-%y'),183.6); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('16-May-08','%e-%b-%y'),187.62); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('15-May-08','%e-%b-%y'),189.73); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('14-May-08','%e-%b-%y'),186.26); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('13-May-08','%e-%b-%y'),189.96); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('12-May-08','%e-%b-%y'),188.16); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('9-May-08','%e-%b-%y'),183.45); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('8-May-08','%e-%b-%y'),185.06); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('7-May-08','%e-%b-%y'),182.59); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('6-May-08','%e-%b-%y'),186.66); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('5-May-08','%e-%b-%y'),184.73); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('2-May-08','%e-%b-%y'),180.94); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('1-May-08','%e-%b-%y'),180); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('30-Apr-08','%e-%b-%y'),173.95); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('29-Apr-08','%e-%b-%y'),175.05); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('28-Apr-08','%e-%b-%y'),172.24); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('25-Apr-08','%e-%b-%y'),169.73); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('24-Apr-08','%e-%b-%y'),168.94); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('23-Apr-08','%e-%b-%y'),162.89); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('22-Apr-08','%e-%b-%y'),160.2); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('21-Apr-08','%e-%b-%y'),168.16); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('18-Apr-08','%e-%b-%y'),161.04); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('17-Apr-08','%e-%b-%y'),154.49); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('16-Apr-08','%e-%b-%y'),153.7); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('15-Apr-08','%e-%b-%y'),148.38); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('14-Apr-08','%e-%b-%y'),147.78); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('11-Apr-08','%e-%b-%y'),147.14); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('10-Apr-08','%e-%b-%y'),154.55); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('9-Apr-08','%e-%b-%y'),151.44); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('8-Apr-08','%e-%b-%y'),152.84); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('7-Apr-08','%e-%b-%y'),155.89); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('4-Apr-08','%e-%b-%y'),153.08); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('3-Apr-08','%e-%b-%y'),151.61); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('2-Apr-08','%e-%b-%y'),147.49); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('1-Apr-08','%e-%b-%y'),149.53); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('31-Mar-08','%e-%b-%y'),143.5); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('28-Mar-08','%e-%b-%y'),143.01); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('27-Mar-08','%e-%b-%y'),140.25); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('26-Mar-08','%e-%b-%y'),145.06); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('25-Mar-08','%e-%b-%y'),140.98); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('24-Mar-08','%e-%b-%y'),139.53); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('20-Mar-08','%e-%b-%y'),133.27); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('19-Mar-08','%e-%b-%y'),129.67); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('18-Mar-08','%e-%b-%y'),132.82); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('17-Mar-08','%e-%b-%y'),126.73); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('14-Mar-08','%e-%b-%y'),126.61); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('13-Mar-08','%e-%b-%y'),127.94); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('12-Mar-08','%e-%b-%y'),126.03); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('11-Mar-08','%e-%b-%y'),127.35); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('10-Mar-08','%e-%b-%y'),119.69); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('7-Mar-08','%e-%b-%y'),122.25); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('6-Mar-08','%e-%b-%y'),120.93); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('5-Mar-08','%e-%b-%y'),124.49); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('4-Mar-08','%e-%b-%y'),124.62); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('3-Mar-08','%e-%b-%y'),121.73); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('29-Feb-08','%e-%b-%y'),125.02); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('28-Feb-08','%e-%b-%y'),129.91); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('27-Feb-08','%e-%b-%y'),122.96); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('26-Feb-08','%e-%b-%y'),119.15); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('25-Feb-08','%e-%b-%y'),119.74); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('22-Feb-08','%e-%b-%y'),119.46); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('21-Feb-08','%e-%b-%y'),121.54); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('20-Feb-08','%e-%b-%y'),123.82); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('19-Feb-08','%e-%b-%y'),122.18); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('15-Feb-08','%e-%b-%y'),124.63); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('14-Feb-08','%e-%b-%y'),127.46); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('13-Feb-08','%e-%b-%y'),129.4); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('12-Feb-08','%e-%b-%y'),124.86); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('11-Feb-08','%e-%b-%y'),129.45); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('8-Feb-08','%e-%b-%y'),125.48); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('7-Feb-08','%e-%b-%y'),121.24); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('6-Feb-08','%e-%b-%y'),122); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('5-Feb-08','%e-%b-%y'),129.36); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('4-Feb-08','%e-%b-%y'),131.65); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('1-Feb-08','%e-%b-%y'),133.75); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('31-Jan-08','%e-%b-%y'),135.36); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('30-Jan-08','%e-%b-%y'),132.18); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('29-Jan-08','%e-%b-%y'),131.54); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('28-Jan-08','%e-%b-%y'),130.01); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('25-Jan-08','%e-%b-%y'),130.01); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('24-Jan-08','%e-%b-%y'),135.6); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('23-Jan-08','%e-%b-%y'),139.07); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('22-Jan-08','%e-%b-%y'),155.64); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('18-Jan-08','%e-%b-%y'),161.36); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('17-Jan-08','%e-%b-%y'),160.89); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('16-Jan-08','%e-%b-%y'),159.64); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('15-Jan-08','%e-%b-%y'),169.04); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('14-Jan-08','%e-%b-%y'),178.78); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('11-Jan-08','%e-%b-%y'),172.69); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('10-Jan-08','%e-%b-%y'),178.02); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('9-Jan-08','%e-%b-%y'),179.4); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('8-Jan-08','%e-%b-%y'),171.25); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('7-Jan-08','%e-%b-%y'),177.64); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('4-Jan-08','%e-%b-%y'),180.05); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('3-Jan-08','%e-%b-%y'),194.93); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('2-Jan-08','%e-%b-%y'),194.84); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('31-Dec-07','%e-%b-%y'),198.08); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('28-Dec-07','%e-%b-%y'),199.83); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('27-Dec-07','%e-%b-%y'),198.57); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('26-Dec-07','%e-%b-%y'),198.95); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('24-Dec-07','%e-%b-%y'),198.8); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('21-Dec-07','%e-%b-%y'),193.91); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('20-Dec-07','%e-%b-%y'),187.21); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('19-Dec-07','%e-%b-%y'),183.12); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('18-Dec-07','%e-%b-%y'),182.98); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('17-Dec-07','%e-%b-%y'),184.4); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('14-Dec-07','%e-%b-%y'),190.39); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('13-Dec-07','%e-%b-%y'),191.83); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('12-Dec-07','%e-%b-%y'),190.86); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('11-Dec-07','%e-%b-%y'),188.54); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('10-Dec-07','%e-%b-%y'),194.21); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('7-Dec-07','%e-%b-%y'),194.3); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('6-Dec-07','%e-%b-%y'),189.95); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('5-Dec-07','%e-%b-%y'),185.5); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('4-Dec-07','%e-%b-%y'),179.81); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('3-Dec-07','%e-%b-%y'),178.86); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('30-Nov-07','%e-%b-%y'),182.22); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('29-Nov-07','%e-%b-%y'),184.29); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('28-Nov-07','%e-%b-%y'),180.22); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('27-Nov-07','%e-%b-%y'),174.81); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('26-Nov-07','%e-%b-%y'),172.54); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('23-Nov-07','%e-%b-%y'),171.54); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('21-Nov-07','%e-%b-%y'),168.46); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('20-Nov-07','%e-%b-%y'),168.85); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('19-Nov-07','%e-%b-%y'),163.95); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('16-Nov-07','%e-%b-%y'),166.39); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('15-Nov-07','%e-%b-%y'),164.3); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('14-Nov-07','%e-%b-%y'),166.11); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('13-Nov-07','%e-%b-%y'),169.96); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('12-Nov-07','%e-%b-%y'),153.76); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('9-Nov-07','%e-%b-%y'),165.37); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('8-Nov-07','%e-%b-%y'),175.47); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('7-Nov-07','%e-%b-%y'),186.3); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('6-Nov-07','%e-%b-%y'),191.79); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('5-Nov-07','%e-%b-%y'),186.18); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('2-Nov-07','%e-%b-%y'),187.87); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('1-Nov-07','%e-%b-%y'),187.44); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('31-Oct-07','%e-%b-%y'),189.95); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('30-Oct-07','%e-%b-%y'),187); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('29-Oct-07','%e-%b-%y'),185.09); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('26-Oct-07','%e-%b-%y'),184.7); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('25-Oct-07','%e-%b-%y'),182.78); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('24-Oct-07','%e-%b-%y'),185.93); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('23-Oct-07','%e-%b-%y'),186.16); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('22-Oct-07','%e-%b-%y'),174.36); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('19-Oct-07','%e-%b-%y'),170.42); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('18-Oct-07','%e-%b-%y'),173.5); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('17-Oct-07','%e-%b-%y'),172.75); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('16-Oct-07','%e-%b-%y'),169.58); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('15-Oct-07','%e-%b-%y'),166.98); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('12-Oct-07','%e-%b-%y'),167.25); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('11-Oct-07','%e-%b-%y'),162.23); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('10-Oct-07','%e-%b-%y'),166.79); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('9-Oct-07','%e-%b-%y'),167.86); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('8-Oct-07','%e-%b-%y'),167.91); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('5-Oct-07','%e-%b-%y'),161.45); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('4-Oct-07','%e-%b-%y'),156.24); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('3-Oct-07','%e-%b-%y'),157.92); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('2-Oct-07','%e-%b-%y'),158.45); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('1-Oct-07','%e-%b-%y'),156.34); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('28-Sep-07','%e-%b-%y'),153.47); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('27-Sep-07','%e-%b-%y'),154.5); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('26-Sep-07','%e-%b-%y'),152.77); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('25-Sep-07','%e-%b-%y'),153.18); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('24-Sep-07','%e-%b-%y'),148.28); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('21-Sep-07','%e-%b-%y'),144.15); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('20-Sep-07','%e-%b-%y'),140.31); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('19-Sep-07','%e-%b-%y'),140.77); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('18-Sep-07','%e-%b-%y'),140.92); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('17-Sep-07','%e-%b-%y'),138.41); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('14-Sep-07','%e-%b-%y'),138.81); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('13-Sep-07','%e-%b-%y'),137.2); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('12-Sep-07','%e-%b-%y'),136.85); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('11-Sep-07','%e-%b-%y'),135.49); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('10-Sep-07','%e-%b-%y'),136.71); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('7-Sep-07','%e-%b-%y'),131.77); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('6-Sep-07','%e-%b-%y'),135.01); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('5-Sep-07','%e-%b-%y'),136.76); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('4-Sep-07','%e-%b-%y'),144.16); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('31-Aug-07','%e-%b-%y'),138.48); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('30-Aug-07','%e-%b-%y'),136.25); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('29-Aug-07','%e-%b-%y'),134.08); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('28-Aug-07','%e-%b-%y'),126.82); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('27-Aug-07','%e-%b-%y'),132.25); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('24-Aug-07','%e-%b-%y'),135.3); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('23-Aug-07','%e-%b-%y'),131.07); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('22-Aug-07','%e-%b-%y'),132.51); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('21-Aug-07','%e-%b-%y'),127.57); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('20-Aug-07','%e-%b-%y'),122.22); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('17-Aug-07','%e-%b-%y'),122.06); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('16-Aug-07','%e-%b-%y'),117.05); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('15-Aug-07','%e-%b-%y'),119.9); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('14-Aug-07','%e-%b-%y'),124.03); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('13-Aug-07','%e-%b-%y'),127.79); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('10-Aug-07','%e-%b-%y'),125); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('9-Aug-07','%e-%b-%y'),126.39); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('8-Aug-07','%e-%b-%y'),134.01); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('7-Aug-07','%e-%b-%y'),135.03); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('6-Aug-07','%e-%b-%y'),135.25); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('3-Aug-07','%e-%b-%y'),131.85); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('2-Aug-07','%e-%b-%y'),136.49); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('1-Aug-07','%e-%b-%y'),135); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('31-Jul-07','%e-%b-%y'),131.76); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('30-Jul-07','%e-%b-%y'),141.43); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('27-Jul-07','%e-%b-%y'),143.85); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('26-Jul-07','%e-%b-%y'),146); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('25-Jul-07','%e-%b-%y'),137.26); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('24-Jul-07','%e-%b-%y'),134.89); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('23-Jul-07','%e-%b-%y'),143.7); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('20-Jul-07','%e-%b-%y'),143.75); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('19-Jul-07','%e-%b-%y'),140); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('18-Jul-07','%e-%b-%y'),138.12); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('17-Jul-07','%e-%b-%y'),138.91); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('16-Jul-07','%e-%b-%y'),138.1); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('13-Jul-07','%e-%b-%y'),137.73); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('12-Jul-07','%e-%b-%y'),134.07); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('11-Jul-07','%e-%b-%y'),132.39); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('10-Jul-07','%e-%b-%y'),132.35); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('9-Jul-07','%e-%b-%y'),130.33); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('6-Jul-07','%e-%b-%y'),132.3); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('5-Jul-07','%e-%b-%y'),132.75); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('3-Jul-07','%e-%b-%y'),127.17); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('2-Jul-07','%e-%b-%y'),121.26); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('29-Jun-07','%e-%b-%y'),122.04); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('28-Jun-07','%e-%b-%y'),120.56); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('27-Jun-07','%e-%b-%y'),121.89); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('26-Jun-07','%e-%b-%y'),119.65); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('25-Jun-07','%e-%b-%y'),122.34); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('22-Jun-07','%e-%b-%y'),123); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('21-Jun-07','%e-%b-%y'),123.9); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('20-Jun-07','%e-%b-%y'),121.55); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('19-Jun-07','%e-%b-%y'),123.66); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('18-Jun-07','%e-%b-%y'),125.09); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('15-Jun-07','%e-%b-%y'),120.5); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('14-Jun-07','%e-%b-%y'),118.75); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('13-Jun-07','%e-%b-%y'),117.5); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('12-Jun-07','%e-%b-%y'),120.38); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('11-Jun-07','%e-%b-%y'),120.19); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('8-Jun-07','%e-%b-%y'),124.49); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('7-Jun-07','%e-%b-%y'),124.07); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('6-Jun-07','%e-%b-%y'),123.64); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('5-Jun-07','%e-%b-%y'),122.67); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('4-Jun-07','%e-%b-%y'),121.33); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('1-Jun-07','%e-%b-%y'),118.4); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('31-May-07','%e-%b-%y'),121.19); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('30-May-07','%e-%b-%y'),118.77); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('29-May-07','%e-%b-%y'),114.35); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('25-May-07','%e-%b-%y'),113.62); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('24-May-07','%e-%b-%y'),110.69); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('23-May-07','%e-%b-%y'),112.89); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('22-May-07','%e-%b-%y'),113.54); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('21-May-07','%e-%b-%y'),111.98); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('18-May-07','%e-%b-%y'),110.02); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('17-May-07','%e-%b-%y'),109.44); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('16-May-07','%e-%b-%y'),107.34); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('15-May-07','%e-%b-%y'),107.52); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('14-May-07','%e-%b-%y'),109.36); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('11-May-07','%e-%b-%y'),108.74); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('10-May-07','%e-%b-%y'),107.34); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('9-May-07','%e-%b-%y'),106.88); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('8-May-07','%e-%b-%y'),105.06); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('7-May-07','%e-%b-%y'),103.92); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('4-May-07','%e-%b-%y'),100.81); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('3-May-07','%e-%b-%y'),100.4); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('2-May-07','%e-%b-%y'),100.39); +Insert into demo_line_chart (series, log_date, data_value) values ('Series3',STR_TO_DATE('1-May-07','%e-%b-%y'),99.47); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('30-Apr-07','%e-%b-%y'),99.8); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('27-Apr-07','%e-%b-%y'),99.92); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('26-Apr-07','%e-%b-%y'),98.84); +Insert into demo_line_chart (series, log_date, data_value) values ('Series2',STR_TO_DATE('25-Apr-07','%e-%b-%y'),95.35); +Insert into demo_line_chart (series, log_date, data_value) values ('Series1',STR_TO_DATE('24-Apr-07','%e-%b-%y'),93.24); + +-- DEMO_PIE_CHART +Insert into demo_pie_chart (legend, data_value) values ('One', 5); +Insert into demo_pie_chart (legend, data_value) values ('Two', 2); +Insert into demo_pie_chart (legend, data_value) values ('Three', 9); +Insert into demo_pie_chart (legend, data_value) values ('Four', 7); +Insert into demo_pie_chart (legend, data_value) values ('Five', 4); +Insert into demo_pie_chart (legend, data_value) values ('Six', 3); +Insert into demo_pie_chart (legend, data_value) values ('Seven', .5); + + +-- DEMO_SCATTER_CHART +Insert into demo_scatter_chart (rainfall, key_value, measurements) values (4.1, 'Particulate', 122); +Insert into demo_scatter_chart (rainfall, key_value, measurements) values (4.3, 'Particulate', 117); +Insert into demo_scatter_chart (rainfall, key_value, measurements) values (5.7, 'Particulate', 112); +Insert into demo_scatter_chart (rainfall, key_value, measurements) values (5.4, 'Particulate', 114); +Insert into demo_scatter_chart (rainfall, key_value, measurements) values (5.9, 'Particulate', 110); +Insert into demo_scatter_chart (rainfall, key_value, measurements) values (5.0, 'Particulate', 114); +Insert into demo_scatter_chart (rainfall, key_value, measurements) values (3.6, 'Particulate', 128); +Insert into demo_scatter_chart (rainfall, key_value, measurements) values (1.9, 'Particulate', 137); +Insert into demo_scatter_chart (rainfall, key_value, measurements) values (7.3, 'Particulate', 104); +Insert into demo_scatter_chart (rainfall, key_value, measurements) values (6.9, 'Humidity', 119); +Insert into demo_scatter_chart (rainfall, key_value, measurements) values (7.9, 'Humidity', 118); +Insert into demo_scatter_chart (rainfall, key_value, measurements) values (9.8, 'Humidity', 103); +Insert into demo_scatter_chart (rainfall, key_value, measurements) values (4.9, 'Humidity', 137); +Insert into demo_scatter_chart (rainfall, key_value, measurements) values (6.8, 'Humidity', 102); +Insert into demo_scatter_chart (rainfall, key_value, measurements) values (4.7, 'Humidity', 89); +Insert into demo_scatter_chart (rainfall, key_value, measurements) values (2.7, 'Humidity', 98); +Insert into demo_scatter_chart (rainfall, key_value, measurements) values (3.7, 'Humidity', 145); +Insert into demo_scatter_chart (rainfall, key_value, measurements) values (7.4, 'Humidity', 118); + +-- DEMO_SCATTER_PLOT + +-- SET DEFINE OFF; +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample0', -46.5901128883449, -464.477370615131); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample0', -85.0293361247543, -362.252178232471); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample0', 70.9700275365898, 402.214363675566); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample0', -50.1110580054506, -310.108907443154); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample0', 85.043005750476, 813.481841353449); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample0', -14.2356123424179, -134.200903707809); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample0', -66.7014933188071, -445.754374526706); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample0', -79.941582021797, -694.089097548454); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample0', -64.4665101305822, -431.660620986243); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample0', 13.718818366452, 100.010719918027); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample0', 35.457456199233, 223.254643848734); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample0', 55.2326402548387, 268.940835852805); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample0', -32.9989160276248, -237.280626944034); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample0', -0.464911506111831, -2.65656324666862); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample0', -59.0205101710777, -498.895652307826); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample0', 28.0939970575828, 117.200615553207); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample0', 31.7305239061572, 186.662624012256); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample0', 50.9035126419798, 440.937283203403); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample0', 58.3875046571053, 547.879249694999); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample0', 76.7846997917459, 525.020578968308); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample0', 1.73485745801611, 7.28149474936192); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample0', 15.304841061276, 71.2374666595537); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample0', 75.1342455000693, 381.145932349436); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample0', -58.2087417684623, -573.630956069476); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample0', 76.7977837302114, 624.733726327778); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample0', 56.3295585433654, 309.697529902676); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample0', -9.27601440680639, -49.5126219388194); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample0', 98.3002030040236, 765.653589829535); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample0', -25.0987502451517, -174.651201240269); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample0', 39.9215299020147, 337.889176256456); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample0', 77.9225832868337, 356.183903852096); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample0', 75.4311841137638, 14.5258766665983); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample0', 58.9445375968278, 376.359576288564); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample0', 46.9521897141796, 3.5679984193934); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample0', -49.0378307695689, -230.816092788509); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample0', -96.2461776340861, -863.765255159092); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample0', -96.3388912796447, -538.147283544646); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample0', -21.4684477767032, -200.140077054848); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample0', -30.3532837083366, -226.462637188158); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample0', -17.5055590488884, -118.709622452841); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample1', 56.6394671790491, 385.48951169801); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample1', 70.4622912302344, 356.986529538635); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample1', 58.2647422222769, 489.418744916999); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample1', -92.16093253903, -425.576081634713); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample1', -2.64574970943097, -26.190027661226); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample1', -16.7568654181289, -117.460886096034); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample1', 68.215377945908, 606.917788617984); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample1', 53.7387814434413, 367.53491797949); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample1', -51.8861573715238, -289.998186955562); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample1', -15.9721784074351, -75.335027134323); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample1', 63.2540648905791, 602.546517566905); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample1', -53.376167960458, -470.921238684285); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample1', 40.8307443439851, 276.112653117961); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample1', -13.0540977188468, -127.648158921993); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample1', -43.7358336047599, -435.080470107322); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample1', -74.5673321340732, -617.960236798371); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample1', -6.47907144443936, -55.654651151187); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample1', 68.1915507628225, 352.320728639801); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample1', -23.5393521654339, -137.714557244391); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample1', 28.3621412621467, 141.103859877604); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample1', -99.5615230664525, -974.857161307048); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample1', -77.7132553058204, -736.182131225006); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample1', 95.9321864873013, 478.286112499176); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample1', 97.7451855292708, 940.301427763062); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample1', -10.2483179758141, -70.1145330070458); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample1', -24.0750124187893, -113.523998470537); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample1', -5.5721118558967, -43.8516395203455); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample1', -55.5378338160537, -368.506951528332); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample1', 52.6669516338013, 38.2926120131942); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample1', -74.1981412067658, -436.990411988621); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample1', -8.70511941690364, -71.3277811558721); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample1', 63.2921735621378, 534.825008407329); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample1', 97.9066635843841, 678.994971737474); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample1', -83.1613916743288, -494.53303650568); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample1', 23.4730547863992, 223.031148353333); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample1', 40.6105099506845, 199.937366405274); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample1', 35.4473225526307, 331.61786915261); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample1', 27.2050975460142, 146.277993239147); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample1', -1.54684302938646, -12.6706471561247); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample1', 45.8386162291745, 401.780882699918); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample2', 43.4241956158593, 228.71488367607); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample2', -23.4517134254585, -165.958577325218); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample2', -98.8954664030229, -829.964553125469); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample2', 48.0527046113198, 451.527720751234); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample2', -77.8912947988124, -416.867729852279); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample2', 23.8325471824168, 206.907438743452); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample2', 83.2787398847467, 814.01250022556); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample2', 49.1572992549647, 451.03037365466); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample2', -11.1351768833872, -57.3863334655361); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample2', 71.1980242104626, 572.745863967841); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample2', 15.0952976022392, 103.30274980367); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample2', 75.0300005037414, 406.581640027236); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample2', -82.0092720309019, -690.340287049552); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample2', 40.2433497232209, 363.579616486762); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample2', 26.8157962678174, 262.150124949525); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample2', -83.9563210001448, -432.739081022174); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample2', -20.6480437627346, -161.330015497217); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample2', 37.1388896882226, 161.352404658606); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample2', 20.2126667486174, 168.833789818416); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample2', 58.3723632769494, 293.206814023827); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample2', -20.2876832456236, -88.0090685884954); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample2', 72.9768050433371, 691.684023528398); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample2', -21.6612128833675, -130.834158714088); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample2', 97.4870524045038, 806.47904449193); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample2', 60.6688063197852, 255.749289305775); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample2', -44.235772358471, -336.262226570567); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample2', -47.39573087854, -321.133647936626); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample2', -24.7522484346097, -204.548308435727); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample2', -42.903238078129, -239.651563752902); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample2', 20.4656734934697, 172.700213789797); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample2', 56.0665747085147, 365.360390019834); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample2', 31.9979219049038, 237.490140339893); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample2', -29.9884426739069, -203.821484170813); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample2', 13.5011085362703, 79.4784314297668); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample2', 41.8402945507358, 297.04934398378); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample2', -84.9323678979223, -345.2331996232); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample2', -42.2469964847455, -361.468816319656); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample2', 98.1057699772752, 445.181262282444); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample2', 95.5327901766563, 522.663100406047); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample2', 35.0916611161316, 246.796980313209); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample3', 99.3987950082867, 401.97428571655); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample3', -3.0419413965969, -14.5325761725203); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample3', -79.388026451666, -701.817589967372); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample3', -88.451242397524, -668.370526000304); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample3', 34.3131838963851, 254.418322223563); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample3', -61.518208630511, -347.521623572776); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample3', 45.6124480237487, 356.33565541369); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample3', -1.0716036518037, -7.80544934354423); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample3', 31.7371714687412, 283.925868763573); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample3', -76.771029786315, -626.268489584739); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample3', -67.913690110843, -614.736930677921); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample3', 34.9311671860034, 171.384205820777); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample3', 94.3264454603021, 914.267819214392); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample3', 76.7493996267558, 705.649611960615); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample3', -87.795202856922, -749.505178721718); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample3', 2.10914716736019, 15.4036733330536); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample3', -50.456669557937, -318.410608422062); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample3', -94.646644883092, -734.660992935541); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample3', 34.9170862075359, 347.583881438806); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample3', 44.3524585090071, 294.615219199443); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample3', -67.191016143335, -609.956472872497); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample3', -78.826443879164, -369.129912603377); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample3', -50.427554400015, -418.144241602024); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample3', -70.371769526721, -307.02193189609); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample3', 16.3220947890044, 97.0997346831135); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample3', -47.067245718878, -398.27032236792); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample3', 5.91206661301702, 24.7239863780181); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample3', -99.621681801868, -843.593457399484); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample3', 87.4503492670535, 695.345037859433); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample3', -91.176921118057, -683.305064255346); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample3', -0.6632900001386, -5.34157539224209); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample3', 2.98188785882178, 12.1181973600389); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample3', 30.6008700087597, 205.922863867274); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample3', 7.90348761612496, 65.5271597329641); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample3', 40.3565229854156, 268.058138389501); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample3', 37.6892733312091, 247.519083233639); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample3', 16.4759733864001, 107.72661087278); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample3', -53.578492311122, -369.768816039059); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample3', 77.1292326560541, 765.262108306778); +Insert into demo_scatter_plot + (SERIES, VALUEX, VALUEY) + Values + ('Sample3', -79.566811593352, -677.545127214159); + +-- DEMO_UTIL_CHART +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-04-17','%Y-%m-%d'),53.86667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-08-10','%Y-%m-%d'),62.95747); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-04-21','%Y-%m-%d'),48.80000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-04-22','%Y-%m-%d'),51.33333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-08-11','%Y-%m-%d'),56.13373); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-04-23','%Y-%m-%d'),53.40000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-08-12','%Y-%m-%d'),57.05287); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-04-24','%Y-%m-%d'),51.00000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-08-13','%Y-%m-%d'),55.78947); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-04-25','%Y-%m-%d'),54.60000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-08-14','%Y-%m-%d'),63.34907); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-04-26','%Y-%m-%d'),50.86667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-08-15','%Y-%m-%d'),52.21327); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-04-27','%Y-%m-%d'),48.33333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-08-16','%Y-%m-%d'),51.32080); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-04-28','%Y-%m-%d'),50.26667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-08-17','%Y-%m-%d'),58.35720); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-04-29','%Y-%m-%d'),51.73333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-08-18','%Y-%m-%d'),57.62293); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-04-30','%Y-%m-%d'),67.60000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-08-19','%Y-%m-%d'),55.25000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-05-01','%Y-%m-%d'),59.89393); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-08-20','%Y-%m-%d'),58.79573); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-05-02','%Y-%m-%d'),61.20753); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-08-21','%Y-%m-%d'),54.09720); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-05-03','%Y-%m-%d'),58.98340); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-08-22','%Y-%m-%d'),59.95813); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-05-04','%Y-%m-%d'),59.55873); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-08-23','%Y-%m-%d'),62.03067); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-05-05','%Y-%m-%d'),58.73680); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-08-24','%Y-%m-%d'),61.97620); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-05-06','%Y-%m-%d'),59.89967); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-08-25','%Y-%m-%d'),58.00207); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-05-07','%Y-%m-%d'),60.67973); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-08-26','%Y-%m-%d'),59.95440); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-05-08','%Y-%m-%d'),60.85913); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-08-27','%Y-%m-%d'),55.43747); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-05-09','%Y-%m-%d'),60.62460); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-08-28','%Y-%m-%d'),52.53933); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-05-10','%Y-%m-%d'),59.51887); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-08-29','%Y-%m-%d'),57.46260); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-05-11','%Y-%m-%d'),61.57187); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-08-30','%Y-%m-%d'),60.04787); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-05-12','%Y-%m-%d'),60.70000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-08-31','%Y-%m-%d'),58.79480); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-05-13','%Y-%m-%d'),69.85133); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-09-01','%Y-%m-%d'),54.40107); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-05-14','%Y-%m-%d'),68.99620); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-09-02','%Y-%m-%d'),62.26007); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-05-15','%Y-%m-%d'),67.64080); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-09-03','%Y-%m-%d'),60.72360); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-05-16','%Y-%m-%d'),59.71433); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-09-04','%Y-%m-%d'),60.95847); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-05-17','%Y-%m-%d'),59.99667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-09-05','%Y-%m-%d'),59.45920); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-05-18','%Y-%m-%d'),63.27207); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-09-06','%Y-%m-%d'),60.58620); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-05-19','%Y-%m-%d'),60.32080); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-09-07','%Y-%m-%d'),61.94207); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-05-20','%Y-%m-%d'),57.32907); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-09-08','%Y-%m-%d'),59.03327); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-05-21','%Y-%m-%d'),59.76933); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-09-09','%Y-%m-%d'),62.83087); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-05-22','%Y-%m-%d'),59.12453); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-09-10','%Y-%m-%d'),59.36840); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-05-23','%Y-%m-%d'),57.10167); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-09-11','%Y-%m-%d'),56.11480); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-05-24','%Y-%m-%d'),58.45820); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-09-12','%Y-%m-%d'),62.23393); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-05-25','%Y-%m-%d'),59.45440); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-09-13','%Y-%m-%d'),59.72313); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-05-26','%Y-%m-%d'),60.12807); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-09-14','%Y-%m-%d'),53.37093); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-05-27','%Y-%m-%d'),59.11760); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-09-15','%Y-%m-%d'),52.99233); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-05-28','%Y-%m-%d'),57.32020); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-09-16','%Y-%m-%d'),55.99080); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-05-29','%Y-%m-%d'),59.80360); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-09-17','%Y-%m-%d'),53.93853); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-05-30','%Y-%m-%d'),66.73280); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-09-18','%Y-%m-%d'),55.99313); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-05-31','%Y-%m-%d'),58.78673); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-09-19','%Y-%m-%d'),68.23393); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-06-01','%Y-%m-%d'),58.82773); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-09-20','%Y-%m-%d'),61.86213); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-06-02','%Y-%m-%d'),63.12100); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-09-21','%Y-%m-%d'),61.20307); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-06-03','%Y-%m-%d'),59.70467); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-09-22','%Y-%m-%d'),61.05900); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-06-04','%Y-%m-%d'),58.85173); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-09-23','%Y-%m-%d'),58.41040); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-06-05','%Y-%m-%d'),61.21880); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-09-24','%Y-%m-%d'),59.15967); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-06-06','%Y-%m-%d'),58.99920); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-09-25','%Y-%m-%d'),56.42153); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-06-07','%Y-%m-%d'),59.94693); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-09-26','%Y-%m-%d'),60.46580); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-06-08','%Y-%m-%d'),66.27293); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-09-27','%Y-%m-%d'),57.44333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-06-09','%Y-%m-%d'),61.46773); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-09-28','%Y-%m-%d'),56.88887); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-06-10','%Y-%m-%d'),59.70467); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-09-29','%Y-%m-%d'),61.85773); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-06-11','%Y-%m-%d'),60.16000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-09-30','%Y-%m-%d'),61.96400); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-06-12','%Y-%m-%d'),61.20300); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-10-01','%Y-%m-%d'),65.88833); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-06-13','%Y-%m-%d'),60.95673); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-10-02','%Y-%m-%d'),62.67920); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-06-14','%Y-%m-%d'),60.70207); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-10-03','%Y-%m-%d'),63.52047); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-06-15','%Y-%m-%d'),61.02520); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-10-04','%Y-%m-%d'),58.60280); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-06-16','%Y-%m-%d'),60.33953); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-10-05','%Y-%m-%d'),63.74487); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-06-17','%Y-%m-%d'),61.20300); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-10-06','%Y-%m-%d'),59.94880); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-06-18','%Y-%m-%d'),63.12100); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-10-07','%Y-%m-%d'),59.44380); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-06-23','%Y-%m-%d'),61.09153); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-10-08','%Y-%m-%d'),59.16320); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-06-24','%Y-%m-%d'),61.28867); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-10-09','%Y-%m-%d'),60.84593); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-06-25','%Y-%m-%d'),60.95673); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-10-10','%Y-%m-%d'),58.84113); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-06-26','%Y-%m-%d'),60.61100); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-10-11','%Y-%m-%d'),62.59827); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-06-27','%Y-%m-%d'),61.22913); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-10-12','%Y-%m-%d'),60.94660); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-06-28','%Y-%m-%d'),58.88507); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-10-13','%Y-%m-%d'),59.37593); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-06-29','%Y-%m-%d'),59.73693); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-10-14','%Y-%m-%d'),67.21840); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-06-30','%Y-%m-%d'),62.45307); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-10-15','%Y-%m-%d'),68.56020); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-07-01','%Y-%m-%d'),61.30167); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-10-16','%Y-%m-%d'),57.56493); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-07-02','%Y-%m-%d'),62.92727); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-10-17','%Y-%m-%d'),57.02280); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-07-03','%Y-%m-%d'),60.05887); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-10-18','%Y-%m-%d'),56.20947); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-07-06','%Y-%m-%d'),61.20100); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-10-19','%Y-%m-%d'),55.69353); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-07-07','%Y-%m-%d'),60.66120); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-10-20','%Y-%m-%d'),57.17640); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-07-08','%Y-%m-%d'),59.78180); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-10-21','%Y-%m-%d'),57.50867); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-07-09','%Y-%m-%d'),58.74653); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-10-22','%Y-%m-%d'),61.67860); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-07-10','%Y-%m-%d'),59.77893); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-10-23','%Y-%m-%d'),57.34867); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-07-11','%Y-%m-%d'),67.34500); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-10-24','%Y-%m-%d'),61.68080); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-07-12','%Y-%m-%d'),57.07293); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-10-25','%Y-%m-%d'),55.55793); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-07-13','%Y-%m-%d'),57.37567); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-10-26','%Y-%m-%d'),55.81013); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-07-14','%Y-%m-%d'),63.97820); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-10-27','%Y-%m-%d'),59.85540); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-07-15','%Y-%m-%d'),56.06647); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-10-28','%Y-%m-%d'),61.05073); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-07-16','%Y-%m-%d'),53.66347); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-10-29','%Y-%m-%d'),59.81253); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-07-23','%Y-%m-%d'),56.50813); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-10-30','%Y-%m-%d'),61.02047); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-07-24','%Y-%m-%d'),53.19667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-10-31','%Y-%m-%d'),60.60413); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-07-25','%Y-%m-%d'),51.57133); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-11-01','%Y-%m-%d'),57.43067); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-07-26','%Y-%m-%d'),45.98160); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-11-02','%Y-%m-%d'),58.63027); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-07-27','%Y-%m-%d'),49.21113); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-11-03','%Y-%m-%d'),59.08127); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-07-28','%Y-%m-%d'),49.67213); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-11-04','%Y-%m-%d'),59.37373); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-07-29','%Y-%m-%d'),52.94053); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-11-05','%Y-%m-%d'),58.13413); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-07-30','%Y-%m-%d'),57.55727); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-11-06','%Y-%m-%d'),57.18893); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-07-31','%Y-%m-%d'),61.76900); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-11-07','%Y-%m-%d'),56.72853); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-08-01','%Y-%m-%d'),56.51953); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-11-08','%Y-%m-%d'),56.47340); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-08-02','%Y-%m-%d'),61.04853); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-11-09','%Y-%m-%d'),62.02333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-08-03','%Y-%m-%d'),70.06067); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-11-10','%Y-%m-%d'),61.21787); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-08-04','%Y-%m-%d'),60.97787); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-11-11','%Y-%m-%d'),62.01087); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-08-05','%Y-%m-%d'),59.25967); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-11-12','%Y-%m-%d'),62.67573); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-08-06','%Y-%m-%d'),56.12287); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-11-13','%Y-%m-%d'),59.23993); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-08-07','%Y-%m-%d'),63.99913); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-11-14','%Y-%m-%d'),67.34973); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-08-08','%Y-%m-%d'),58.71127); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-11-15','%Y-%m-%d'),60.93753); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-08-09','%Y-%m-%d'),64.01913); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-11-16','%Y-%m-%d'),54.52607); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-11-17','%Y-%m-%d'),57.81127); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-11-18','%Y-%m-%d'),63.53027); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-11-19','%Y-%m-%d'),58.13000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-11-20','%Y-%m-%d'),58.46827); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-11-21','%Y-%m-%d'),65.27807); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-11-22','%Y-%m-%d'),53.74513); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-11-23','%Y-%m-%d'),60.99107); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-11-24','%Y-%m-%d'),60.45427); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-11-25','%Y-%m-%d'),56.16847); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-11-26','%Y-%m-%d'),59.04040); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-11-27','%Y-%m-%d'),54.62040); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-11-28','%Y-%m-%d'),56.34687); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-11-29','%Y-%m-%d'),54.81560); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-11-30','%Y-%m-%d'),60.22753); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-12-01','%Y-%m-%d'),59.07307); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-12-02','%Y-%m-%d'),59.73553); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-12-03','%Y-%m-%d'),68.69447); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-12-04','%Y-%m-%d'),68.91767); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-12-05','%Y-%m-%d'),67.86460); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-12-06','%Y-%m-%d'),64.43120); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-03-01','%Y-%m-%d'),61.22507); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-12-07','%Y-%m-%d'),60.67793); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-03-02','%Y-%m-%d'),63.27533); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-12-08','%Y-%m-%d'),62.47060); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-03-03','%Y-%m-%d'),69.88087); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-12-09','%Y-%m-%d'),58.26053); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-03-04','%Y-%m-%d'),66.84920); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-12-10','%Y-%m-%d'),61.03340); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-03-05','%Y-%m-%d'),61.57367); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-12-11','%Y-%m-%d'),57.32620); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-03-06','%Y-%m-%d'),60.52293); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-12-12','%Y-%m-%d'),63.10353); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-03-07','%Y-%m-%d'),62.21027); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-12-13','%Y-%m-%d'),61.73167); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-03-08','%Y-%m-%d'),63.20380); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-12-14','%Y-%m-%d'),65.31080); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-03-09','%Y-%m-%d'),62.72427); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-12-15','%Y-%m-%d'),64.67620); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-03-10','%Y-%m-%d'),61.59373); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-12-16','%Y-%m-%d'),62.87287); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-03-11','%Y-%m-%d'),61.21280); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-12-17','%Y-%m-%d'),60.14680); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-03-12','%Y-%m-%d'),60.79787); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-12-18','%Y-%m-%d'),63.01007); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-03-13','%Y-%m-%d'),60.00080); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-12-19','%Y-%m-%d'),57.82680); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-03-14','%Y-%m-%d'),60.82333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-12-20','%Y-%m-%d'),62.59173); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-03-15','%Y-%m-%d'),59.62020); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-12-21','%Y-%m-%d'),61.65607); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-03-16','%Y-%m-%d'),60.27420); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-12-23','%Y-%m-%d'),61.80000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-03-17','%Y-%m-%d'),60.06200); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-12-24','%Y-%m-%d'),59.93333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-03-18','%Y-%m-%d'),60.88900); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-12-25','%Y-%m-%d'),50.93333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-03-19','%Y-%m-%d'),59.92547); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-12-26','%Y-%m-%d'),60.46667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-03-20','%Y-%m-%d'),59.99853); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-12-27','%Y-%m-%d'),62.06667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-03-21','%Y-%m-%d'),58.65873); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-12-28','%Y-%m-%d'),61.93333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-03-22','%Y-%m-%d'),60.61000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-12-29','%Y-%m-%d'),61.26667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-03-23','%Y-%m-%d'),59.92280); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-12-30','%Y-%m-%d'),61.60000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-03-24','%Y-%m-%d'),59.52427); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2014-12-31','%Y-%m-%d'),62.86667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-03-25','%Y-%m-%d'),59.44887); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-01-01','%Y-%m-%d'),60.93333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-03-26','%Y-%m-%d'),60.23540); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-01-02','%Y-%m-%d'),62.66667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-03-27','%Y-%m-%d'),61.18333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-01-03','%Y-%m-%d'),62.46667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-03-28','%Y-%m-%d'),60.88133); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-01-04','%Y-%m-%d'),60.80000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-03-29','%Y-%m-%d'),61.74160); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-01-06','%Y-%m-%d'),62.40000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-03-30','%Y-%m-%d'),60.25647); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-01-08','%Y-%m-%d'),61.40000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-03-31','%Y-%m-%d'),60.41220); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-01-09','%Y-%m-%d'),63.20000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-04-01','%Y-%m-%d'),59.21053); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-01-10','%Y-%m-%d'),61.82227); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-04-02','%Y-%m-%d'),55.04713); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-01-11','%Y-%m-%d'),61.89553); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-04-03','%Y-%m-%d'),56.08473); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-01-12','%Y-%m-%d'),60.90127); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-04-04','%Y-%m-%d'),64.51107); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-01-13','%Y-%m-%d'),62.23660); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-04-05','%Y-%m-%d'),56.75193); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-01-14','%Y-%m-%d'),61.76947); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-04-06','%Y-%m-%d'),61.64240); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-01-15','%Y-%m-%d'),63.08853); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-04-07','%Y-%m-%d'),61.33653); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-01-16','%Y-%m-%d'),60.12627); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-04-08','%Y-%m-%d'),69.28867); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-01-17','%Y-%m-%d'),60.60020); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-04-09','%Y-%m-%d'),60.87507); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-01-18','%Y-%m-%d'),60.43440); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-04-10','%Y-%m-%d'),68.08707); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-01-19','%Y-%m-%d'),65.02820); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-04-11','%Y-%m-%d'),60.57680); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-01-20','%Y-%m-%d'),62.95593); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-04-12','%Y-%m-%d'),61.52467); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-01-21','%Y-%m-%d'),61.23967); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-04-13','%Y-%m-%d'),58.06567); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-01-22','%Y-%m-%d'),62.61853); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-04-14','%Y-%m-%d'),59.80807); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-01-23','%Y-%m-%d'),63.64227); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-04-15','%Y-%m-%d'),79.90007); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-01-24','%Y-%m-%d'),63.42147); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-04-16','%Y-%m-%d'),54.75020); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-01-25','%Y-%m-%d'),60.82687); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-04-17','%Y-%m-%d'),65.69500); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-01-26','%Y-%m-%d'),60.66260); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-04-18','%Y-%m-%d'),68.56247); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-01-27','%Y-%m-%d'),60.12767); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-04-19','%Y-%m-%d'),72.67153); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-01-28','%Y-%m-%d'),60.51513); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-04-20','%Y-%m-%d'),71.30720); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-01-29','%Y-%m-%d'),61.71520); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-04-21','%Y-%m-%d'),57.75233); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-01-30','%Y-%m-%d'),60.89553); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-04-22','%Y-%m-%d'),59.04200); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-01-31','%Y-%m-%d'),63.50540); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-04-23','%Y-%m-%d'),62.30153); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-02-01','%Y-%m-%d'),62.37533); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-04-24','%Y-%m-%d'),67.68287); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-02-02','%Y-%m-%d'),60.31400); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-04-25','%Y-%m-%d'),69.21800); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-02-03','%Y-%m-%d'),63.43920); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-04-26','%Y-%m-%d'),69.75993); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-02-04','%Y-%m-%d'),61.20487); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-04-27','%Y-%m-%d'),64.64113); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-02-05','%Y-%m-%d'),62.11167); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-04-28','%Y-%m-%d'),60.10053); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-02-06','%Y-%m-%d'),59.96140); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-04-29','%Y-%m-%d'),58.67653); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-02-07','%Y-%m-%d'),62.60727); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-04-30','%Y-%m-%d'),58.29180); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-02-08','%Y-%m-%d'),61.95493); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-05-01','%Y-%m-%d'),60.56173); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-02-09','%Y-%m-%d'),58.89653); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-05-02','%Y-%m-%d'),57.15840); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-02-10','%Y-%m-%d'),66.20167); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-05-03','%Y-%m-%d'),54.49167); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-02-11','%Y-%m-%d'),64.76873); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-05-04','%Y-%m-%d'),61.54087); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-02-12','%Y-%m-%d'),69.90680); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-05-05','%Y-%m-%d'),63.86073); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-02-13','%Y-%m-%d'),68.49253); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-05-06','%Y-%m-%d'),64.13460); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-02-14','%Y-%m-%d'),63.19360); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-05-07','%Y-%m-%d'),65.30087); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-02-15','%Y-%m-%d'),63.35453); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-05-08','%Y-%m-%d'),64.46353); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-02-16','%Y-%m-%d'),59.78020); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-05-09','%Y-%m-%d'),62.81193); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-02-17','%Y-%m-%d'),60.70760); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-05-10','%Y-%m-%d'),56.14480); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-02-18','%Y-%m-%d'),58.05167); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-05-11','%Y-%m-%d'),61.47853); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-02-19','%Y-%m-%d'),57.12700); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-05-12','%Y-%m-%d'),63.39287); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-02-20','%Y-%m-%d'),59.49013); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-05-13','%Y-%m-%d'),64.30640); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-02-21','%Y-%m-%d'),59.18607); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-05-14','%Y-%m-%d'),64.29447); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-02-22','%Y-%m-%d'),60.94680); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-05-15','%Y-%m-%d'),65.63307); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-02-23','%Y-%m-%d'),59.85807); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-05-16','%Y-%m-%d'),62.32887); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-02-24','%Y-%m-%d'),60.06767); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-05-17','%Y-%m-%d'),56.52853); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-02-25','%Y-%m-%d'),61.60267); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-05-18','%Y-%m-%d'),70.26520); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-02-26','%Y-%m-%d'),60.94220); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-05-19','%Y-%m-%d'),64.38267); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-02-27','%Y-%m-%d'),59.99040); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-05-20','%Y-%m-%d'),63.01447); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-02-28','%Y-%m-%d'),63.05567); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-05-21','%Y-%m-%d'),61.89200); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-05-22','%Y-%m-%d'),62.06920); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-05-23','%Y-%m-%d'),68.49253); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-05-24','%Y-%m-%d'),69.98867); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-05-25','%Y-%m-%d'),60.26940); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-05-26','%Y-%m-%d'),62.91493); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-06-09','%Y-%m-%d'),62.28433); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-05-27','%Y-%m-%d'),62.36827); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-06-10','%Y-%m-%d'),64.38787); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-06-11','%Y-%m-%d'),61.17093); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-05-28','%Y-%m-%d'),60.33887); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-06-12','%Y-%m-%d'),57.17713); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-05-29','%Y-%m-%d'),83.89220); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-06-13','%Y-%m-%d'),57.69653); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-05-30','%Y-%m-%d'),60.96747); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-06-14','%Y-%m-%d'),55.97980); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-05-31','%Y-%m-%d'),57.80627); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-06-15','%Y-%m-%d'),62.08940); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-06-01','%Y-%m-%d'),61.60173); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-06-16','%Y-%m-%d'),83.81047); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-06-02','%Y-%m-%d'),63.23627); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-06-17','%Y-%m-%d'),61.32540); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-06-03','%Y-%m-%d'),58.39987); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-06-18','%Y-%m-%d'),61.08900); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-06-04','%Y-%m-%d'),69.51947); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-06-19','%Y-%m-%d'),67.26267); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-06-05','%Y-%m-%d'),69.67787); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-06-20','%Y-%m-%d'),58.71120); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-06-06','%Y-%m-%d'),62.40513); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-06-21','%Y-%m-%d'),55.77320); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-06-07','%Y-%m-%d'),61.01893); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-06-22','%Y-%m-%d'),59.99420); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-06-08','%Y-%m-%d'),61.34813); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-06-23','%Y-%m-%d'),60.83867); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-06-24','%Y-%m-%d'),59.57020); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-06-25','%Y-%m-%d'),63.20393); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-09-17','%Y-%m-%d'),67.93333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-06-26','%Y-%m-%d'),58.30480); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-09-18','%Y-%m-%d'),64.06667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-06-27','%Y-%m-%d'),58.79667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-09-19','%Y-%m-%d'),60.13333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-06-28','%Y-%m-%d'),54.04967); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-09-20','%Y-%m-%d'),57.86667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-06-29','%Y-%m-%d'),57.88313); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-09-21','%Y-%m-%d'),58.33333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-06-30','%Y-%m-%d'),56.94940); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-09-22','%Y-%m-%d'),59.86667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-07-01','%Y-%m-%d'),65.01080); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-09-23','%Y-%m-%d'),59.60000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-07-02','%Y-%m-%d'),64.97013); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-09-24','%Y-%m-%d'),59.80000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-07-03','%Y-%m-%d'),65.06647); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-09-25','%Y-%m-%d'),59.46667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-07-04','%Y-%m-%d'),64.08287); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-09-26','%Y-%m-%d'),76.00000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-07-05','%Y-%m-%d'),65.40367); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-09-27','%Y-%m-%d'),59.86667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-07-06','%Y-%m-%d'),72.61373); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-09-28','%Y-%m-%d'),59.13333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-07-07','%Y-%m-%d'),72.53120); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-09-29','%Y-%m-%d'),58.93333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-07-08','%Y-%m-%d'),72.54133); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-12-26','%Y-%m-%d'),58.93333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-09-30','%Y-%m-%d'),54.00000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-10-01','%Y-%m-%d'),58.26667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-10-02','%Y-%m-%d'),59.46667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-10-03','%Y-%m-%d'),58.86667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-10-04','%Y-%m-%d'),60.33333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-10-05','%Y-%m-%d'),101.00000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-10-06','%Y-%m-%d'),58.00000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-10-07','%Y-%m-%d'),59.53333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-10-08','%Y-%m-%d'),56.00000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-10-09','%Y-%m-%d'),57.93333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-10-10','%Y-%m-%d'),65.73333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-10-11','%Y-%m-%d'),56.00000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-10-12','%Y-%m-%d'),54.86667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-10-13','%Y-%m-%d'),68.60000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-10-14','%Y-%m-%d'),69.93333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-10-15','%Y-%m-%d'),66.86667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-10-16','%Y-%m-%d'),58.66667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-10-17','%Y-%m-%d'),60.06667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-10-18','%Y-%m-%d'),58.40000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-10-19','%Y-%m-%d'),55.26667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-10-20','%Y-%m-%d'),55.86667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-10-21','%Y-%m-%d'),57.86667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-10-22','%Y-%m-%d'),57.40000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-10-23','%Y-%m-%d'),58.20000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-10-24','%Y-%m-%d'),57.93333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-10-25','%Y-%m-%d'),58.60000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-10-26','%Y-%m-%d'),61.66667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-10-27','%Y-%m-%d'),57.66667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-10-28','%Y-%m-%d'),58.40000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-10-29','%Y-%m-%d'),59.33333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-10-30','%Y-%m-%d'),55.73333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-10-31','%Y-%m-%d'),53.80000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-11-01','%Y-%m-%d'),56.86667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-11-02','%Y-%m-%d'),57.00000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-11-03','%Y-%m-%d'),55.00000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-11-04','%Y-%m-%d'),57.06667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-11-05','%Y-%m-%d'),65.13333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-11-06','%Y-%m-%d'),55.26667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-11-07','%Y-%m-%d'),57.60000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-11-08','%Y-%m-%d'),59.06667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-11-09','%Y-%m-%d'),60.13333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-11-10','%Y-%m-%d'),58.93333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-11-11','%Y-%m-%d'),58.13333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-11-12','%Y-%m-%d'),57.40000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-11-13','%Y-%m-%d'),57.66667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-11-14','%Y-%m-%d'),55.80000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-11-15','%Y-%m-%d'),55.66667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-11-16','%Y-%m-%d'),58.26667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-11-17','%Y-%m-%d'),58.93333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-11-18','%Y-%m-%d'),64.73333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-11-19','%Y-%m-%d'),59.26667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-11-20','%Y-%m-%d'),57.66667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-11-21','%Y-%m-%d'),57.00000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-11-22','%Y-%m-%d'),59.00000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-11-23','%Y-%m-%d'),56.80000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-11-24','%Y-%m-%d'),58.60000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-11-25','%Y-%m-%d'),57.80000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-11-26','%Y-%m-%d'),57.13333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-11-27','%Y-%m-%d'),53.00000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-11-28','%Y-%m-%d'),58.80000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-11-29','%Y-%m-%d'),56.80000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-11-30','%Y-%m-%d'),58.93333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-12-01','%Y-%m-%d'),60.40000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-12-02','%Y-%m-%d'),59.60000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-12-03','%Y-%m-%d'),58.53333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-12-04','%Y-%m-%d'),77.60000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-12-05','%Y-%m-%d'),56.53333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-12-06','%Y-%m-%d'),55.93333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-12-07','%Y-%m-%d'),57.13333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-12-08','%Y-%m-%d'),57.20000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-12-09','%Y-%m-%d'),71.86667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-12-10','%Y-%m-%d'),62.53333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-12-11','%Y-%m-%d'),59.93333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-12-12','%Y-%m-%d'),59.13333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-12-13','%Y-%m-%d'),62.73333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-12-14','%Y-%m-%d'),59.66667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-12-15','%Y-%m-%d'),59.86667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-12-16','%Y-%m-%d'),62.00000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-12-17','%Y-%m-%d'),66.73333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-12-18','%Y-%m-%d'),59.46667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-12-19','%Y-%m-%d'),60.66667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-12-20','%Y-%m-%d'),57.26667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-12-21','%Y-%m-%d'),60.86667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-12-22','%Y-%m-%d'),59.86667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-12-23','%Y-%m-%d'),61.13333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-12-24','%Y-%m-%d'),57.93333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-12-25','%Y-%m-%d'),52.73333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-07-09','%Y-%m-%d'),70.77980); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-07-10','%Y-%m-%d'),70.40000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-07-11','%Y-%m-%d'),60.00000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-07-12','%Y-%m-%d'),58.40000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-07-13','%Y-%m-%d'),58.80000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-07-14','%Y-%m-%d'),58.73333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-07-15','%Y-%m-%d'),68.86667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-07-16','%Y-%m-%d'),84.00000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-07-17','%Y-%m-%d'),61.13333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-07-18','%Y-%m-%d'),64.40000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-07-19','%Y-%m-%d'),59.60000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-07-20','%Y-%m-%d'),77.00000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-07-21','%Y-%m-%d'),60.53333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-07-22','%Y-%m-%d'),65.33333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-07-23','%Y-%m-%d'),68.06667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-07-24','%Y-%m-%d'),58.53333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-07-25','%Y-%m-%d'),56.86667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-07-26','%Y-%m-%d'),58.73333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-07-27','%Y-%m-%d'),59.06667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-07-28','%Y-%m-%d'),59.73333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-07-29','%Y-%m-%d'),58.46667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-07-30','%Y-%m-%d'),59.40000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-12-27','%Y-%m-%d'),59.06667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-07-31','%Y-%m-%d'),57.93333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-12-28','%Y-%m-%d'),305.60000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-08-01','%Y-%m-%d'),59.93333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-12-29','%Y-%m-%d'),62.26667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-08-02','%Y-%m-%d'),61.26667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-12-30','%Y-%m-%d'),60.53333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-08-03','%Y-%m-%d'),59.06667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-12-31','%Y-%m-%d'),60.66667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-08-04','%Y-%m-%d'),83.00000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-01-01','%Y-%m-%d'),55.00000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-08-05','%Y-%m-%d'),59.80000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-01-02','%Y-%m-%d'),61.26667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-08-06','%Y-%m-%d'),58.53333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-01-03','%Y-%m-%d'),61.20000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-08-07','%Y-%m-%d'),59.13333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-01-04','%Y-%m-%d'),62.46667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-08-08','%Y-%m-%d'),57.33333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-01-05','%Y-%m-%d'),61.40000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-08-09','%Y-%m-%d'),58.66667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-01-06','%Y-%m-%d'),61.13333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-08-10','%Y-%m-%d'),59.06667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-01-07','%Y-%m-%d'),62.46667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-08-11','%Y-%m-%d'),58.80000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-01-08','%Y-%m-%d'),100.66667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-08-12','%Y-%m-%d'),57.20000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-01-09','%Y-%m-%d'),62.60000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-08-13','%Y-%m-%d'),61.60000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-01-10','%Y-%m-%d'),66.00000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-08-14','%Y-%m-%d'),58.66667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-01-11','%Y-%m-%d'),61.20000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-08-15','%Y-%m-%d'),59.66667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-01-12','%Y-%m-%d'),60.46667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-08-16','%Y-%m-%d'),61.40000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-01-13','%Y-%m-%d'),61.46667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-08-17','%Y-%m-%d'),59.06667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-01-14','%Y-%m-%d'),60.93333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-08-18','%Y-%m-%d'),59.60000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-01-15','%Y-%m-%d'),61.26667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-08-19','%Y-%m-%d'),59.60000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-01-16','%Y-%m-%d'),61.53333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-08-20','%Y-%m-%d'),60.33333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-01-17','%Y-%m-%d'),70.93333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-08-21','%Y-%m-%d'),63.80000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-01-18','%Y-%m-%d'),61.46667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-08-22','%Y-%m-%d'),58.53333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-01-19','%Y-%m-%d'),61.33333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-08-23','%Y-%m-%d'),59.00000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-01-20','%Y-%m-%d'),61.00000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-08-24','%Y-%m-%d'),59.66667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-01-21','%Y-%m-%d'),61.86667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-08-25','%Y-%m-%d'),63.06667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-01-22','%Y-%m-%d'),60.93333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-08-26','%Y-%m-%d'),61.33333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-01-23','%Y-%m-%d'),61.26667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-08-27','%Y-%m-%d'),60.73333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-01-24','%Y-%m-%d'),60.80000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-08-28','%Y-%m-%d'),57.13333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-01-25','%Y-%m-%d'),61.13333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-08-29','%Y-%m-%d'),59.13333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-01-26','%Y-%m-%d'),61.86667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-08-30','%Y-%m-%d'),57.13333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-01-27','%Y-%m-%d'),61.93333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-08-31','%Y-%m-%d'),59.86667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-01-28','%Y-%m-%d'),61.33333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-09-01','%Y-%m-%d'),58.26667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-01-29','%Y-%m-%d'),61.06667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-09-02','%Y-%m-%d'),61.46667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-01-30','%Y-%m-%d'),61.46667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-09-03','%Y-%m-%d'),59.60000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-01-31','%Y-%m-%d'),59.26667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-09-04','%Y-%m-%d'),59.53333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-02-01','%Y-%m-%d'),60.86667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-09-05','%Y-%m-%d'),59.93333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-02-02','%Y-%m-%d'),60.86667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-09-06','%Y-%m-%d'),61.66667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-02-03','%Y-%m-%d'),60.00000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-09-07','%Y-%m-%d'),59.20000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-02-04','%Y-%m-%d'),61.06667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-09-08','%Y-%m-%d'),61.73333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-02-05','%Y-%m-%d'),60.80000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-09-09','%Y-%m-%d'),61.60000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-02-06','%Y-%m-%d'),60.46667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-09-10','%Y-%m-%d'),60.26667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-02-07','%Y-%m-%d'),60.66667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-09-11','%Y-%m-%d'),58.00000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-02-08','%Y-%m-%d'),61.00000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-09-12','%Y-%m-%d'),58.60000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-02-09','%Y-%m-%d'),61.26667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-09-13','%Y-%m-%d'),58.53333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-02-10','%Y-%m-%d'),60.60000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-09-14','%Y-%m-%d'),60.66667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-02-11','%Y-%m-%d'),60.13333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-09-15','%Y-%m-%d'),62.06667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-02-12','%Y-%m-%d'),59.93333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2015-09-16','%Y-%m-%d'),65.60000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-02-13','%Y-%m-%d'),61.60000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-02-14','%Y-%m-%d'),69.33333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-02-15','%Y-%m-%d'),59.80000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-02-16','%Y-%m-%d'),59.80000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-02-17','%Y-%m-%d'),60.46667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-02-18','%Y-%m-%d'),61.26667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-02-19','%Y-%m-%d'),62.33333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-02-20','%Y-%m-%d'),60.93333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-02-21','%Y-%m-%d'),59.73333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-02-22','%Y-%m-%d'),61.40000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-02-23','%Y-%m-%d'),60.93333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-02-24','%Y-%m-%d'),64.13333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-02-25','%Y-%m-%d'),61.53333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-02-26','%Y-%m-%d'),59.06667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-02-27','%Y-%m-%d'),61.60000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-02-28','%Y-%m-%d'),60.86667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-02-29','%Y-%m-%d'),61.00000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-03-01','%Y-%m-%d'),61.86667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-03-02','%Y-%m-%d'),61.66667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-03-03','%Y-%m-%d'),60.73333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-03-04','%Y-%m-%d'),61.26667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-03-05','%Y-%m-%d'),61.60000); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-03-06','%Y-%m-%d'),61.33333); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-03-07','%Y-%m-%d'),61.86667); +INSERT INTO demo_util_chart (TRAFFIC_DATE,UTIL_PERC ) VALUES (str_to_date('2016-03-08','%Y-%m-%d'),62.00000); + +commit; diff --git a/ui/db-scripts/EcompSdkDMLMySql_2_4_OS.sql b/ui/db-scripts/EcompSdkDMLMySql_2_4_OS.sql new file mode 100644 index 0000000..781e8bc --- /dev/null +++ b/ui/db-scripts/EcompSdkDMLMySql_2_4_OS.sql @@ -0,0 +1,39 @@ +-- --------------------------------------------------------------------------------------------------------------- +-- This script populates tables in the OPEN-SOURCE version 2.1.0 of the ECOMP SDK application database. +-- The DML COMMON script must be executed first! +-- --------------------------------------------------------------------------------------------------------------- + +SET FOREIGN_KEY_CHECKS=1; +USE akraino; + +-- fn_menu +INSERT INTO fn_menu (MENU_ID, LABEL, PARENT_ID, SORT_ORDER, ACTION, FUNCTION_CD, ACTIVE_YN, SERVLET, QUERY_STRING, EXTERNAL_URL, TARGET, MENU_SET_CD, SEPARATOR_YN, IMAGE_SRC) VALUES (1, 'Root', NULL, 10, NULL, 'menu_home', 'N', NULL, NULL, NULL, NULL, 'APP', 'N', NULL); -- we need even though it's inactive +INSERT INTO fn_menu (MENU_ID, LABEL, PARENT_ID, SORT_ORDER, ACTION, FUNCTION_CD, ACTIVE_YN, SERVLET, QUERY_STRING, EXTERNAL_URL, TARGET, MENU_SET_CD, SEPARATOR_YN, IMAGE_SRC) VALUES (5000, 'Sample Pages', 1, 30, 'sample.htm', 'menu_sample', 'Y', NULL, NULL, NULL, NULL, 'APP', 'N', 'icon-documents-book'); +INSERT INTO fn_menu (MENU_ID, LABEL, PARENT_ID, SORT_ORDER, ACTION, FUNCTION_CD, ACTIVE_YN, SERVLET, QUERY_STRING, EXTERNAL_URL, TARGET, MENU_SET_CD, SEPARATOR_YN, IMAGE_SRC) VALUES (2, 'Home', 1, 10, 'welcome', 'menu_home', 'Y', NULL, NULL, NULL, NULL, 'APP', 'N', 'icon-building-home'); +INSERT INTO fn_menu (MENU_ID, LABEL, PARENT_ID, SORT_ORDER, ACTION, FUNCTION_CD, ACTIVE_YN, SERVLET, QUERY_STRING, EXTERNAL_URL, TARGET, MENU_SET_CD, SEPARATOR_YN, IMAGE_SRC) VALUES (8, 'Reports', 1, 40, 'report.htm', 'menu_reports', 'Y', NULL, NULL, NULL, NULL, 'APP', 'N', 'icon-misc-piechart'); +INSERT INTO fn_menu (MENU_ID, LABEL, PARENT_ID, SORT_ORDER, ACTION, FUNCTION_CD, ACTIVE_YN, SERVLET, QUERY_STRING, EXTERNAL_URL, TARGET, MENU_SET_CD, SEPARATOR_YN, IMAGE_SRC) VALUES (9, 'Profile', 1, 90, 'userProfile', 'menu_profile', 'Y', NULL, NULL, NULL, NULL, 'APP', 'N', 'icon-people-oneperson'); +INSERT INTO fn_menu (MENU_ID, LABEL, PARENT_ID, SORT_ORDER, ACTION, FUNCTION_CD, ACTIVE_YN, SERVLET, QUERY_STRING, EXTERNAL_URL, TARGET, MENU_SET_CD, SEPARATOR_YN, IMAGE_SRC) VALUES (10, 'Admin', 1, 110, 'role_list.htm', 'menu_admin', 'Y', NULL, NULL, NULL, NULL, 'APP', 'N', 'icon-content-star'); +INSERT INTO fn_menu (MENU_ID, LABEL, PARENT_ID, SORT_ORDER, ACTION, FUNCTION_CD, ACTIVE_YN, SERVLET, QUERY_STRING, EXTERNAL_URL, TARGET, MENU_SET_CD, SEPARATOR_YN, IMAGE_SRC) VALUES (84, 'All Reports', 8, 50, 'report', 'menu_reports', 'Y', NULL, NULL, NULL, NULL, 'APP', 'N', '/static/fusion/images/reports.png'); +INSERT INTO fn_menu (MENU_ID, LABEL, PARENT_ID, SORT_ORDER, ACTION, FUNCTION_CD, ACTIVE_YN, SERVLET, QUERY_STRING, EXTERNAL_URL, TARGET, MENU_SET_CD, SEPARATOR_YN, IMAGE_SRC) values (87, 'Create Reports', 8, 120, 'report#/report_wizard', 'menu_reports', 'Y', NULL, 'r_action=report.create', NULL, NULL, 'APP', 'N', NULL); +INSERT INTO fn_menu (MENU_ID, LABEL, PARENT_ID, SORT_ORDER, ACTION, FUNCTION_CD, ACTIVE_YN, SERVLET, QUERY_STRING, EXTERNAL_URL, TARGET, MENU_SET_CD, SEPARATOR_YN, IMAGE_SRC) values (88, 'Sample Dashboard', 8, 130, 'report_dashboard', 'menu_reports', 'N', NULL, NULL, NULL, NULL, 'APP', 'N', NULL); +INSERT INTO fn_menu (MENU_ID, LABEL, PARENT_ID, SORT_ORDER, ACTION, FUNCTION_CD, ACTIVE_YN, SERVLET, QUERY_STRING, EXTERNAL_URL, TARGET, MENU_SET_CD, SEPARATOR_YN, IMAGE_SRC) VALUES (89, 'Import', 8, 140, 'report#/report_import', 'menu_reports', 'N', null, null, null, null, 'APP', 'N', null); +INSERT INTO fn_menu (MENU_ID, LABEL, PARENT_ID, SORT_ORDER, ACTION, FUNCTION_CD, ACTIVE_YN, SERVLET, QUERY_STRING, EXTERNAL_URL, TARGET, MENU_SET_CD, SEPARATOR_YN, IMAGE_SRC) VALUES (94, 'Self', 9, 40,'userProfile#/self_profile', 'menu_profile', 'Y', NULL, NULL, NULL, NULL, 'APP', 'N', '/static/fusion/images/profile.png'); +INSERT INTO fn_menu (MENU_ID, LABEL, PARENT_ID, SORT_ORDER, ACTION, FUNCTION_CD, ACTIVE_YN, SERVLET, QUERY_STRING, EXTERNAL_URL, TARGET, MENU_SET_CD, SEPARATOR_YN, IMAGE_SRC) VALUES (101, 'Roles', 10, 20, 'admin#/admin', 'menu_admin', 'Y', NULL, NULL, NULL, NULL, 'APP', 'N', '/static/fusion/images/users.png'); +INSERT INTO fn_menu (MENU_ID, LABEL, PARENT_ID, SORT_ORDER, ACTION, FUNCTION_CD, ACTIVE_YN, SERVLET, QUERY_STRING, EXTERNAL_URL, TARGET, MENU_SET_CD, SEPARATOR_YN, IMAGE_SRC) VALUES (102, 'Role Functions', 10, 30, 'admin#/role_function_list', 'menu_admin', 'Y', NULL, NULL, NULL, NULL, 'APP', 'N', NULL); +INSERT INTO fn_menu (MENU_ID, LABEL, PARENT_ID, SORT_ORDER, ACTION, FUNCTION_CD, ACTIVE_YN, SERVLET, QUERY_STRING, EXTERNAL_URL, TARGET, MENU_SET_CD, SEPARATOR_YN, IMAGE_SRC) VALUES (105, 'Cache Admin', 10, 40, 'admin#/jcs_admin', 'menu_admin', 'Y', NULL, NULL, NULL, NULL, 'APP', 'N', '/static/fusion/images/cache.png'); +INSERT INTO fn_menu (MENU_ID, LABEL, PARENT_ID, SORT_ORDER, ACTION, FUNCTION_CD, ACTIVE_YN, SERVLET, QUERY_STRING, EXTERNAL_URL, TARGET, MENU_SET_CD, SEPARATOR_YN, IMAGE_SRC) VALUES (108, 'Usage', 10, 80, 'admin#/usage_list', 'menu_admin', 'Y', NULL, NULL, NULL, NULL, 'APP', 'N', '/static/fusion/images/users.png'); +INSERT INTO fn_menu (MENU_ID, LABEL, PARENT_ID, SORT_ORDER, ACTION, FUNCTION_CD, ACTIVE_YN, SERVLET, QUERY_STRING, EXTERNAL_URL, TARGET, MENU_SET_CD, SEPARATOR_YN, IMAGE_SRC) VALUES (121, 'Collaboration', 5000, 100, 'samplePage#/collaborate_list', 'menu_sample', 'Y', NULL, NULL, NULL, NULL, 'APP', 'N', '/static/fusion/images/bubble.png'); +INSERT INTO fn_menu (MENU_ID, LABEL, PARENT_ID, SORT_ORDER, ACTION, FUNCTION_CD, ACTIVE_YN, SERVLET, QUERY_STRING, EXTERNAL_URL, TARGET, MENU_SET_CD, SEPARATOR_YN, IMAGE_SRC) VALUES (930, 'Search', 9, 15, 'userProfile', 'menu_admin', 'Y', NULL, NULL, NULL, NULL, 'APP', 'N', '/static/fusion/images/search_profile.png'); +INSERT INTO fn_menu (MENU_ID, LABEL, PARENT_ID, SORT_ORDER, ACTION, FUNCTION_CD, ACTIVE_YN, SERVLET, QUERY_STRING, EXTERNAL_URL, TARGET, MENU_SET_CD, SEPARATOR_YN, IMAGE_SRC) VALUES (150022, 'Menus', 10, 60, 'admin#/admin_menu_edit', 'menu_admin', 'Y', NULL, NULL, NULL, NULL, 'APP', 'N', NULL); +INSERT INTO fn_menu (MENU_ID, LABEL, PARENT_ID, SORT_ORDER, ACTION, FUNCTION_CD, ACTIVE_YN, SERVLET, QUERY_STRING, EXTERNAL_URL, TARGET, MENU_SET_CD, SEPARATOR_YN, IMAGE_SRC) VALUES (150038,'Notebook',5000,135,'samplePage#/notebook','menu_sample','Y',NULL,NULL,NULL,NULL,'APP','N',NULL); + +-- fn_user +Insert into fn_user (USER_ID,ORG_ID,MANAGER_ID,FIRST_NAME,MIDDLE_NAME,LAST_NAME,PHONE,FAX,CELLULAR,EMAIL,ADDRESS_ID,ALERT_METHOD_CD,HRID,ORG_USER_ID,ORG_CODE,LOGIN_ID,LOGIN_PWD,LAST_LOGIN_DATE,ACTIVE_YN,CREATED_ID,CREATED_DATE,MODIFIED_ID,MODIFIED_DATE,IS_INTERNAL_YN,ADDRESS_LINE_1,ADDRESS_LINE_2,CITY,STATE_CD,ZIP_CODE,COUNTRY_CD,LOCATION_CLLI,ORG_MANAGER_USERID,COMPANY,DEPARTMENT_NAME,JOB_TITLE,TIMEZONE,DEPARTMENT,BUSINESS_UNIT,BUSINESS_UNIT_NAME,COST_CENTER,FIN_LOC_CODE,SILO_STATUS) values (1,null,null,'admin',null,'User',null,null,null,'admin@email.com',null,null,null,'admin',null,'admin','admin_password',str_to_date('24-OCT-16','%d-%M-%Y'),'Y',null,str_to_date('17-OCT-16','%d-%M-%Y'),1,str_to_date('24-OCT-16','%d-%M-%Y'),'N',null,null,null,'NJ',null,'US',null,null,null,null,null,10,null,null,null,null,null,null); + +-- fn_app +Insert into fn_app (APP_ID,APP_NAME,APP_IMAGE_URL,APP_DESCRIPTION,APP_NOTES,APP_URL,APP_ALTERNATE_URL,APP_REST_ENDPOINT,ML_APP_NAME,ML_APP_ADMIN_ID,MOTS_ID,APP_PASSWORD,OPEN,ENABLED,THUMBNAIL,APP_USERNAME,UEB_KEY,UEB_SECRET,UEB_TOPIC_NAME) VALUES (1,'Default',null,'Some Default Description','Some Default Note',null,null,null,'ECPP','?','1','JuCerIRKt/faEcx8QdgncLEEv+IOZjpHe7Pi5DEPqKs=','N','N',null,'Default',null,null,'ECOMP-PORTAL-INBOX'); + +-- fn_user_role +Insert into fn_user_role (USER_ID,ROLE_ID,PRIORITY,APP_ID) values (1,1,null,1); + +commit; diff --git a/ui/db-scripts/akraino-blueprint_validation_db.sql b/ui/db-scripts/akraino-blueprint_validation_db.sql new file mode 100644 index 0000000..c2d7320 --- /dev/null +++ b/ui/db-scripts/akraino-blueprint_validation_db.sql @@ -0,0 +1,117 @@ +/* + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +SET FOREIGN_KEY_CHECKS=1; + +use akraino; + +DROP TABLE IF EXISTS submission; +DROP TABLE IF EXISTS blueprint_instance_for_validation; +DROP TABLE IF EXISTS blueprint; +DROP TABLE IF EXISTS silo; +DROP TABLE IF EXISTS timeslot; +DROP TABLE IF EXISTS lab; + +create table lab ( + id bigint not NULL AUTO_INCREMENT, + lab text not NULL, + CONSTRAINT id_pk PRIMARY KEY (id) +); + +create table timeslot ( + id bigint not NULL AUTO_INCREMENT, + start_date_time text, + duration text, + lab_id bigint not NULL, + CONSTRAINT id_pk PRIMARY KEY (id), + CONSTRAINT lab_id_fk FOREIGN KEY (lab_id) + REFERENCES lab (id) MATCH SIMPLE + ON UPDATE NO ACTION ON DELETE NO ACTION +); + +create table silo ( + id bigint not NULL AUTO_INCREMENT, + silo text not NULL, + lab_id bigint not NULL, + CONSTRAINT id_pk PRIMARY KEY (id), + CONSTRAINT lab_id_fk2 FOREIGN KEY (lab_id) + REFERENCES lab (id) MATCH SIMPLE + ON UPDATE NO ACTION ON DELETE NO ACTION +); + +CREATE TABLE blueprint +( + id bigint not NULL AUTO_INCREMENT, + blueprint_name varchar(20) not NULL unique, + CONSTRAINT id_pk PRIMARY KEY (id) +); + +CREATE TABLE blueprint_instance_for_validation +( + id bigint not NULL AUTO_INCREMENT, + blueprint_id bigint not NULL, + version text not NULL, + layer text not NULL, + layer_description text not NULL, + CONSTRAINT id_pk PRIMARY KEY (id), + CONSTRAINT blueprint_id_fk FOREIGN KEY (blueprint_id) + REFERENCES blueprint (id) MATCH SIMPLE + ON UPDATE NO ACTION ON DELETE NO ACTION +); + +CREATE TABLE submission +( + id bigint not NULL AUTO_INCREMENT, + status text not NULL, + jenkins_queue_job_item_url text, + nexus_result_url text, + blueprint_instance_for_validation_id bigint not NULL, + timeslot_id bigint not NULL, + CONSTRAINT id_pk PRIMARY KEY (id), + CONSTRAINT blueprint_instance_for_validation_id_fk FOREIGN KEY (blueprint_instance_for_validation_id) + REFERENCES blueprint_instance_for_validation (id) MATCH SIMPLE + ON UPDATE NO ACTION ON DELETE NO ACTION, + CONSTRAINT timeslot_id_fk FOREIGN KEY (timeslot_id) + REFERENCES timeslot (id) MATCH SIMPLE + ON UPDATE NO ACTION ON DELETE NO ACTION +); + +insert into fn_menu (MENU_ID, LABEL, PARENT_ID, SORT_ORDER, ACTION, FUNCTION_CD, ACTIVE_YN, SERVLET, QUERY_STRING, EXTERNAL_URL, TARGET, MENU_SET_CD, SEPARATOR_YN, IMAGE_SRC) VALUES (21, 'New Submission', 1, 10, 'newSubmission', 'menu_tab', 'Y', NULL, NULL, NULL, NULL, 'APP', 'N', 'icon-building-home'); +insert into fn_menu (MENU_ID, LABEL, PARENT_ID, SORT_ORDER, ACTION, FUNCTION_CD, ACTIVE_YN, SERVLET, QUERY_STRING, EXTERNAL_URL, TARGET, MENU_SET_CD, SEPARATOR_YN, IMAGE_SRC) VALUES (22, 'Committed Submissions', 1, 10, 'committedSubmissions', 'menu_tab', 'Y', NULL, NULL, NULL, NULL, 'APP', 'N', 'icon-building-home'); +insert into fn_menu (MENU_ID, LABEL, PARENT_ID, SORT_ORDER, ACTION, FUNCTION_CD, ACTIVE_YN, SERVLET, QUERY_STRING, EXTERNAL_URL, TARGET, MENU_SET_CD, SEPARATOR_YN, IMAGE_SRC) VALUES (23, 'Validation Results', 1, 10, 'report.htm', 'menu_tab', 'Y', NULL, NULL, NULL, NULL, 'APP', 'N', 'icon-misc-piechart'); +insert into fn_menu (MENU_ID, LABEL, PARENT_ID, SORT_ORDER, ACTION, FUNCTION_CD, ACTIVE_YN, SERVLET, QUERY_STRING, EXTERNAL_URL, TARGET, MENU_SET_CD, SEPARATOR_YN, IMAGE_SRC) VALUES (24, 'Get by submission id', 23, 10, 'getBySubmissionId', 'menu_tab', 'Y', NULL, NULL, NULL, NULL, 'APP', 'N', '/static/fusion/images/reports.png'); +insert into fn_menu (MENU_ID, LABEL, PARENT_ID, SORT_ORDER, ACTION, FUNCTION_CD, ACTIVE_YN, SERVLET, QUERY_STRING, EXTERNAL_URL, TARGET, MENU_SET_CD, SEPARATOR_YN, IMAGE_SRC) VALUES (25, 'Get by blueprint name', 23, 10, '', 'menu_tab', 'Y', NULL, NULL, NULL, NULL, 'APP', 'N', '/static/fusion/images/reports.png'); +insert into fn_menu (MENU_ID, LABEL, PARENT_ID, SORT_ORDER, ACTION, FUNCTION_CD, ACTIVE_YN, SERVLET, QUERY_STRING, EXTERNAL_URL, TARGET, MENU_SET_CD, SEPARATOR_YN, IMAGE_SRC) VALUES (26, 'Get by layer', 23, 10, '', 'menu_tab', 'Y', NULL, NULL, NULL, NULL, 'APP', 'N', '/static/fusion/images/reports.png'); +insert into fn_menu (MENU_ID, LABEL, PARENT_ID, SORT_ORDER, ACTION, FUNCTION_CD, ACTIVE_YN, SERVLET, QUERY_STRING, EXTERNAL_URL, TARGET, MENU_SET_CD, SEPARATOR_YN, IMAGE_SRC) VALUES (27, 'Get by execution dates', 23, 10, '', 'menu_tab', 'Y', NULL, NULL, NULL, NULL, 'APP', 'N', '/static/fusion/images/reports.png'); +insert into fn_menu (MENU_ID, LABEL, PARENT_ID, SORT_ORDER, ACTION, FUNCTION_CD, ACTIVE_YN, SERVLET, QUERY_STRING, EXTERNAL_URL, TARGET, MENU_SET_CD, SEPARATOR_YN, IMAGE_SRC) VALUES (28, 'Get by number of successful runs', 23, 10, '', 'menu_tab', 'Y', NULL, NULL, NULL, NULL, 'APP', 'N', '/static/fusion/images/reports.png'); +insert into fn_menu (MENU_ID, LABEL, PARENT_ID, SORT_ORDER, ACTION, FUNCTION_CD, ACTIVE_YN, SERVLET, QUERY_STRING, EXTERNAL_URL, TARGET, MENU_SET_CD, SEPARATOR_YN, IMAGE_SRC) VALUES (29, 'Get by number of successful last runs', 23, 10, '', 'menu_tab', 'Y', NULL, NULL, NULL, NULL, 'APP', 'N', '/static/fusion/images/reports.png'); +insert into fn_menu (MENU_ID, LABEL, PARENT_ID, SORT_ORDER, ACTION, FUNCTION_CD, ACTIVE_YN, SERVLET, QUERY_STRING, EXTERNAL_URL, TARGET, MENU_SET_CD, SEPARATOR_YN, IMAGE_SRC) VALUES (30, 'Get by number of failed last runs', 23, 10, '', 'menu_tab', 'Y', NULL, NULL, NULL, NULL, 'APP', 'N', '/static/fusion/images/reports.png'); +insert into fn_menu (MENU_ID, LABEL, PARENT_ID, SORT_ORDER, ACTION, FUNCTION_CD, ACTIVE_YN, SERVLET, QUERY_STRING, EXTERNAL_URL, TARGET, MENU_SET_CD, SEPARATOR_YN, IMAGE_SRC) VALUES (31, 'Get all', 23, 10, '', 'menu_tab', 'Y', NULL, NULL, NULL, NULL, 'APP', 'N', '/static/fusion/images/reports.png'); + +-- fn_user +Insert into fn_user (USER_ID,ORG_ID,MANAGER_ID,FIRST_NAME,MIDDLE_NAME,LAST_NAME,PHONE,FAX,CELLULAR,EMAIL,ADDRESS_ID,ALERT_METHOD_CD,HRID,ORG_USER_ID,ORG_CODE,LOGIN_ID,LOGIN_PWD,LAST_LOGIN_DATE,ACTIVE_YN,CREATED_ID,CREATED_DATE,MODIFIED_ID,MODIFIED_DATE,IS_INTERNAL_YN,ADDRESS_LINE_1,ADDRESS_LINE_2,CITY,STATE_CD,ZIP_CODE,COUNTRY_CD,LOCATION_CLLI,ORG_MANAGER_USERID,COMPANY,DEPARTMENT_NAME,JOB_TITLE,TIMEZONE,DEPARTMENT,BUSINESS_UNIT,BUSINESS_UNIT_NAME,COST_CENTER,FIN_LOC_CODE,SILO_STATUS) values (2,null,null,'akraino',null,null,null,null,null,null,null,null,null,'akraino',null,'akraino','akraino_password',now(),'Y',null,now(),1,now(),'N',null,null,null,'NJ',null,'US',null,null,null,null,null,10,null,null,null,null,null,null); + +-- fn_role +Insert into fn_role (ROLE_ID,ROLE_NAME,ACTIVE_YN,PRIORITY) values (17,'Blueprint Validation UI user','Y',5); + +-- fn_role_function +Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (17,'menu_home'); +Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (17,'menu_tab'); + +-- fn_user_role +Insert into fn_user_role (USER_ID,ROLE_ID,PRIORITY,APP_ID) values (2,17,null,1); + +commit; diff --git a/ui/db-scripts/examples/initialize_db_example.sql b/ui/db-scripts/examples/initialize_db_example.sql new file mode 100644 index 0000000..7902b94 --- /dev/null +++ b/ui/db-scripts/examples/initialize_db_example.sql @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +SET FOREIGN_KEY_CHECKS=1; + +use akraino; + +insert into lab values(1, 0); /* 0 stands for AT&T lab */ + +insert into timeslot values(1, 'now', null, 1); + +insert into silo values(1, 'att-blu-val', 1); + +insert into blueprint (id, blueprint_name) values(1, 'dummy'); +insert into blueprint (id, blueprint_name) values(2, 'Unicycle'); +insert into blueprint (id, blueprint_name) values(3, 'REC'); + +insert into blueprint_instance_for_validation (id, blueprint_id, version, layer, layer_description) values(1, 1, 'latest', 0, 'Dummy Hardware'); /* 0 Stands for hardware layer */ +insert into blueprint_instance_for_validation (id, blueprint_id, version, layer, layer_description) values(2, 3, 'latest', 0, 'AT&T Hardware'); /* 0 Stands for hardware layer */ +insert into blueprint_instance_for_validation (id, blueprint_id, version, layer, layer_description) values(3, 3, 'latest', 1, 'OS of the AT&T platform'); /* 1 Stands for OS layer */ +insert into blueprint_instance_for_validation (id, blueprint_id, version, layer, layer_description) values(4, 3, 'latest', 2, 'K8s of the AT&T platform'); /* 2 Stands for K8s layer */ +insert into blueprint_instance_for_validation (id, blueprint_id, version, layer, layer_description) values(5, 3, 'latest', 7, 'All layers'); /* 7 Stands for all layers */ +insert into blueprint_instance_for_validation (id, blueprint_id, version, layer, layer_description) values(6, 2, 'latest', 0, 'Unicycle Hardware'); /* 0 Stands for hardware layer */ + +commit; diff --git a/ui/distribution.xml b/ui/distribution.xml new file mode 100644 index 0000000..f3732bc --- /dev/null +++ b/ui/distribution.xml @@ -0,0 +1,33 @@ + + + distribution + + zip + + false + + + ${basedir} + + + .classpath + .project + .settings/ + bin/ + target/ + distribution.xml + **/WEB-INF/conf/system.properties.* + + + + \ No newline at end of file diff --git a/ui/pom.xml b/ui/pom.xml old mode 100755 new mode 100644 index 85890da..46c647f --- a/ui/pom.xml +++ b/ui/pom.xml @@ -1,236 +1,376 @@ - + + 4.0.0 -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at + org.akraino.validation + ui + 0.1.0-SNAPSHOT + AECBlueprintValidationUI Maven Webapp + war - http://www.apache.org/licenses/LICENSE-2.0 + + 1.8 + 1.8 + 1.8 + UTF-8 + + true + + false + 2.4.0 + 0.7.9 + 4.2.3.RELEASE + 2.19.1 + 2.0.2 + 2.8 + 1.0.0 + 2.8.10 + 0.9.5.2 + 2.0.0 + 3.1.0 + 4.12 + 2.2.0 + 20180813 + 2.2.1 + 1.7.12 + 1.19.4 + 27.1-jre + 1.12.1 + 3.1 + 0.22.0 + http://archive.apache.org/dist/tomcat/tomcat-8/v8.0.37/bin + apache-tomcat-8.0.37 + 3.0.0 + -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. ---> + + + onap-releases + onap-releases + https://nexus.onap.org/content/repositories/releases/ + + - - 4.0.0 - org.akraino.validation - ui - war - 0.0.1-SNAPSHOT - AECBlueprintValidationUI Maven Webapp - http://maven.apache.org - - 1.8 - 4.3.0.RELEASE - 3.2.3.RELEASE - 2.7.5 - UTF-8 - 1.19.4 - 27.1-jre - + + + AECBlueprintValidationUI - - - central - Central Repository - http://repo.maven.apache.org/maven2 - default - - false - - - + + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire-plugin-version} + + ${skiptests} + + **/Test*.java + **/*Test.java + **/*TestCase.java + + + ${basedir}/war + + + classpath: + + + - - - central - Maven Plugin Repository - http://repo1.maven.org/maven2 - default - - false - - - never - - - + + + org.apache.maven.plugins + maven-war-plugin + ${maven-war-plugin-version} + + + + true + + + ${project.version} + ${maven.build.timestamp} + + + + + org.onap.portal.sdk + epsdk-app-overlay + + app/fusion/scripts/DS2-view-models/welcome-content.html + + + + + - - - junit - junit - 4.12 - test - - - commons-codec - commons-codec - 1.11 - - - org.springframework - spring-webmvc - ${org.springframework-version} - - - org.springframework - spring-context - ${org.springframework-version} - - - org.springframework - spring-orm - ${org.springframework-version} - - - org.springframework - spring-tx - ${org.springframework-version} - - - commons-fileupload - commons-fileupload - 1.3.2 - - - org.hibernate - hibernate-core - 5.2.6.Final - - - org.javassist - javassist - 3.18.2-GA - - - org.hibernate - hibernate-c3p0 - 5.2.6.Final - - - commons-dbcp - commons-dbcp - 1.4 - - - com.mchange - c3p0 - 0.9.5.2 - - - org.hibernate - hibernate-validator - 5.4.1.Final - - - log4j - log4j - 1.2.17 - - - org.springframework - spring-test - ${org.springframework-version} - test - - - javax.servlet - javax.servlet-api - 3.0.1 - provided - - - javax.servlet - jstl - 1.2 - - - com.fasterxml.jackson.core - jackson-databind - ${jackson.library} - - - com.fasterxml.jackson.dataformat - jackson-dataformat-xml - ${jackson.library} - - - com.fasterxml.jackson.dataformat - jackson-dataformat-yaml - ${jackson.library} - - - org.apache.commons - commons-lang3 - 3.4 - - - org.postgresql - postgresql - 42.2.2 - - - com.sun.jersey - jersey-json - ${jersey-version} - - - com.sun.jersey - jersey-client - ${jersey-version} - - - com.google.guava - guava - ${google.guava-version} - - - org.json - json - 20180813 - - - org.jsoup - jsoup - 1.12.1 - - - commons-httpclient - commons-httpclient - 3.1 - + + org.apache.maven.plugins + maven-assembly-plugin + ${maven-assembly-plugin.version} + + ${skipassembly} + + ${basedir}/distribution.xml + + + + + make-assembly + package + + single + + + + - + + org.apache.maven.plugins + maven-deploy-plugin + ${maven-deploy-plugin-version} + + true + + - - AECBlueprintValidationUI - - - - org.apache.maven.plugins - maven-compiler-plugin - 2.3.2 - - ${java-version} - ${java-version} - - - - org.apache.maven.plugins - maven-war-plugin - 2.4 - - src/main/webapp - AECBlueprintValidationUI - false - - - - - + + io.fabric8 + docker-maven-plugin + ${docker-maven-plugin.version} + + true + + + akraino/validation:dev-ui-latest + + tomcat:8.5.37 + + artifact + + + + + + + + + akraino/validation:dev-mariadb-latest + + mariadb:10.4.6 + + project + + + + + + + + + + + + + + + + + + org.onap.portal.sdk + epsdk-app-overlay + ${epsdk.version} + war + + + org.onap.portal.sdk + epsdk-app-common + ${epsdk.version} + jar + + + + org.onap.portal.sdk + epsdk-core + ${epsdk.version} + + + org.onap.portal.sdk + epsdk-analytics + ${epsdk.version} + + + org.onap.portal.sdk + epsdk-workflow + ${epsdk.version} + + + org.onap.portal.sdk + epsdk-music + ${epsdk.version} + + + com.att.eelf + eelf-core + ${eelf-core-version} + + + + com.fasterxml.jackson.core + jackson-annotations + ${jackson.version} + + + com.fasterxml.jackson.core + jackson-core + ${jackson.version} + + + com.fasterxml.jackson.core + jackson-databind + ${jackson.version} + + + com.mchange + c3p0 + ${c3p0.version} + + + io.searchbox + jest + ${io.searchbox.jest.version} + + + commons-logging + commons-logging + + + + + javax.servlet + javax.servlet-api + ${javax.servlet-api.version} + + + junit + junit + ${junit.version} + + + + org.elasticsearch + elasticsearch + ${elasticsearch} + + + org.apache.lucene + lucene-queryparser + + + + + org.json + json + ${org.json.version} + + + org.quartz-scheduler + quartz + ${quartz.version} + + + + c3p0 + c3p0 + + + + + + org.slf4j + jcl-over-slf4j + ${jcl-over-slf4j.version} + + + org.springframework + spring-context-support + ${springframework-version} + + + org.springframework + spring-core + ${springframework-version} + + + commons-logging + commons-logging + + + + + org.springframework + spring-test + ${springframework-version} + + + org.springframework + spring-tx + ${springframework-version} + + + org.springframework + spring-web + ${springframework-version} + + + org.springframework + spring-webmvc + ${springframework-version} + + + + org.jacoco + org.jacoco.agent + ${jacoco.version} + runtime + + + com.sun.jersey + jersey-json + ${jersey-version} + + + com.sun.jersey + jersey-client + ${jersey-version} + + + com.google.guava + guava + ${google.guava-version} + + + org.jsoup + jsoup + ${org.jsoup.version} + + + commons-httpclient + commons-httpclient + ${commons-httpclient.version} + + + diff --git a/ui/src/main/java/org/akraino/validation/ui/client/jenkins/JenkinsExecutorClient.java b/ui/src/main/java/org/akraino/validation/ui/client/jenkins/JenkinsExecutorClient.java index 313ce89..6c80c24 100644 --- a/ui/src/main/java/org/akraino/validation/ui/client/jenkins/JenkinsExecutorClient.java +++ b/ui/src/main/java/org/akraino/validation/ui/client/jenkins/JenkinsExecutorClient.java @@ -1,21 +1,25 @@ /* * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. You may obtain + * a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied. See the License for the specific language governing + * permissions and limitations under the License. */ package org.akraino.validation.ui.client.jenkins; +import java.io.IOException; +import java.net.HttpURLConnection; +import java.net.InetSocketAddress; import java.net.MalformedURLException; +import java.net.Proxy; import java.net.URL; import java.security.KeyManagementException; import java.security.NoSuchAlgorithmException; @@ -39,7 +43,7 @@ import org.akraino.validation.ui.client.jenkins.resources.Parameter; import org.akraino.validation.ui.client.jenkins.resources.Parameters; import org.akraino.validation.ui.client.jenkins.resources.QueueJobItem; import org.apache.commons.httpclient.HttpException; -import org.apache.log4j.Logger; +import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate; import com.sun.jersey.api.client.Client; import com.sun.jersey.api.client.ClientHandlerException; @@ -51,10 +55,12 @@ import com.sun.jersey.api.client.config.DefaultClientConfig; import com.sun.jersey.api.client.filter.HTTPBasicAuthFilter; import com.sun.jersey.api.json.JSONConfiguration; import com.sun.jersey.client.urlconnection.HTTPSProperties; +import com.sun.jersey.client.urlconnection.HttpURLConnectionFactory; +import com.sun.jersey.client.urlconnection.URLConnectionClientHandler; public final class JenkinsExecutorClient { - private static final Logger LOGGER = Logger.getLogger(JenkinsExecutorClient.class); + private static final EELFLoggerDelegate LOGGER = EELFLoggerDelegate.getLogger(JenkinsExecutorClient.class); private static final List JENKINS_CLIENTS = new ArrayList<>(); private static final Object LOCK = new Object(); @@ -73,7 +79,23 @@ public final class JenkinsExecutorClient { this.baseurl = newBaseurl; ClientConfig clientConfig = new DefaultClientConfig(); clientConfig.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING, Boolean.TRUE); - this.client = Client.create(clientConfig); + this.client = new Client(new URLConnectionClientHandler(new HttpURLConnectionFactory() { + Proxy proxy = null; + + @Override + public HttpURLConnection getHttpURLConnection(URL url) throws IOException { + try { + String proxyIp = System.getenv("JENKINS_PROXY").substring(0, + System.getenv("JENKINS_PROXY").lastIndexOf(":")); + String proxyPort = System.getenv("JENKINS_PROXY") + .substring(System.getenv("JENKINS_PROXY").lastIndexOf(":") + 1); + proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyIp, Integer.parseInt(proxyPort))); + return (HttpURLConnection) url.openConnection(proxy); + } catch (Exception ex) { + return (HttpURLConnection) url.openConnection(); + } + } + }), clientConfig); this.client.addFilter(new HTTPBasicAuthFilter(user, password)); // Create all-trusting host name verifier hostnameVerifier = new HostnameVerifier() { @@ -130,11 +152,11 @@ public final class JenkinsExecutorClient { public QueueJobItem getQueueJobItem(URL queueJobItemUrl) throws HttpException, ClientHandlerException, UniformInterfaceException, KeyManagementException, NoSuchAlgorithmException { synchronized (LOCK) { - LOGGER.info("Trying to get a Jenkins resource"); + LOGGER.info(EELFLoggerDelegate.applicationLogger, "Trying to get a Jenkins resource"); String crumb = this.getCrumb(); - LOGGER.debug("Jenkins crumb is: " + crumb); + LOGGER.debug(EELFLoggerDelegate.debugLogger, "Jenkins crumb is: " + crumb); WebResource webResource = this.client.resource(queueJobItemUrl + "/api/json"); - LOGGER.debug("Request URI of get: " + webResource.getURI().toString()); + LOGGER.debug(EELFLoggerDelegate.debugLogger, "Request URI of get: " + webResource.getURI().toString()); WebResource.Builder builder = webResource.getRequestBuilder(); builder.header("Jenkins-Crumb", crumb); ClientResponse response = @@ -143,7 +165,7 @@ public final class JenkinsExecutorClient { throw new HttpException("Get on Jenkins failed. HTTP error code : " + response.getStatus() + " and message: " + response.getEntity(String.class)); } - LOGGER.info("Get of Jenkins resource succeeded"); + LOGGER.info(EELFLoggerDelegate.applicationLogger, "Get of Jenkins resource succeeded"); return response.getEntity(QueueJobItem.class); } } @@ -164,9 +186,9 @@ public final class JenkinsExecutorClient { throws HttpException, ClientHandlerException, UniformInterfaceException, MalformedURLException, KeyManagementException, NoSuchAlgorithmException { synchronized (LOCK) { - LOGGER.info("Trying to trigger a job to Jenkins"); + LOGGER.info(EELFLoggerDelegate.applicationLogger, "Trying to trigger a job in Jenkins"); String crumb = this.getCrumb(); - LOGGER.debug("Jenkins crumb is: " + crumb); + LOGGER.debug(EELFLoggerDelegate.debugLogger, "Jenkins crumb is: " + crumb); String queryParams = "?"; for (Parameter parameter : parameters.getParameter()) { queryParams = queryParams + parameter.getName() + "=" + parameter.getValue() + "&"; @@ -174,7 +196,7 @@ public final class JenkinsExecutorClient { queryParams = queryParams.substring(0, queryParams.length() - 1); WebResource webResource = this.client.resource(this.getBaseUrl() + "/job/" + jobName + "/buildWithParameters" + queryParams); - LOGGER.debug("Request URI of post: " + webResource.getURI().toString()); + LOGGER.debug(EELFLoggerDelegate.debugLogger, "Request URI of post: " + webResource.getURI().toString()); WebResource.Builder builder = webResource.getRequestBuilder(); builder.header("Jenkins-Crumb", crumb); ClientResponse response = builder.type("application/json").post(ClientResponse.class, String.class); @@ -182,7 +204,7 @@ public final class JenkinsExecutorClient { throw new HttpException("Post of Jenkins job failed. HTTP error code : " + response.getStatus() + " and message: " + response.getEntity(String.class)); } - LOGGER.info("Jenkins job has been successfully triggered"); + LOGGER.info(EELFLoggerDelegate.applicationLogger, "Jenkins job has been successfully triggered"); URL buildQueueUrl = null; MultivaluedMap responseValues = response.getHeaders(); Iterator iter = responseValues.keySet().iterator(); @@ -198,7 +220,7 @@ public final class JenkinsExecutorClient { private String getCrumb() throws HttpException, ClientHandlerException, UniformInterfaceException, KeyManagementException, NoSuchAlgorithmException { - LOGGER.info("Get crumb attempt"); + LOGGER.info(EELFLoggerDelegate.applicationLogger, "Attempting to get the crumb"); setProperties(); String crumbUri = baseurl + "/crumbIssuer/api/json"; WebResource webResource = this.client.resource(crumbUri); @@ -206,7 +228,7 @@ public final class JenkinsExecutorClient { webResource.accept("application/json").type("application/json").get(ClientResponse.class); if (response.getStatus() == 201 || response.getStatus() == 200) { CrumbResponse crumbResponse = response.getEntity(CrumbResponse.class); - LOGGER.info("Successful crumb retrieval."); + LOGGER.info(EELFLoggerDelegate.applicationLogger, "Successful crumb retrieval"); return crumbResponse.getCrumb(); } throw new HttpException("Get crumb attempt towards Jenkins failed. HTTP error code: " + response.getStatus() diff --git a/ui/src/main/java/org/akraino/validation/ui/client/nexus/NexusExecutorClient.java b/ui/src/main/java/org/akraino/validation/ui/client/nexus/NexusExecutorClient.java index 988685b..a0723c8 100644 --- a/ui/src/main/java/org/akraino/validation/ui/client/nexus/NexusExecutorClient.java +++ b/ui/src/main/java/org/akraino/validation/ui/client/nexus/NexusExecutorClient.java @@ -1,17 +1,17 @@ /* * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. You may obtain + * a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied. See the License for the specific language governing + * permissions and limitations under the License. */ package org.akraino.validation.ui.client.nexus; @@ -35,13 +35,15 @@ import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; import org.akraino.validation.ui.client.nexus.resources.RobotTestResult; +import org.akraino.validation.ui.client.nexus.resources.WrapperRobotTestResult; +import org.akraino.validation.ui.data.BlueprintLayer; import org.apache.commons.httpclient.HttpException; -import org.apache.log4j.Logger; import org.json.JSONObject; import org.json.XML; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; +import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate; import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.databind.DeserializationFeature; @@ -61,7 +63,7 @@ import com.sun.jersey.client.urlconnection.URLConnectionClientHandler; public final class NexusExecutorClient { - private static final Logger LOGGER = Logger.getLogger(NexusExecutorClient.class); + private static final EELFLoggerDelegate LOGGER = EELFLoggerDelegate.getLogger(NexusExecutorClient.class); private final Client client; private final String baseurl; @@ -72,17 +74,19 @@ public final class NexusExecutorClient { this.baseurl = newBaseurl; ClientConfig clientConfig = new DefaultClientConfig(); clientConfig.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING, Boolean.TRUE); - client = new Client(new URLConnectionClientHandler(new HttpURLConnectionFactory() { + this.client = new Client(new URLConnectionClientHandler(new HttpURLConnectionFactory() { Proxy proxy = null; @Override public HttpURLConnection getHttpURLConnection(URL url) throws IOException { try { - String proxyIp = System.getenv("proxy_ip"); - String proxyPort = System.getenv("proxy_port"); + String proxyIp = + System.getenv("NEXUS_PROXY").substring(0, System.getenv("NEXUS_PROXY").lastIndexOf(":")); + String proxyPort = + System.getenv("NEXUS_PROXY").substring(System.getenv("NEXUS_PROXY").lastIndexOf(":") + 1); proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyIp, Integer.parseInt(proxyPort))); return (HttpURLConnection) url.openConnection(proxy); - } catch (NumberFormatException ex) { + } catch (Exception ex) { return (HttpURLConnection) url.openConnection(); } } @@ -117,26 +121,54 @@ public final class NexusExecutorClient { return this.baseurl; } - public List getRobotTestResults() throws ClientHandlerException, UniformInterfaceException, + public List getRobotTestResults() throws ClientHandlerException, UniformInterfaceException, JsonParseException, JsonMappingException, IOException, KeyManagementException, NoSuchAlgorithmException { - List robotTestResults = new ArrayList(); - LOGGER.info("Trying to get Robot Test Results"); + List listOfwrappers = new ArrayList(); + LOGGER.info(EELFLoggerDelegate.applicationLogger, "Trying to get the blueprint layers"); setProperties(); WebResource webResource = this.client.resource(this.baseurl + "/"); - LOGGER.debug("Request URI of get: " + webResource.getURI().toString()); + LOGGER.debug(EELFLoggerDelegate.debugLogger, "Request URI of get: " + webResource.getURI().toString()); ClientResponse response = webResource.get(ClientResponse.class); if (response.getStatus() != 200) { - throw new HttpException("Could not retrieve robot test results from Nexus. HTTP error code : " + throw new HttpException("Could not retrieve blueprint layers from Nexus. HTTP error code : " + response.getStatus() + " and message: " + response.getEntity(String.class)); } Document document = Jsoup.parse(response.getEntity(String.class)); List elements = document.getElementsByTag("body").get(0).getElementsByTag("table").get(0).getElementsByTag("tr"); for (int i = 2; i < elements.size(); i++) { - String resultName = elements.get(i).getElementsByTag("td").get(0).getElementsByTag("a").get(0).text(); - resultName = resultName.substring(0, resultName.length() - 1); - webResource = this.client.resource(this.baseurl + "/" + resultName + "/output.xml"); - LOGGER.debug("Request URI of get: " + webResource.getURI().toString()); + String layer = elements.get(i).getElementsByTag("td").get(0).getElementsByTag("a").get(0).text(); + layer = layer.substring(0, layer.length() - 1); + List robotTestResults = getResultsOfALayer(this.baseurl + "/" + layer); + WrapperRobotTestResult wrapper = new WrapperRobotTestResult(); + wrapper.setBlueprintLayer(BlueprintLayer.valueOf(layer.substring(0, 1).toUpperCase() + layer.substring(1))); + wrapper.setRobotTestResults(robotTestResults); + listOfwrappers.add(wrapper); + } + return listOfwrappers; + } + + private List getResultsOfALayer(String resultsUrl) + throws ClientHandlerException, UniformInterfaceException, JsonParseException, JsonMappingException, + IOException, KeyManagementException, NoSuchAlgorithmException { + List robotTestResults = new ArrayList(); + LOGGER.info(EELFLoggerDelegate.applicationLogger, "Trying to get Robot Test Results"); + setProperties(); + WebResource webResource = this.client.resource(resultsUrl + "/"); + LOGGER.debug(EELFLoggerDelegate.debugLogger, "Request URI of get: " + webResource.getURI().toString()); + ClientResponse response = webResource.get(ClientResponse.class); + if (response.getStatus() != 200) { + throw new HttpException("Could not retrieve robot test results from Nexus. HTTP error code : " + + response.getStatus() + " and message: " + response.getEntity(String.class)); + } + Document document = Jsoup.parse(response.getEntity(String.class)); + List elements = document.getElementsByTag("body").get(0).getElementsByTag("table").get(0) + .getElementsByTag("tbody").get(0).getElementsByTag("tr"); + for (int i = 2; i < elements.size(); i++) { + String testSuiteName = elements.get(i).getElementsByTag("td").get(0).getElementsByTag("a").get(0).text(); + testSuiteName = testSuiteName.substring(0, testSuiteName.length() - 1); + webResource = this.client.resource(resultsUrl + "/" + testSuiteName + "/output.xml"); + LOGGER.debug(EELFLoggerDelegate.debugLogger, "Request URI of get: " + webResource.getURI().toString()); response = webResource.get(ClientResponse.class); if (response.getStatus() != 200) { throw new HttpException("Could not retrieve robot test result from Nexus. HTTP error code : " @@ -147,7 +179,7 @@ public final class NexusExecutorClient { ObjectMapper mapper = new ObjectMapper(); mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES); RobotTestResult robotTestResult = mapper.readValue(xmlJSONObj.toString(), RobotTestResult.class); - robotTestResult.setName(resultName); + robotTestResult.setName(testSuiteName); robotTestResults.add(robotTestResult); } return robotTestResults; diff --git a/ui/src/main/java/org/akraino/validation/ui/client/nexus/resources/WrapperRobotTestResult.java b/ui/src/main/java/org/akraino/validation/ui/client/nexus/resources/WrapperRobotTestResult.java new file mode 100644 index 0000000..30e6721 --- /dev/null +++ b/ui/src/main/java/org/akraino/validation/ui/client/nexus/resources/WrapperRobotTestResult.java @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. You may obtain + * a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied. See the License for the specific language governing + * permissions and limitations under the License. + */ +package org.akraino.validation.ui.client.nexus.resources; + +import java.util.List; + +import org.akraino.validation.ui.data.BlueprintLayer; + +public class WrapperRobotTestResult { + + private BlueprintLayer layer; + + private List testResults; + + public WrapperRobotTestResult() { + + } + + public BlueprintLayer getBlueprintLayer() { + return this.layer; + } + + public void setBlueprintLayer(BlueprintLayer layer) { + this.layer = layer; + } + + public List getRobotTestResults() { + return this.testResults; + } + + public void setRobotTestResults(List testResults) { + this.testResults = testResults; + } + +} diff --git a/ui/src/main/java/org/akraino/validation/ui/common/PropertyUtil.java b/ui/src/main/java/org/akraino/validation/ui/common/PropertyUtil.java deleted file mode 100644 index d0e46b2..0000000 --- a/ui/src/main/java/org/akraino/validation/ui/common/PropertyUtil.java +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.akraino.validation.ui.common; - -import java.io.IOException; -import java.io.InputStream; -import java.util.Properties; - -import org.akraino.validation.ui.config.AppConfig; -import org.apache.log4j.Logger; - -public class PropertyUtil { - private static final Logger LOGGER = Logger.getLogger(PropertyUtil.class); - private static final String PROP_FILENAME = "app.properties"; - private static PropertyUtil instance; - - private Properties appProps; - - /** - * Return the single instance of this object in the app. - * - * @return the singleton - */ - public static synchronized PropertyUtil getInstance() { - if (instance == null) { - instance = new PropertyUtil(); - } - return instance; - } - - private PropertyUtil() { - InputStream input = AppConfig.class.getClassLoader().getResourceAsStream(PROP_FILENAME); - appProps = new Properties(); - try { - appProps.load(input); - } catch (IOException e) { - LOGGER.error("Error loading properties file: " + PROP_FILENAME); - } finally { - try { - input.close(); - } catch (IOException e) { - // ignore - } - } - } - - /** - * Get a property from the PropertyUtil object. If the environment variable $IP is set, then any URL's referring to - * localhost will be rewritten to use this IP address instead. - * - * @param key the key to use to find the property - * @return the value - */ - public String getProperty(String key) { - String property = appProps.getProperty(key); - if (property != null && property.indexOf("://localhost:") > 0) { - String ipAddr = System.getenv().get("IP"); - if (ipAddr != null && !"".contentEquals(ipAddr)) { - property = property.replaceAll("://localhost:", "://" + ipAddr + ":"); - } - } - return property; - } -} diff --git a/ui/src/main/java/org/akraino/validation/ui/common/SessionManagerFilter.java b/ui/src/main/java/org/akraino/validation/ui/common/SessionManagerFilter.java deleted file mode 100644 index e0ddd91..0000000 --- a/ui/src/main/java/org/akraino/validation/ui/common/SessionManagerFilter.java +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.akraino.validation.ui.common; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.apache.log4j.Logger; -import org.springframework.web.servlet.HandlerInterceptor; -import org.springframework.web.servlet.ModelAndView; - -public class SessionManagerFilter implements HandlerInterceptor { - - private static final Logger LOGGER = Logger.getLogger(SessionManagerFilter.class); - - @Override - public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3) - throws Exception { - - LOGGER.info("user authenticated"); - - } - - @Override - public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3) - throws Exception { - - LOGGER.info("user authenticated"); - - } - - @Override - public boolean preHandle(HttpServletRequest req, HttpServletResponse res, Object data) throws Exception { - - try { - return true; - /* - * if (StringUtil.notEmpty(req.getHeader("tokenId"))) { - * - * String clientToken = req.getHeader("tokenId"); - * - * AccessService service = new AccessService(); - * - * UserSession user = service.getUserSession(LoginUtil.decode(LoginUtil.getUserName(clientToken))); - * - * if (user.getTokenId()!= null && !sessionExpired(user)) { - * - * if (user.getTokenId().equals(LoginUtil.getPassword(clientToken))) { // user authorized return true; - * - * } else { // unauthorized access res.sendError(401); } } else { // session does not exist/expired, - * temporary re-direct, ask user to re-login res.sendError(307); } - * - * } else { // bad request, no authToken sent in the request res.sendError(400); } - */ - } catch (Exception e) { - LOGGER.error(e); - } - - - return false; - } - - -} diff --git a/ui/src/main/java/org/akraino/validation/ui/conf/ExternalAppConfig.java b/ui/src/main/java/org/akraino/validation/ui/conf/ExternalAppConfig.java new file mode 100644 index 0000000..bb139f6 --- /dev/null +++ b/ui/src/main/java/org/akraino/validation/ui/conf/ExternalAppConfig.java @@ -0,0 +1,260 @@ +/* + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. You may obtain + * a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied. See the License for the specific language governing + * permissions and limitations under the License. + */ +package org.akraino.validation.ui.conf; + +import java.util.ArrayList; +import java.util.List; + +import javax.sql.DataSource; + +import org.akraino.validation.ui.login.LoginStrategyImpl; +import org.akraino.validation.ui.scheduler.RegistryAdapter; +import org.onap.portalapp.music.conf.MusicSessionConfig; +import org.onap.portalsdk.core.auth.LoginStrategy; +import org.onap.portalsdk.core.conf.AppConfig; +import org.onap.portalsdk.core.conf.Configurable; +import org.onap.portalsdk.core.logging.format.AlarmSeverityEnum; +import org.onap.portalsdk.core.logging.format.AppMessagesEnum; +import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate; +import org.onap.portalsdk.core.objectcache.AbstractCacheManager; +import org.onap.portalsdk.core.onboarding.util.CipherUtil; +import org.onap.portalsdk.core.service.DataAccessService; +import org.onap.portalsdk.core.util.CacheManager; +import org.onap.portalsdk.core.util.SystemProperties; +import org.onap.portalsdk.core.web.support.UserUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; +import org.springframework.context.annotation.Profile; +import org.springframework.context.annotation.PropertySource; +import org.springframework.scheduling.annotation.EnableAsync; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.quartz.SchedulerFactoryBean; +import org.springframework.web.servlet.ViewResolver; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; +import org.springframework.web.servlet.config.annotation.InterceptorRegistry; +import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; + +import com.mchange.v2.c3p0.ComboPooledDataSource; + +@Configuration +@EnableWebMvc +@ComponentScan(basePackages = {"org.akraino", "org.onap"}) +@PropertySource(value = {"${container.classpath:}/WEB-INF/conf/app/test.properties"}, ignoreResourceNotFound = true) +@Profile("src") +@EnableAsync +@EnableScheduling +@Import({MusicSessionConfig.class}) +public class ExternalAppConfig extends AppConfig implements Configurable { + + private RegistryAdapter schedulerRegistryAdapter; + private static final EELFLoggerDelegate LOGGER = EELFLoggerDelegate.getLogger(ExternalAppConfig.class); + + @Configuration + @Import(SystemProperties.class) + static class InnerConfiguration { + } + + /** + * @see org.onap.portalsdk.core.conf.AppConfig#viewResolver() + */ + @Override + public ViewResolver viewResolver() { + return super.viewResolver(); + } + + /** + * @see org.onap.portalsdk.core.conf.AppConfig#addResourceHandlers(ResourceHandlerRegistry) + * + * @param registry + */ + @Override + public void addResourceHandlers(ResourceHandlerRegistry registry) { + super.addResourceHandlers(registry); + } + + /** + * @see org.onap.portalsdk.core.conf.AppConfig#dataAccessService() + */ + @Override + public DataAccessService dataAccessService() { + return super.dataAccessService(); + } + + /** + * + * Creates the Application Data Source. + * + * @return DataSource Object + * @throws Exception on failure to create data source object + */ + @Override + @Bean + public DataSource dataSource() throws Exception { + + systemProperties(); + + ComboPooledDataSource dataSource = new ComboPooledDataSource(); + try { + dataSource.setDriverClass(SystemProperties.getProperty(SystemProperties.DB_DRIVER)); + dataSource.setJdbcUrl("jdbc:mariadb://" + System.getenv("DB_CONNECTION_URL")); + dataSource.setUser(SystemProperties.getProperty(SystemProperties.DB_USERNAME)); + String password = System.getenv("MARIADB_ROOT_PASSWORD"); + if (SystemProperties.containsProperty(SystemProperties.DB_ENCRYPT_FLAG)) { + String encryptFlag = SystemProperties.getProperty(SystemProperties.DB_ENCRYPT_FLAG); + if (encryptFlag != null && encryptFlag.equalsIgnoreCase("true")) { + password = CipherUtil.decrypt(password); + } + } + dataSource.setPassword(password); + dataSource + .setMinPoolSize(Integer.parseInt(SystemProperties.getProperty(SystemProperties.DB_MIN_POOL_SIZE))); + dataSource + .setMaxPoolSize(Integer.parseInt(SystemProperties.getProperty(SystemProperties.DB_MAX_POOL_SIZE))); + dataSource.setIdleConnectionTestPeriod( + Integer.parseInt(SystemProperties.getProperty(SystemProperties.IDLE_CONNECTION_TEST_PERIOD))); + dataSource.setTestConnectionOnCheckout(getConnectionOnCheckout()); + dataSource.setPreferredTestQuery(getPreferredTestQuery()); + } catch (Exception e) { + LOGGER.error(EELFLoggerDelegate.errorLogger, + "Error initializing database, verify database settings in properties file: " + + UserUtils.getStackTrace(e), + AlarmSeverityEnum.CRITICAL); + LOGGER.error(EELFLoggerDelegate.debugLogger, + "Error initializing database, verify database settings in properties file: " + + UserUtils.getStackTrace(e), + AlarmSeverityEnum.CRITICAL); + // Raise an alarm that opening a connection to the database failed. + LOGGER.logEcompError(AppMessagesEnum.BeDaoSystemError); + throw e; + } + return dataSource; + } + + /** + * Creates a new list with a single entry that is the external app + * definitions.xml path. + * + * @return List of String, size 1 + */ + @Override + public List addTileDefinitions() { + List definitions = new ArrayList<>(); + definitions.add("/WEB-INF/defs/definitions.xml"); + return definitions; + } + + /** + * Adds request interceptors to the specified registry by calling + * {@link AppConfig#addInterceptors(InterceptorRegistry)}, but excludes + * certain paths from the session timeout interceptor. + */ + @Override + public void addInterceptors(InterceptorRegistry registry) { + super.setExcludeUrlPathsForSessionTimeout("/login_external", "*/login_external.htm", "login", "/login.htm", + "/api*", "/single_signon.htm", "/single_signon"); + super.addInterceptors(registry); + } + + /** + * Creates and returns a new instance of a {@link CacheManager} class. + * + * @return New instance of {@link CacheManager} + */ + @Bean + public AbstractCacheManager cacheManager() { + return new CacheManager(); + } + + /** + * Creates and returns a new instance of a {@link SchedulerFactoryBean} + * and populates it with triggers. + * + * @return New instance of {@link SchedulerFactoryBean} + * @throws Exception + */ + // @Bean // ANNOTATION COMMENTED OUT + // APPLICATIONS REQUIRING QUARTZ SHOULD RESTORE ANNOTATION + public SchedulerFactoryBean schedulerFactoryBean() throws Exception { + SchedulerFactoryBean scheduler = new SchedulerFactoryBean(); + scheduler.setTriggers(schedulerRegistryAdapter.getTriggers()); + scheduler.setConfigLocation(appApplicationContext.getResource("WEB-INF/conf/quartz.properties")); + scheduler.setDataSource(dataSource()); + return scheduler; + } + + /** + * Sets the scheduler registry adapter. + * + * @param schedulerRegistryAdapter + */ + @Autowired + public void setSchedulerRegistryAdapter(final RegistryAdapter schedulerRegistryAdapter) { + this.schedulerRegistryAdapter = schedulerRegistryAdapter; + } + + @Bean + public LoginStrategy loginStrategy() { + return new LoginStrategyImpl(); + } + + /** + * Gets the value of the property + * {@link SystemProperties#PREFERRED_TEST_QUERY}; defaults to "Select 1" + * if the property is not defined. + * + * @return String value that is a SQL query + */ + private String getPreferredTestQuery() { + // Use simple default + String preferredTestQueryStr = "SELECT 1"; + if (SystemProperties.containsProperty(SystemProperties.PREFERRED_TEST_QUERY)) { + preferredTestQueryStr = SystemProperties.getProperty(SystemProperties.PREFERRED_TEST_QUERY); + LOGGER.debug(EELFLoggerDelegate.debugLogger, "getPreferredTestQuery: property key {} value is {}", + SystemProperties.PREFERRED_TEST_QUERY, preferredTestQueryStr); + } else { + LOGGER.info(EELFLoggerDelegate.errorLogger, + "getPreferredTestQuery: property key {} not found, using default value {}", + SystemProperties.PREFERRED_TEST_QUERY, preferredTestQueryStr); + } + return preferredTestQueryStr; + } + + /** + * Gets the value of the property + * {@link SystemProperties#TEST_CONNECTION_ON_CHECKOUT}; defaults to true + * if the property is not defined. + * + * @return Boolean value + */ + private Boolean getConnectionOnCheckout() { + // Default to true, always test connection + boolean testConnectionOnCheckout = true; + if (SystemProperties.containsProperty(SystemProperties.TEST_CONNECTION_ON_CHECKOUT)) { + testConnectionOnCheckout = + Boolean.valueOf(SystemProperties.getProperty(SystemProperties.TEST_CONNECTION_ON_CHECKOUT)); + LOGGER.debug(EELFLoggerDelegate.debugLogger, "getConnectionOnCheckout: property key {} value is {}", + SystemProperties.TEST_CONNECTION_ON_CHECKOUT, testConnectionOnCheckout); + } else { + LOGGER.info(EELFLoggerDelegate.errorLogger, + "getConnectionOnCheckout: property key {} not found, using default value {}", + SystemProperties.TEST_CONNECTION_ON_CHECKOUT, testConnectionOnCheckout); + } + return testConnectionOnCheckout; + } +} diff --git a/ui/src/main/java/org/akraino/validation/ui/conf/ExternalAppInitializer.java b/ui/src/main/java/org/akraino/validation/ui/conf/ExternalAppInitializer.java new file mode 100644 index 0000000..c50d1b3 --- /dev/null +++ b/ui/src/main/java/org/akraino/validation/ui/conf/ExternalAppInitializer.java @@ -0,0 +1,63 @@ +/* + * ============LICENSE_START========================================== + * ONAP Portal SDK + * =================================================================== + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * =================================================================== + * + * Unless otherwise specified, all software contained herein is licensed + * under the Apache License, Version 2.0 (the "License"); you may not use + * this software except in compliance with the License. You may obtain a + * copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied. See the License for the specific language governing + * permissions and limitations under the License. + * + * Unless otherwise specified, all documentation contained herein is + * licensed under the Creative Commons License, Attribution 4.0 Intl. (the + * "License"); you may not use this documentation except in compliance + * with the License. You may obtain a copy of the License at + * + * https://creativecommons.org/licenses/by/4.0/ + * + * Unless required by applicable law or agreed to in writing, + * documentation distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing + * permissions and limitations under the License. + * + * ============LICENSE_END============================================ + * + * + */ +package org.akraino.validation.ui.conf; + +import org.onap.portalsdk.core.conf.AppInitializer; + +public class ExternalAppInitializer extends AppInitializer { + + @Override + protected Class[] getRootConfigClasses() { + return super.getRootConfigClasses(); + } + + @Override + protected Class[] getServletConfigClasses() { + Class appConfigClass = ExternalAppConfig.class; + return new Class[] {appConfigClass}; + } + + /* + * URL request will direct to the Spring dispatcher for processing + */ + @Override + protected String[] getServletMappings() { + return super.getServletMappings(); + } + +} diff --git a/ui/src/main/java/org/akraino/validation/ui/conf/HibernateMappingLocations.java b/ui/src/main/java/org/akraino/validation/ui/conf/HibernateMappingLocations.java new file mode 100644 index 0000000..d14646f --- /dev/null +++ b/ui/src/main/java/org/akraino/validation/ui/conf/HibernateMappingLocations.java @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. You may obtain + * a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied. See the License for the specific language governing + * permissions and limitations under the License. + */ +package org.akraino.validation.ui.conf; + + +import org.onap.portalsdk.core.conf.HibernateMappingLocatable; +import org.springframework.context.annotation.Profile; +import org.springframework.core.io.ClassPathResource; +import org.springframework.core.io.Resource; +import org.springframework.stereotype.Component; + +@Component +@Profile("src") +public class HibernateMappingLocations implements HibernateMappingLocatable { + + @Override + public Resource[] getMappingLocations() { + return new Resource[] {new ClassPathResource("../fusion/orm/Fusion.hbm.xml"), + new ClassPathResource("../fusion/orm/Workflow.hbm.xml"), + new ClassPathResource("../fusion/orm/RNoteBookIntegration.hbm.xml"), + new ClassPathResource("../fusion/orm/Analytics.hbm.xml")}; + } + + @Override + public String[] getPackagesToScan() { + return new String[] {"org.onap", "org.akraino"}; + } + +} diff --git a/ui/src/main/java/org/akraino/validation/ui/config/AppInitializer.java b/ui/src/main/java/org/akraino/validation/ui/conf/UiUtils.java similarity index 55% rename from ui/src/main/java/org/akraino/validation/ui/config/AppInitializer.java rename to ui/src/main/java/org/akraino/validation/ui/conf/UiUtils.java index d79b2ae..7ef8234 100644 --- a/ui/src/main/java/org/akraino/validation/ui/config/AppInitializer.java +++ b/ui/src/main/java/org/akraino/validation/ui/conf/UiUtils.java @@ -1,19 +1,19 @@ /* * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. You may obtain + * a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied. See the License for the specific language governing + * permissions and limitations under the License. */ -package org.akraino.validation.ui.config; +package org.akraino.validation.ui.conf; import java.lang.reflect.Field; import java.util.Comparator; @@ -22,15 +22,7 @@ import java.util.concurrent.PriorityBlockingQueue; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; -import javax.servlet.ServletContext; -import javax.servlet.ServletException; -import javax.servlet.ServletRegistration; - -import org.springframework.web.WebApplicationInitializer; -import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; -import org.springframework.web.servlet.DispatcherServlet; - -public class AppInitializer implements WebApplicationInitializer { +public class UiUtils { private static final int QUEUE_CAPACITY = 500; private static final int EXECUTOR_SIZE = 20; // the number of threads to keep in the pool, even if @@ -43,29 +35,15 @@ public class AppInitializer implements WebApplicationInitializer { // terminating. private static final PriorityBlockingQueue BLOCKING_QUEUE = new PriorityBlockingQueue(QUEUE_CAPACITY, new CFRunnableComparator()); - public static ExecutorService executorService = new ThreadPoolExecutor(EXECUTOR_SIZE, - EXECUTOR_MAX_SIZE, KEEPALIVE_TIME, TimeUnit.SECONDS, BLOCKING_QUEUE); - - @Override - public void onStartup(ServletContext container) throws ServletException { - - AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext(); - ctx.register(AppConfig.class); - ctx.setServletContext(container); + public static ExecutorService executorService = + new ThreadPoolExecutor(EXECUTOR_SIZE, EXECUTOR_MAX_SIZE, KEEPALIVE_TIME, TimeUnit.SECONDS, BLOCKING_QUEUE); - ServletRegistration.Dynamic servlet = container.addServlet("dispatcher", new DispatcherServlet(ctx)); - - servlet.setLoadOnStartup(1); - servlet.addMapping("/"); - - } + public static final String NEXUS_URL = "https://nexus.akraino.org/content/sites/logs"; private static class CFRunnableComparator implements Comparator { @Override @SuppressWarnings("unchecked") public int compare(Runnable runnable1, Runnable runnable2) { - // T might be AsyncSupply, UniApply, etc., but we want to - // compare our original Runnables. return ((Comparable) unwrap(runnable1)).compareTo(unwrap(runnable2)); } @@ -73,8 +51,6 @@ public class AppInitializer implements WebApplicationInitializer { try { Field field = runnable.getClass().getDeclaredField("fn"); field.setAccessible(true); - // NB: For performance-intensive contexts, you may want to - // cache these in a ConcurrentHashMap, Field>. return field.get(runnable); } catch (IllegalAccessException | NoSuchFieldException e) { throw new IllegalArgumentException("Couldn't unwrap " + runnable, e); diff --git a/ui/src/main/java/org/akraino/validation/ui/config/AppConfig.java b/ui/src/main/java/org/akraino/validation/ui/config/AppConfig.java deleted file mode 100644 index 6d55d42..0000000 --- a/ui/src/main/java/org/akraino/validation/ui/config/AppConfig.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.akraino.validation.ui.config; - -import javax.sql.DataSource; - -import org.akraino.validation.ui.common.PropertyUtil; -import org.akraino.validation.ui.common.SessionManagerFilter; -import org.apache.commons.dbcp.BasicDataSource; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.ComponentScan; -import org.springframework.context.annotation.Configuration; -import org.springframework.web.multipart.commons.CommonsMultipartResolver; -import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer; -import org.springframework.web.servlet.config.annotation.EnableWebMvc; -import org.springframework.web.servlet.config.annotation.InterceptorRegistry; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; - -@Configuration -@EnableWebMvc -@ComponentScan(basePackages = "org.akraino.validation.ui") -public class AppConfig extends WebMvcConfigurerAdapter { - - @Bean - SessionManagerFilter getSessionManager() { - return new SessionManagerFilter(); - } - - @Override - public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { - configurer.enable(); - } - - @Override - public void addInterceptors(InterceptorRegistry registry) { - registry.addInterceptor(getSessionManager()).addPathPatterns("/**").excludePathPatterns("/login", "/logout"); - - } - - @Bean - public CommonsMultipartResolver multipartResolver() { - - CommonsMultipartResolver cmr = new CommonsMultipartResolver(); - cmr.setMaxUploadSize(1000000 * 2); - cmr.setMaxUploadSizePerFile(2000000); // bytes - return cmr; - - } - - @Bean(name = "dataSource") - public DataSource getDataSource() { - BasicDataSource dataSource = new BasicDataSource(); - dataSource.setDriverClassName("org.postgresql.Driver"); - dataSource.setUrl(PropertyUtil.getInstance().getProperty("postgres.db.url")); - dataSource.setUsername(PropertyUtil.getInstance().getProperty("postgres.db.user.name")); - dataSource.setPassword(System.getenv("postgres_db_user_pwd")); - - return dataSource; - } - -} diff --git a/ui/src/main/java/org/akraino/validation/ui/config/HibernateConfig.java b/ui/src/main/java/org/akraino/validation/ui/config/HibernateConfig.java deleted file mode 100644 index 03a91be..0000000 --- a/ui/src/main/java/org/akraino/validation/ui/config/HibernateConfig.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.akraino.validation.ui.config; - -import java.util.Properties; - -import javax.sql.DataSource; - -import org.hibernate.SessionFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.PropertySource; -import org.springframework.core.env.Environment; -import org.springframework.orm.hibernate5.HibernateTransactionManager; -import org.springframework.orm.hibernate5.LocalSessionFactoryBuilder; -import org.springframework.transaction.annotation.EnableTransactionManagement; - -@Configuration -@EnableTransactionManagement -@PropertySource(value = {"classpath:hibernate.properties"}) -public class HibernateConfig { - - @Autowired - private Environment env; - - @Autowired - @Bean(name = "sessionFactory") - public SessionFactory getSessionFactory(DataSource dataSource) { - LocalSessionFactoryBuilder sessionBuilder = new LocalSessionFactoryBuilder(dataSource); - - sessionBuilder.scanPackages("org.akraino.validation.ui.entity"); - sessionBuilder.addProperties(hibernateProperties()); - - return sessionBuilder.buildSessionFactory(); - - } - - @Autowired - @Bean(name = "transactionManager") - public HibernateTransactionManager getTransactionManager(SessionFactory sessionFactory) { - - return new HibernateTransactionManager(sessionFactory); - - } - - private Properties hibernateProperties() { - - Properties properties = new Properties(); - - properties.put("hibernate.dialect", env.getProperty("hibernate.dialect")); - properties.put("hibernate.show_sql", env.getProperty("hibernate.show_sql")); - properties.put("hibernate.c3p0.min_size", env.getProperty("hibernate.c3p0.min_size")); - properties.put("hibernate.c3p0.max_size", env.getProperty("hibernate.c3p0.max_size")); - properties.put("hibernate.c3p0.max_statements", env.getProperty("hibernate.c3p0.max_statements")); - properties.put("hibernate.c3p0.acquire_increment", env.getProperty("hibernate.c3p0.acquire_increment")); - properties.put("hibernate.jdbc.use_streams_for_binary", - env.getProperty("hibernate.jdbc.use_streams_for_binary")); - - return properties; - } -} diff --git a/ui/src/main/java/org/akraino/validation/ui/controller/BlueprintController.java b/ui/src/main/java/org/akraino/validation/ui/controller/BlueprintController.java index 22ae510..fdc6449 100644 --- a/ui/src/main/java/org/akraino/validation/ui/controller/BlueprintController.java +++ b/ui/src/main/java/org/akraino/validation/ui/controller/BlueprintController.java @@ -13,37 +13,44 @@ * implied. See the License for the specific language governing * permissions and limitations under the License. */ + package org.akraino.validation.ui.controller; import java.util.List; import org.akraino.validation.ui.entity.Blueprint; import org.akraino.validation.ui.service.BlueprintService; -import org.apache.log4j.Logger; +import org.onap.portalsdk.core.controller.RestrictedBaseController; +import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate; +import org.onap.portalsdk.core.web.support.UserUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.RequestMethod; -@RestController +@Controller @RequestMapping("/api/blueprint") -public class BlueprintController { +public class BlueprintController extends RestrictedBaseController { + + private static final EELFLoggerDelegate LOGGER = EELFLoggerDelegate.getLogger(BlueprintController.class); @Autowired BlueprintService service; - private static final Logger LOGGER = Logger.getLogger(BlueprintController.class); + public BlueprintController() { + super(); + } - @GetMapping("/") + @RequestMapping(value = {"/"}, method = RequestMethod.GET) public ResponseEntity> getBlueprints() { try { return new ResponseEntity<>(service.getBlueprints(), HttpStatus.OK); } catch (Exception e) { - LOGGER.error(e); + LOGGER.error(EELFLoggerDelegate.errorLogger, + "Error when trying to get blueprints. " + UserUtils.getStackTrace(e)); } return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null); } - } diff --git a/ui/src/main/java/org/akraino/validation/ui/controller/BlueprintInstanceController.java b/ui/src/main/java/org/akraino/validation/ui/controller/BlueprintInstanceController.java deleted file mode 100644 index 6acdba8..0000000 --- a/ui/src/main/java/org/akraino/validation/ui/controller/BlueprintInstanceController.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - * implied. See the License for the specific language governing - * permissions and limitations under the License. - */ -package org.akraino.validation.ui.controller; - -import java.util.List; - -import org.akraino.validation.ui.entity.BlueprintInstance; -import org.akraino.validation.ui.service.BlueprintInstanceService; -import org.apache.log4j.Logger; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -@RestController -@RequestMapping("/api/blueprintInstance") -public class BlueprintInstanceController { - - @Autowired - BlueprintInstanceService service; - - private static final Logger LOGGER = Logger.getLogger(BlueprintInstanceController.class); - - @GetMapping("/") - public ResponseEntity> getBlueprintInstances() { - try { - return new ResponseEntity<>(service.getBlueprintInstances(), HttpStatus.OK); - } catch (Exception e) { - LOGGER.error(e); - } - return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null); - } - -} diff --git a/ui/src/main/java/org/akraino/validation/ui/controller/BlueprintInstanceForValidationController.java b/ui/src/main/java/org/akraino/validation/ui/controller/BlueprintInstanceForValidationController.java new file mode 100644 index 0000000..749fb75 --- /dev/null +++ b/ui/src/main/java/org/akraino/validation/ui/controller/BlueprintInstanceForValidationController.java @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. You may obtain + * a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied. See the License for the specific language governing + * permissions and limitations under the License. + */ + +package org.akraino.validation.ui.controller; + +import java.util.List; + +import org.akraino.validation.ui.entity.BlueprintInstanceForValidation; +import org.akraino.validation.ui.service.BlueprintInstanceForValidationService; +import org.onap.portalsdk.core.controller.RestrictedBaseController; +import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate; +import org.onap.portalsdk.core.web.support.UserUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; + +@Controller +@RequestMapping("/api/blueprintInstanceForValidation") +public class BlueprintInstanceForValidationController extends RestrictedBaseController { + + private static final EELFLoggerDelegate LOGGER = + EELFLoggerDelegate.getLogger(BlueprintInstanceForValidationController.class); + + @Autowired + BlueprintInstanceForValidationService service; + + public BlueprintInstanceForValidationController() { + super(); + } + + @RequestMapping(value = {"/"}, method = RequestMethod.GET) + public ResponseEntity> getBlueprintInstancesForValidation() { + try { + return new ResponseEntity<>(service.getBlueprintInstancesForValidation(), HttpStatus.OK); + } catch (Exception e) { + LOGGER.error(EELFLoggerDelegate.errorLogger, + "Error when trying to get blueprint instances for validation. " + UserUtils.getStackTrace(e)); + } + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null); + } + +} diff --git a/ui/src/main/java/org/akraino/validation/ui/controller/JenkinsJobNotificationController.java b/ui/src/main/java/org/akraino/validation/ui/controller/JenkinsJobNotificationController.java index 1c0b3bc..79bedb1 100644 --- a/ui/src/main/java/org/akraino/validation/ui/controller/JenkinsJobNotificationController.java +++ b/ui/src/main/java/org/akraino/validation/ui/controller/JenkinsJobNotificationController.java @@ -1,47 +1,55 @@ /* * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. You may obtain + * a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied. See the License for the specific language governing + * permissions and limitations under the License. */ package org.akraino.validation.ui.controller; import org.akraino.validation.ui.data.JnksJobNotify; import org.akraino.validation.ui.service.JenkinsJobNotificationService; -import org.apache.log4j.Logger; +import org.onap.portalsdk.core.controller.RestrictedBaseController; +import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate; +import org.onap.portalsdk.core.web.support.UserUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.RequestMethod; -@RestController +@Controller @RequestMapping("/api/jenkinsJobNotification") -public class JenkinsJobNotificationController { +public class JenkinsJobNotificationController extends RestrictedBaseController { @Autowired JenkinsJobNotificationService service; - private static final Logger LOGGER = Logger.getLogger(JenkinsJobNotificationController.class); + private static final EELFLoggerDelegate LOGGER = + EELFLoggerDelegate.getLogger(JenkinsJobNotificationController.class); - @PostMapping("/") + public JenkinsJobNotificationController() { + super(); + } + + @RequestMapping(value = {"/"}, method = RequestMethod.POST) public ResponseEntity handle(@RequestBody JnksJobNotify jnksJobNotify) { try { service.handle(jnksJobNotify); return new ResponseEntity(HttpStatus.OK); } catch (Exception e) { - LOGGER.error(e); + LOGGER.error(EELFLoggerDelegate.errorLogger, + "Error when trying to process Jenkins notification. " + UserUtils.getStackTrace(e)); } return new ResponseEntity(HttpStatus.INTERNAL_SERVER_ERROR); } diff --git a/ui/src/main/java/org/akraino/validation/ui/controller/ModelsViewsController.java b/ui/src/main/java/org/akraino/validation/ui/controller/ModelsViewsController.java new file mode 100644 index 0000000..430f169 --- /dev/null +++ b/ui/src/main/java/org/akraino/validation/ui/controller/ModelsViewsController.java @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. You may obtain + * a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied. See the License for the specific language governing + * permissions and limitations under the License. + */ + +package org.akraino.validation.ui.controller; + +import javax.servlet.http.HttpServletRequest; + +import org.onap.portalsdk.core.controller.RestrictedBaseController; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.servlet.ModelAndView; + +@Controller +@RequestMapping("/") +public class ModelsViewsController extends RestrictedBaseController { + + public ModelsViewsController() { + super(); + } + + @RequestMapping(value = {"/newSubmission"}, method = RequestMethod.GET) + public ModelAndView newSubmission(HttpServletRequest request) { + final String defaultViewName = null; + return new ModelAndView(defaultViewName); + } + + @RequestMapping(value = {"/committedSubmissions"}, method = RequestMethod.GET) + public ModelAndView committedSubmissions(HttpServletRequest request) { + final String defaultViewName = null; + return new ModelAndView(defaultViewName); + } + + @RequestMapping(value = {"/getBySubmissionId"}, method = RequestMethod.GET) + public ModelAndView getBySubmissionId(HttpServletRequest request) { + final String defaultViewName = null; + return new ModelAndView(defaultViewName); + } +} diff --git a/ui/src/main/java/org/akraino/validation/ui/controller/OnapLoginController.java b/ui/src/main/java/org/akraino/validation/ui/controller/OnapLoginController.java new file mode 100644 index 0000000..09ee1a2 --- /dev/null +++ b/ui/src/main/java/org/akraino/validation/ui/controller/OnapLoginController.java @@ -0,0 +1,76 @@ +/* + * ============LICENSE_START========================================== + * ONAP Portal SDK + * =================================================================== + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * =================================================================== + * + * Unless otherwise specified, all software contained herein is licensed + * under the Apache License, Version 2.0 (the "License"); you may not use + * this software except in compliance with the License. You may obtain a + * copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied. See the License for the specific language governing + * permissions and limitations under the License. + * + * Unless otherwise specified, all documentation contained herein is + * licensed under the Creative Commons License, Attribution 4.0 Intl. (the + * "License"); you may not use this documentation except in compliance + * with the License. You may obtain a copy of the License at + * + * https://creativecommons.org/licenses/by/4.0/ + * + * Unless required by applicable law or agreed to in writing, + * documentation distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing + * permissions and limitations under the License. + * + * ============LICENSE_END============================================ + * + * + */ + +package org.akraino.validation.ui.controller; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.onap.portalsdk.core.auth.LoginStrategy; +import org.onap.portalsdk.core.controller.UnRestrictedBaseController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.servlet.ModelAndView; + +@Controller +@RequestMapping("/") +public class OnapLoginController extends UnRestrictedBaseController { + + @Autowired + private LoginStrategy loginStrategy; + + private String viewName; + + @Override + public String getViewName() { + return viewName; + } + + @Override + public void setViewName(String viewName) { + this.viewName = viewName; + } + + @RequestMapping(value = {"/do_login_external"}, method = RequestMethod.POST) + public ModelAndView doexternalLogin(HttpServletRequest request, HttpServletResponse response) throws Exception { + return loginStrategy.doLogin(request, response); + } + +} diff --git a/ui/src/main/java/org/akraino/validation/ui/controller/ResultsController.java b/ui/src/main/java/org/akraino/validation/ui/controller/ResultsController.java index 3013948..a4b460d 100644 --- a/ui/src/main/java/org/akraino/validation/ui/controller/ResultsController.java +++ b/ui/src/main/java/org/akraino/validation/ui/controller/ResultsController.java @@ -1,47 +1,55 @@ /* * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. You may obtain + * a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied. See the License for the specific language governing + * permissions and limitations under the License. */ package org.akraino.validation.ui.controller; import java.util.List; -import org.akraino.validation.ui.client.nexus.resources.RobotTestResult; +import org.akraino.validation.ui.client.nexus.resources.WrapperRobotTestResult; import org.akraino.validation.ui.service.ResultService; -import org.apache.log4j.Logger; +import org.onap.portalsdk.core.controller.RestrictedBaseController; +import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate; +import org.onap.portalsdk.core.web.support.UserUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.RequestMethod; -@RestController +@Controller @RequestMapping("/api/results") -public class ResultsController { +public class ResultsController extends RestrictedBaseController { - private static final Logger LOGGER = Logger.getLogger(ResultsController.class); + private static final EELFLoggerDelegate LOGGER = EELFLoggerDelegate.getLogger(ResultsController.class); @Autowired ResultService service; - @RequestMapping(value = "/findBySubmissionId/{id}") - public ResponseEntity> findByBlueprintId(@PathVariable("id") String submissionId) { + public ResultsController() { + super(); + } + + @RequestMapping(value = {"/getBySubmissionId/{id}"}, method = RequestMethod.GET) + public ResponseEntity> getByBlueprintId(@PathVariable("id") String submissionId) { try { return new ResponseEntity<>(service.getRobotTestResults(submissionId), HttpStatus.OK); } catch (Exception e) { - LOGGER.error(e); + LOGGER.error(EELFLoggerDelegate.errorLogger, + "Error when retrieving results. " + UserUtils.getStackTrace(e)); } return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null); } diff --git a/ui/src/main/java/org/akraino/validation/ui/controller/SubmissionController.java b/ui/src/main/java/org/akraino/validation/ui/controller/SubmissionController.java index ca78b0d..bb898a9 100644 --- a/ui/src/main/java/org/akraino/validation/ui/controller/SubmissionController.java +++ b/ui/src/main/java/org/akraino/validation/ui/controller/SubmissionController.java @@ -1,17 +1,17 @@ /* * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. You may obtain + * a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied. See the License for the specific language governing + * permissions and limitations under the License. */ package org.akraino.validation.ui.controller; @@ -19,55 +19,60 @@ import java.util.List; import org.akraino.validation.ui.entity.Submission; import org.akraino.validation.ui.service.SubmissionService; -import org.apache.log4j.Logger; +import org.onap.portalsdk.core.controller.RestrictedBaseController; +import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate; +import org.onap.portalsdk.core.web.support.UserUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.RequestMethod; -@RestController +@Controller @RequestMapping("/api/submission") -public class SubmissionController { +public class SubmissionController extends RestrictedBaseController { @Autowired SubmissionService service; - private static final Logger LOGGER = Logger.getLogger(SubmissionController.class); + private static final EELFLoggerDelegate LOGGER = EELFLoggerDelegate.getLogger(SubmissionController.class); - @GetMapping("/") + public SubmissionController() { + super(); + } + + @RequestMapping(value = {"/"}, method = RequestMethod.GET) public ResponseEntity> getSubmissions() { try { return new ResponseEntity<>(service.getSubmissions(), HttpStatus.OK); } catch (Exception e) { - LOGGER.error(e); + LOGGER.error(EELFLoggerDelegate.errorLogger, "Get of submissions failed. " + UserUtils.getStackTrace(e)); } return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null); } - @PostMapping("/") + @RequestMapping(value = {"/"}, method = RequestMethod.POST) public ResponseEntity postSubmission(@RequestBody Submission newSubmission) { try { - return new ResponseEntity<>(service.saveSubmission(newSubmission), HttpStatus.CREATED); + return new ResponseEntity<>(service.saveSubmission(newSubmission), HttpStatus.OK); } catch (Exception e) { - LOGGER.error(e); + LOGGER.error(EELFLoggerDelegate.errorLogger, "Post of submission failed. " + UserUtils.getStackTrace(e)); } return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null); } - @DeleteMapping("/") + @RequestMapping(value = {"/"}, method = RequestMethod.DELETE) public ResponseEntity deleteSubmission(@RequestBody Submission submission) { try { service.deleteSubmission(submission.getSubmissionId()); return new ResponseEntity<>(true, HttpStatus.OK); } catch (Exception e) { - LOGGER.error(e); + LOGGER.error(EELFLoggerDelegate.errorLogger, + "Deletion of submission failed. " + UserUtils.getStackTrace(e)); } - return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(false); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null); } } diff --git a/ui/src/main/java/org/akraino/validation/ui/controller/TimeSlotsController.java b/ui/src/main/java/org/akraino/validation/ui/controller/TimeslotsController.java similarity index 51% rename from ui/src/main/java/org/akraino/validation/ui/controller/TimeSlotsController.java rename to ui/src/main/java/org/akraino/validation/ui/controller/TimeslotsController.java index d6da8a9..0f4f8d1 100644 --- a/ui/src/main/java/org/akraino/validation/ui/controller/TimeSlotsController.java +++ b/ui/src/main/java/org/akraino/validation/ui/controller/TimeslotsController.java @@ -1,49 +1,56 @@ /* * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. You may obtain + * a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied. See the License for the specific language governing + * permissions and limitations under the License. */ + package org.akraino.validation.ui.controller; import java.util.List; import org.akraino.validation.ui.entity.Timeslot; import org.akraino.validation.ui.service.TimeslotService; -import org.apache.log4j.Logger; +import org.onap.portalsdk.core.controller.RestrictedBaseController; +import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate; +import org.onap.portalsdk.core.web.support.UserUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.RequestMethod; -@RestController +@Controller @RequestMapping("/api/timeslots") -public class TimeSlotsController { +public class TimeslotsController extends RestrictedBaseController { + + private static final EELFLoggerDelegate LOGGER = EELFLoggerDelegate.getLogger(TimeslotsController.class); @Autowired TimeslotService service; - private static final Logger LOGGER = Logger.getLogger(TimeSlotsController.class); + public TimeslotsController() { + super(); + } - @GetMapping("/") + @RequestMapping(value = {"/"}, method = RequestMethod.GET) public ResponseEntity> getTimeSlots() { try { return new ResponseEntity<>(service.getTimeslots(), HttpStatus.OK); } catch (Exception e) { - LOGGER.error(e); + LOGGER.error(EELFLoggerDelegate.errorLogger, + "Error occured when trying to retrieve timeslots. " + UserUtils.getStackTrace(e)); } return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null); } - } diff --git a/ui/src/main/java/org/akraino/validation/ui/dao/BlueprintInstanceForValidationDAO.java b/ui/src/main/java/org/akraino/validation/ui/dao/BlueprintInstanceForValidationDAO.java new file mode 100644 index 0000000..736d121 --- /dev/null +++ b/ui/src/main/java/org/akraino/validation/ui/dao/BlueprintInstanceForValidationDAO.java @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. You may obtain + * a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied. See the License for the specific language governing + * permissions and limitations under the License. + */ +package org.akraino.validation.ui.dao; + +import java.util.List; + +import org.akraino.validation.ui.entity.BlueprintInstanceForValidation; + +public interface BlueprintInstanceForValidationDAO { + + void saveOrUpdate(BlueprintInstanceForValidation blueprintInst); + + void merge(BlueprintInstanceForValidation blueprintInst); + + List getBlueprintInstancesForValidation(); + + BlueprintInstanceForValidation getBlueprintInstanceForValidation(Integer instId); + + void deleteBlueprintInstanceForValidation(BlueprintInstanceForValidation blueprintInst); + + void deleteAll(); + +} diff --git a/ui/src/main/java/org/akraino/validation/ui/dao/BlueprintInstanceDAO.java b/ui/src/main/java/org/akraino/validation/ui/dao/LabDAO.java similarity index 64% rename from ui/src/main/java/org/akraino/validation/ui/dao/BlueprintInstanceDAO.java rename to ui/src/main/java/org/akraino/validation/ui/dao/LabDAO.java index 5093681..918c73f 100644 --- a/ui/src/main/java/org/akraino/validation/ui/dao/BlueprintInstanceDAO.java +++ b/ui/src/main/java/org/akraino/validation/ui/dao/LabDAO.java @@ -17,19 +17,19 @@ package org.akraino.validation.ui.dao; import java.util.List; -import org.akraino.validation.ui.entity.BlueprintInstance; +import org.akraino.validation.ui.entity.LabInfo; -public interface BlueprintInstanceDAO { +public interface LabDAO { - void saveOrUpdate(BlueprintInstance blueprintInstance); + void saveOrUpdate(LabInfo lab); - void merge(BlueprintInstance blueprintInstance); + void merge(LabInfo lab); - List getBlueprintInstances(); + List getLabs(); - BlueprintInstance getBlueprintInstance(Integer instId); + LabInfo getLab(Integer labId); - void deleteBlueprintInstance(BlueprintInstance blueprintInstance); + void deleteLab(LabInfo lab); void deleteAll(); diff --git a/ui/src/main/java/org/akraino/validation/ui/dao/SiloDAO.java b/ui/src/main/java/org/akraino/validation/ui/dao/SiloDAO.java new file mode 100644 index 0000000..883fa82 --- /dev/null +++ b/ui/src/main/java/org/akraino/validation/ui/dao/SiloDAO.java @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. You may obtain + * a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied. See the License for the specific language governing + * permissions and limitations under the License. + */ +package org.akraino.validation.ui.dao; + +import java.util.List; + +import org.akraino.validation.ui.entity.LabSilo; + +public interface SiloDAO { + + void saveOrUpdate(LabSilo silo); + + void merge(LabSilo silo); + + List getSilos(); + + LabSilo getSilo(Integer siloId); + + void deleteSilo(LabSilo silo); + + void deleteAll(); + +} diff --git a/ui/src/main/java/org/akraino/validation/ui/dao/SubmissionDAO.java b/ui/src/main/java/org/akraino/validation/ui/dao/SubmissionDAO.java index fc5e84f..7e551d7 100644 --- a/ui/src/main/java/org/akraino/validation/ui/dao/SubmissionDAO.java +++ b/ui/src/main/java/org/akraino/validation/ui/dao/SubmissionDAO.java @@ -1,14 +1,17 @@ /* * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. You may obtain + * a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on - * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied. See the License for the specific language governing + * permissions and limitations under the License. */ package org.akraino.validation.ui.dao; diff --git a/ui/src/main/java/org/akraino/validation/ui/dao/TimeslotDAO.java b/ui/src/main/java/org/akraino/validation/ui/dao/TimeslotDAO.java index c4dbbe1..a62d3b1 100644 --- a/ui/src/main/java/org/akraino/validation/ui/dao/TimeslotDAO.java +++ b/ui/src/main/java/org/akraino/validation/ui/dao/TimeslotDAO.java @@ -1,17 +1,17 @@ /* * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. You may obtain + * a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied. See the License for the specific language governing + * permissions and limitations under the License. */ package org.akraino.validation.ui.dao; diff --git a/ui/src/main/java/org/akraino/validation/ui/daoimpl/BlueprintDAOImpl.java b/ui/src/main/java/org/akraino/validation/ui/daoimpl/BlueprintDAOImpl.java index 5466c13..771c327 100644 --- a/ui/src/main/java/org/akraino/validation/ui/daoimpl/BlueprintDAOImpl.java +++ b/ui/src/main/java/org/akraino/validation/ui/daoimpl/BlueprintDAOImpl.java @@ -1,40 +1,36 @@ /* * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. You may obtain + * a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied. See the License for the specific language governing + * permissions and limitations under the License. */ package org.akraino.validation.ui.daoimpl; import java.util.List; -import javax.persistence.EntityManager; -import javax.persistence.criteria.CriteriaBuilder; -import javax.persistence.criteria.CriteriaQuery; -import javax.persistence.criteria.Root; - import org.akraino.validation.ui.dao.BlueprintDAO; import org.akraino.validation.ui.entity.Blueprint; -import org.apache.log4j.Logger; +import org.hibernate.Criteria; import org.hibernate.Session; import org.hibernate.SessionFactory; -import org.hibernate.query.Query; +import org.hibernate.criterion.Restrictions; +import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; @Repository public class BlueprintDAOImpl implements BlueprintDAO { - private static final Logger LOGGER = Logger.getLogger(BlueprintDAOImpl.class); + private static final EELFLoggerDelegate LOGGER = EELFLoggerDelegate.getLogger(BlueprintDAOImpl.class); @Autowired private SessionFactory sessionFactory; @@ -45,54 +41,36 @@ public class BlueprintDAOImpl implements BlueprintDAO { @Override public List getBlueprints() { - - CriteriaBuilder builder = getSession().getCriteriaBuilder(); - CriteriaQuery criteria = builder.createQuery(Blueprint.class); - - Root root = criteria.from(Blueprint.class); - criteria.select(root); - - Query query = getSession().createQuery(criteria); - - return query.getResultList(); - + Criteria criteria = getSession().createCriteria(Blueprint.class); + return criteria.list(); } @Override public Blueprint getBlueprint(Integer blueprintId) { - - EntityManager entityManager = getSession().getEntityManagerFactory().createEntityManager(); - - return entityManager.find(Blueprint.class, blueprintId); + Criteria criteria = getSession().createCriteria(Blueprint.class); + criteria.add(Restrictions.eq("id", String.valueOf(blueprintId))); + return criteria.list() == null ? null : (Blueprint) criteria.list().get(0); } @Override public void saveOrUpdate(Blueprint blueprint) { getSession().saveOrUpdate(blueprint); - } @Override public void merge(Blueprint blueprint) { getSession().merge(blueprint); - } @Override public void deleteBlueprint(Blueprint blueprint) { getSession().delete(blueprint); - } @Override public void deleteAll() { - - Query query = getSession().createQuery("delete from Blueprint"); - - int result = query.executeUpdate(); - - if (result > 0) { - LOGGER.info("All blueprint entries are cleaned up"); + if (getSession().createQuery("delete from Blueprint").executeUpdate() > 0) { + LOGGER.info(EELFLoggerDelegate.applicationLogger, "All blueprint entries are cleaned up"); } } diff --git a/ui/src/main/java/org/akraino/validation/ui/daoimpl/BlueprintInstanceDAOImpl.java b/ui/src/main/java/org/akraino/validation/ui/daoimpl/BlueprintInstanceDAOImpl.java deleted file mode 100644 index 4bacb14..0000000 --- a/ui/src/main/java/org/akraino/validation/ui/daoimpl/BlueprintInstanceDAOImpl.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.akraino.validation.ui.daoimpl; - -import java.util.List; - -import javax.persistence.EntityManager; -import javax.persistence.criteria.CriteriaBuilder; -import javax.persistence.criteria.CriteriaQuery; -import javax.persistence.criteria.Root; - -import org.akraino.validation.ui.dao.BlueprintInstanceDAO; -import org.akraino.validation.ui.entity.BlueprintInstance; -import org.apache.log4j.Logger; -import org.hibernate.Session; -import org.hibernate.SessionFactory; -import org.hibernate.query.Query; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Repository; - -@Repository -public class BlueprintInstanceDAOImpl implements BlueprintInstanceDAO { - - private static final Logger LOGGER = Logger.getLogger(BlueprintInstanceDAOImpl.class); - - @Autowired - private SessionFactory sessionFactory; - - protected Session getSession() { - return sessionFactory.getCurrentSession(); - } - - @Override - public List getBlueprintInstances() { - - CriteriaBuilder builder = getSession().getCriteriaBuilder(); - CriteriaQuery criteria = builder.createQuery(BlueprintInstance.class); - - Root root = criteria.from(BlueprintInstance.class); - criteria.select(root); - - Query query = getSession().createQuery(criteria); - - return query.getResultList(); - - } - - @Override - public BlueprintInstance getBlueprintInstance(Integer instId) { - - EntityManager entityManager = getSession().getEntityManagerFactory().createEntityManager(); - - return entityManager.find(BlueprintInstance.class, instId); - } - - @Override - public void saveOrUpdate(BlueprintInstance blueprintInstance) { - getSession().saveOrUpdate(blueprintInstance); - - } - - @Override - public void merge(BlueprintInstance blueprintInstance) { - getSession().merge(blueprintInstance); - - } - - @Override - public void deleteBlueprintInstance(BlueprintInstance blueprintInstance) { - getSession().delete(blueprintInstance); - - } - - @Override - public void deleteAll() { - - Query query = getSession().createQuery("delete from BlueprintInstance"); - - int result = query.executeUpdate(); - - if (result > 0) { - LOGGER.info("All blueprint instance entries are cleaned up"); - } - } - -} diff --git a/ui/src/main/java/org/akraino/validation/ui/daoimpl/BlueprintInstanceForValidationDAOImpl.java b/ui/src/main/java/org/akraino/validation/ui/daoimpl/BlueprintInstanceForValidationDAOImpl.java new file mode 100644 index 0000000..7c51b69 --- /dev/null +++ b/ui/src/main/java/org/akraino/validation/ui/daoimpl/BlueprintInstanceForValidationDAOImpl.java @@ -0,0 +1,79 @@ +/* + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. You may obtain + * a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied. See the License for the specific language governing + * permissions and limitations under the License. + */ +package org.akraino.validation.ui.daoimpl; + +import java.util.List; + +import org.akraino.validation.ui.dao.BlueprintInstanceForValidationDAO; +import org.akraino.validation.ui.entity.BlueprintInstanceForValidation; +import org.hibernate.Criteria; +import org.hibernate.Session; +import org.hibernate.SessionFactory; +import org.hibernate.criterion.Restrictions; +import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Repository; + +@Repository +public class BlueprintInstanceForValidationDAOImpl implements BlueprintInstanceForValidationDAO { + + private static final EELFLoggerDelegate LOGGER = + EELFLoggerDelegate.getLogger(BlueprintInstanceForValidationDAOImpl.class); + + @Autowired + private SessionFactory sessionFactory; + + protected Session getSession() { + return sessionFactory.getCurrentSession(); + } + + @Override + public List getBlueprintInstancesForValidation() { + Criteria criteria = getSession().createCriteria(BlueprintInstanceForValidation.class); + return criteria.list(); + } + + @Override + public BlueprintInstanceForValidation getBlueprintInstanceForValidation(Integer instId) { + Criteria criteria = getSession().createCriteria(BlueprintInstanceForValidation.class); + criteria.add(Restrictions.eq("id", String.valueOf(instId))); + return criteria.list() == null ? null : (BlueprintInstanceForValidation) criteria.list().get(0); + } + + @Override + public void saveOrUpdate(BlueprintInstanceForValidation blueprintInst) { + getSession().saveOrUpdate(blueprintInst); + } + + @Override + public void merge(BlueprintInstanceForValidation blueprintInst) { + getSession().merge(blueprintInst); + } + + @Override + public void deleteBlueprintInstanceForValidation(BlueprintInstanceForValidation blueprintInst) { + getSession().delete(blueprintInst); + } + + @Override + public void deleteAll() { + if (getSession().createQuery("delete from BlueprintInstanceForValidation").executeUpdate() > 0) { + LOGGER.info(EELFLoggerDelegate.applicationLogger, + "All blueprint instances for validation entries are cleaned up"); + } + } + +} diff --git a/ui/src/main/java/org/akraino/validation/ui/daoimpl/LabDAOImpl.java b/ui/src/main/java/org/akraino/validation/ui/daoimpl/LabDAOImpl.java new file mode 100644 index 0000000..3a383da --- /dev/null +++ b/ui/src/main/java/org/akraino/validation/ui/daoimpl/LabDAOImpl.java @@ -0,0 +1,77 @@ +/* + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. You may obtain + * a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied. See the License for the specific language governing + * permissions and limitations under the License. + */ +package org.akraino.validation.ui.daoimpl; + +import java.util.List; + +import org.akraino.validation.ui.dao.LabDAO; +import org.akraino.validation.ui.entity.LabInfo; +import org.hibernate.Criteria; +import org.hibernate.Session; +import org.hibernate.SessionFactory; +import org.hibernate.criterion.Restrictions; +import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Repository; + +@Repository +public class LabDAOImpl implements LabDAO { + + private static final EELFLoggerDelegate LOGGER = EELFLoggerDelegate.getLogger(LabDAOImpl.class); + + @Autowired + private SessionFactory sessionFactory; + + protected Session getSession() { + return sessionFactory.getCurrentSession(); + } + + @Override + public List getLabs() { + Criteria criteria = getSession().createCriteria(LabInfo.class); + return criteria.list(); + } + + @Override + public LabInfo getLab(Integer labId) { + Criteria criteria = getSession().createCriteria(LabInfo.class); + criteria.add(Restrictions.eq("id", String.valueOf(labId))); + return criteria.list() == null ? null : (LabInfo) criteria.list().get(0); + } + + @Override + public void saveOrUpdate(LabInfo lab) { + getSession().saveOrUpdate(lab); + } + + @Override + public void merge(LabInfo lab) { + getSession().merge(lab); + } + + @Override + public void deleteLab(LabInfo lab) { + getSession().delete(lab); + } + + @Override + public void deleteAll() { + if (getSession().createQuery("delete from Lab").executeUpdate() > 0) { + LOGGER.info(EELFLoggerDelegate.applicationLogger, "All lab entries are cleaned up"); + } + } + +} diff --git a/ui/src/main/java/org/akraino/validation/ui/daoimpl/SiloDAOImpl.java b/ui/src/main/java/org/akraino/validation/ui/daoimpl/SiloDAOImpl.java new file mode 100644 index 0000000..3a347bd --- /dev/null +++ b/ui/src/main/java/org/akraino/validation/ui/daoimpl/SiloDAOImpl.java @@ -0,0 +1,77 @@ +/* + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. You may obtain + * a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied. See the License for the specific language governing + * permissions and limitations under the License. + */ +package org.akraino.validation.ui.daoimpl; + +import java.util.List; + +import org.akraino.validation.ui.dao.SiloDAO; +import org.akraino.validation.ui.entity.LabSilo; +import org.hibernate.Criteria; +import org.hibernate.Session; +import org.hibernate.SessionFactory; +import org.hibernate.criterion.Restrictions; +import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Repository; + +@Repository +public class SiloDAOImpl implements SiloDAO { + + private static final EELFLoggerDelegate LOGGER = EELFLoggerDelegate.getLogger(SiloDAOImpl.class); + + @Autowired + private SessionFactory sessionFactory; + + protected Session getSession() { + return sessionFactory.getCurrentSession(); + } + + @Override + public List getSilos() { + Criteria criteria = getSession().createCriteria(LabSilo.class); + return criteria.list(); + } + + @Override + public LabSilo getSilo(Integer siloId) { + Criteria criteria = getSession().createCriteria(LabSilo.class); + criteria.add(Restrictions.eq("id", String.valueOf(siloId))); + return criteria.list() == null ? null : (LabSilo) criteria.list().get(0); + } + + @Override + public void saveOrUpdate(LabSilo silo) { + getSession().saveOrUpdate(silo); + } + + @Override + public void merge(LabSilo silo) { + getSession().merge(silo); + } + + @Override + public void deleteSilo(LabSilo silo) { + getSession().delete(silo); + } + + @Override + public void deleteAll() { + if (getSession().createQuery("delete from Silo").executeUpdate() > 0) { + LOGGER.info(EELFLoggerDelegate.applicationLogger, "All silo entries are cleaned up"); + } + } + +} diff --git a/ui/src/main/java/org/akraino/validation/ui/daoimpl/SubmissionDAOImpl.java b/ui/src/main/java/org/akraino/validation/ui/daoimpl/SubmissionDAOImpl.java index fd4da86..7edab42 100644 --- a/ui/src/main/java/org/akraino/validation/ui/daoimpl/SubmissionDAOImpl.java +++ b/ui/src/main/java/org/akraino/validation/ui/daoimpl/SubmissionDAOImpl.java @@ -1,40 +1,36 @@ /* * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. You may obtain + * a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied. See the License for the specific language governing + * permissions and limitations under the License. */ package org.akraino.validation.ui.daoimpl; import java.util.List; -import javax.persistence.EntityManager; -import javax.persistence.criteria.CriteriaBuilder; -import javax.persistence.criteria.CriteriaQuery; -import javax.persistence.criteria.Root; - import org.akraino.validation.ui.dao.SubmissionDAO; import org.akraino.validation.ui.entity.Submission; -import org.apache.log4j.Logger; +import org.hibernate.Criteria; import org.hibernate.Session; import org.hibernate.SessionFactory; -import org.hibernate.query.Query; +import org.hibernate.criterion.Restrictions; +import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; @Repository public class SubmissionDAOImpl implements SubmissionDAO { - private static final Logger LOGGER = Logger.getLogger(SubmissionDAOImpl.class); + private static final EELFLoggerDelegate LOGGER = EELFLoggerDelegate.getLogger(SubmissionDAOImpl.class); @Autowired private SessionFactory sessionFactory; @@ -45,43 +41,30 @@ public class SubmissionDAOImpl implements SubmissionDAO { @Override public List getSubmissions() { - - CriteriaBuilder builder = getSession().getCriteriaBuilder(); - CriteriaQuery criteria = builder.createQuery(Submission.class); - - Root root = criteria.from(Submission.class); - criteria.select(root); - - Query query = getSession().createQuery(criteria); - - return query.getResultList(); - + Criteria criteria = getSession().createCriteria(Submission.class); + return criteria.list(); } @Override public Submission getSubmission(Integer submissionId) { - - EntityManager entityManager = getSession().getEntityManagerFactory().createEntityManager(); - - return entityManager.find(Submission.class, submissionId); + Criteria criteria = getSession().createCriteria(Submission.class); + criteria.add(Restrictions.eq("id", submissionId)); + return criteria.list() == null || criteria.list().size() < 1 ? null : (Submission) criteria.list().get(0); } @Override public void saveOrUpdate(Submission submission) { getSession().saveOrUpdate(submission); - } @Override public void merge(Submission submission) { getSession().merge(submission); - } @Override public void deleteSubmission(Submission submission) { getSession().delete(submission); - } @Override @@ -91,13 +74,8 @@ public class SubmissionDAOImpl implements SubmissionDAO { @Override public void deleteAll() { - - Query query = getSession().createQuery("delete from Submission"); - - int result = query.executeUpdate(); - - if (result > 0) { - LOGGER.info("All submission entries are cleaned up"); + if (getSession().createQuery("delete from Submission").executeUpdate() > 0) { + LOGGER.info(EELFLoggerDelegate.applicationLogger, "All submission entries are cleaned up"); } } diff --git a/ui/src/main/java/org/akraino/validation/ui/daoimpl/TimeslotDAOImpl.java b/ui/src/main/java/org/akraino/validation/ui/daoimpl/TimeslotDAOImpl.java index e49c37a..a6cd925 100644 --- a/ui/src/main/java/org/akraino/validation/ui/daoimpl/TimeslotDAOImpl.java +++ b/ui/src/main/java/org/akraino/validation/ui/daoimpl/TimeslotDAOImpl.java @@ -1,40 +1,36 @@ /* * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. You may obtain + * a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied. See the License for the specific language governing + * permissions and limitations under the License. */ package org.akraino.validation.ui.daoimpl; import java.util.List; -import javax.persistence.EntityManager; -import javax.persistence.criteria.CriteriaBuilder; -import javax.persistence.criteria.CriteriaQuery; -import javax.persistence.criteria.Root; - import org.akraino.validation.ui.dao.TimeslotDAO; import org.akraino.validation.ui.entity.Timeslot; -import org.apache.log4j.Logger; +import org.hibernate.Criteria; import org.hibernate.Session; import org.hibernate.SessionFactory; -import org.hibernate.query.Query; +import org.hibernate.criterion.Restrictions; +import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; @Repository public class TimeslotDAOImpl implements TimeslotDAO { - private static final Logger LOGGER = Logger.getLogger(TimeslotDAOImpl.class); + private static final EELFLoggerDelegate LOGGER = EELFLoggerDelegate.getLogger(TimeslotDAOImpl.class); @Autowired private SessionFactory sessionFactory; @@ -45,54 +41,36 @@ public class TimeslotDAOImpl implements TimeslotDAO { @Override public List getTimeslots() { - - CriteriaBuilder builder = getSession().getCriteriaBuilder(); - CriteriaQuery criteria = builder.createQuery(Timeslot.class); - - Root root = criteria.from(Timeslot.class); - criteria.select(root); - - Query query = getSession().createQuery(criteria); - - return query.getResultList(); - + Criteria criteria = getSession().createCriteria(Timeslot.class); + return criteria.list(); } @Override public Timeslot getTimeslot(Integer timeslotId) { - - EntityManager entityManager = getSession().getEntityManagerFactory().createEntityManager(); - - return entityManager.find(Timeslot.class, timeslotId); + Criteria criteria = getSession().createCriteria(Timeslot.class); + criteria.add(Restrictions.eq("id", String.valueOf(timeslotId))); + return criteria.list() == null ? null : (Timeslot) criteria.list().get(0); } @Override public void saveOrUpdate(Timeslot timeslot) { getSession().saveOrUpdate(timeslot); - } @Override public void merge(Timeslot timeslot) { getSession().merge(timeslot); - } @Override public void deleteTimeslot(Timeslot timeslot) { getSession().delete(timeslot); - } @Override public void deleteAll() { - - Query query = getSession().createQuery("delete from Timeslot"); - - int result = query.executeUpdate(); - - if (result > 0) { - LOGGER.info("All timeslot entries are cleaned up"); + if (getSession().createQuery("delete from Timeslot").executeUpdate() > 0) { + LOGGER.info(EELFLoggerDelegate.applicationLogger, "All timeslot entries are cleaned up"); } } diff --git a/ui/src/main/java/org/akraino/validation/ui/data/BlueprintLayer.java b/ui/src/main/java/org/akraino/validation/ui/data/BlueprintLayer.java index 75278c2..9c57c04 100644 --- a/ui/src/main/java/org/akraino/validation/ui/data/BlueprintLayer.java +++ b/ui/src/main/java/org/akraino/validation/ui/data/BlueprintLayer.java @@ -16,5 +16,5 @@ package org.akraino.validation.ui.data; public enum BlueprintLayer { - Hardware, OS, K8s, Kubeless, OpenStack, VNF, Application + Hardware, Os, K8s, Kubeless, OpenStack, VNF, Application, All } diff --git a/ui/src/main/java/org/akraino/validation/ui/entity/Blueprint.java b/ui/src/main/java/org/akraino/validation/ui/entity/Blueprint.java index 05a27cc..262eecd 100644 --- a/ui/src/main/java/org/akraino/validation/ui/entity/Blueprint.java +++ b/ui/src/main/java/org/akraino/validation/ui/entity/Blueprint.java @@ -22,11 +22,10 @@ import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; -import javax.persistence.SequenceGenerator; import javax.persistence.Table; @Entity -@Table(name = "akraino.blueprint") +@Table(name = "blueprint") public class Blueprint implements Serializable { /** @@ -35,9 +34,8 @@ public class Blueprint implements Serializable { private static final long serialVersionUID = 1L; @Id - @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "blueprint_id_generator") - @SequenceGenerator(name = "blueprint_id_generator", sequenceName = "akraino.seq_blueprint", allocationSize = 1) - @Column(name = "blueprint_id") + @GeneratedValue(strategy=GenerationType.IDENTITY) + @Column(name = "id") private int blueprintId; @Column(name = "blueprint_name") diff --git a/ui/src/main/java/org/akraino/validation/ui/entity/BlueprintInstance.java b/ui/src/main/java/org/akraino/validation/ui/entity/BlueprintInstanceForValidation.java similarity index 76% rename from ui/src/main/java/org/akraino/validation/ui/entity/BlueprintInstance.java rename to ui/src/main/java/org/akraino/validation/ui/entity/BlueprintInstanceForValidation.java index 93206db..1496e9e 100644 --- a/ui/src/main/java/org/akraino/validation/ui/entity/BlueprintInstance.java +++ b/ui/src/main/java/org/akraino/validation/ui/entity/BlueprintInstanceForValidation.java @@ -24,15 +24,13 @@ import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; -import javax.persistence.OneToOne; -import javax.persistence.SequenceGenerator; import javax.persistence.Table; import org.akraino.validation.ui.data.BlueprintLayer; @Entity -@Table(name = "akraino.blueprint_instance") -public class BlueprintInstance implements Serializable { +@Table(name = "blueprint_instance_for_validation") +public class BlueprintInstanceForValidation implements Serializable { /** * @@ -40,10 +38,8 @@ public class BlueprintInstance implements Serializable { private static final long serialVersionUID = 1L; @Id - @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "blueprint_instance_id_generator") - @SequenceGenerator(name = "blueprint_instance_id_generator", sequenceName = "akraino.seq_blueprint_instance", - allocationSize = 1) - @Column(name = "blueprint_instance_id") + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id") private int blueprintInstId; @ManyToOne @@ -59,10 +55,6 @@ public class BlueprintInstance implements Serializable { @Column(name = "layer_description") private String layerDescription; - @OneToOne - @JoinColumn(name = "timeslot_id") - private Timeslot timeslot; - public int getBlueprintInstanceId() { return blueprintInstId; } @@ -102,13 +94,4 @@ public class BlueprintInstance implements Serializable { public String getLayerDescription() { return layerDescription; } - - public void setTimeslot(Timeslot timeslot) { - this.timeslot = timeslot; - } - - public Timeslot getTimeslot() { - return this.timeslot; - } - } diff --git a/ui/src/main/java/org/akraino/validation/ui/entity/LabInfo.java b/ui/src/main/java/org/akraino/validation/ui/entity/LabInfo.java new file mode 100644 index 0000000..f046ce4 --- /dev/null +++ b/ui/src/main/java/org/akraino/validation/ui/entity/LabInfo.java @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. You may obtain + * a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied. See the License for the specific language governing + * permissions and limitations under the License. + */ +package org.akraino.validation.ui.entity; + +import java.io.Serializable; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; + +@Entity +@Table(name = "lab") +public class LabInfo implements Serializable { + + /** + * + */ + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id") + private int labId; + + @Column(name = "lab") + private org.akraino.validation.ui.data.Lab lab; + + public int getLabId() { + return labId; + } + + public void setLabId(int labId) { + this.labId = labId; + } + + public org.akraino.validation.ui.data.Lab getLab() { + return lab; + } + + public void setLab(org.akraino.validation.ui.data.Lab lab) { + this.lab = lab; + } +} diff --git a/ui/src/main/java/org/akraino/validation/ui/entity/LabSilo.java b/ui/src/main/java/org/akraino/validation/ui/entity/LabSilo.java new file mode 100644 index 0000000..cd72fc7 --- /dev/null +++ b/ui/src/main/java/org/akraino/validation/ui/entity/LabSilo.java @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. You may obtain + * a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied. See the License for the specific language governing + * permissions and limitations under the License. + */ +package org.akraino.validation.ui.entity; + +import java.io.Serializable; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.Table; + +@Entity +@Table(name = "silo") +public class LabSilo implements Serializable { + + /** + * + */ + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id") + private int siloId; + + @Column(name = "silo") + private String silo; + + @ManyToOne + @JoinColumn(name = "lab_id") + private LabInfo lab; + + public void setSiloId(int siloId) { + this.siloId = siloId; + } + + public int getSiloId() { + return siloId; + } + + public void setSilo(String silo) { + this.silo = silo; + } + + public String getSilo() { + return silo; + } + + public void setLab(LabInfo lab) { + this.lab = lab; + } + + public LabInfo getLab() { + return lab; + } +} diff --git a/ui/src/main/java/org/akraino/validation/ui/entity/Submission.java b/ui/src/main/java/org/akraino/validation/ui/entity/Submission.java index 1d5d157..797343f 100644 --- a/ui/src/main/java/org/akraino/validation/ui/entity/Submission.java +++ b/ui/src/main/java/org/akraino/validation/ui/entity/Submission.java @@ -15,6 +15,8 @@ */ package org.akraino.validation.ui.entity; +import java.io.Serializable; + import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; @@ -22,14 +24,13 @@ import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; -import javax.persistence.SequenceGenerator; import javax.persistence.Table; import org.akraino.validation.ui.data.SubmissionStatus; @Entity -@Table(name = "akraino.submission") -public class Submission { +@Table(name = "submission") +public class Submission implements Serializable { /** * @@ -37,9 +38,8 @@ public class Submission { private static final long serialVersionUID = 1L; @Id - @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "submission_id_generator") - @SequenceGenerator(name = "submission_id_generator", sequenceName = "akraino.seq_submission", allocationSize = 1) - @Column(name = "submission_id") + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id") private int submissionId; @Column(name = "status") @@ -52,8 +52,12 @@ public class Submission { private String nexusResultUrl; @ManyToOne - @JoinColumn(name = "blueprint_instance_id") - private BlueprintInstance blueprintInstance; + @JoinColumn(name = "blueprint_instance_for_validation_id") + private BlueprintInstanceForValidation blueprintInst; + + @ManyToOne + @JoinColumn(name = "timeslot_id") + private Timeslot timeslot; public void setSubmissionId(int submissionId) { this.submissionId = submissionId; @@ -87,12 +91,22 @@ public class Submission { this.nexusResultUrl = nexusResultUrl; } - public void setBlueprintInstance(BlueprintInstance blueprintInstance) { - this.blueprintInstance = blueprintInstance; + public void setBlueprintInstanceForValidation(BlueprintInstanceForValidation blueprintInst) { + this.blueprintInst = blueprintInst; } - public BlueprintInstance getBlueprintInstance() { - return this.blueprintInstance; + public BlueprintInstanceForValidation getBlueprintInstanceForValidation() { + return this.blueprintInst; } + + public void setTimeslot(Timeslot timeslot) { + this.timeslot = timeslot; + } + + public Timeslot getTimeslot() { + return this.timeslot; + } + + } diff --git a/ui/src/main/java/org/akraino/validation/ui/entity/Timeslot.java b/ui/src/main/java/org/akraino/validation/ui/entity/Timeslot.java index c53fa49..ee23efb 100644 --- a/ui/src/main/java/org/akraino/validation/ui/entity/Timeslot.java +++ b/ui/src/main/java/org/akraino/validation/ui/entity/Timeslot.java @@ -1,17 +1,17 @@ /* * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. You may obtain + * a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied. See the License for the specific language governing + * permissions and limitations under the License. */ package org.akraino.validation.ui.entity; @@ -22,13 +22,12 @@ import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; -import javax.persistence.SequenceGenerator; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; import javax.persistence.Table; -import org.akraino.validation.ui.data.Lab; - @Entity -@Table(name = "akraino.timeslot") +@Table(name = "timeslot") public class Timeslot implements Serializable { /** @@ -37,19 +36,19 @@ public class Timeslot implements Serializable { private static final long serialVersionUID = 1L; @Id - @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "timeslot_id_generator") - @SequenceGenerator(name = "timeslot_id_generator", sequenceName = "akraino.seq_timeslot", allocationSize = 1) - @Column(name = "timeslot_id") + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id") private int timeslotId; @Column(name = "start_date_time") private String startDateTime; @Column(name = "duration") - private int duration; + private String duration; - @Column(name = "lab") - private Lab lab; + @ManyToOne + @JoinColumn(name = "lab_id") + private LabInfo lab; public void setTimeslotId(int timeslotId) { this.timeslotId = timeslotId; @@ -67,19 +66,19 @@ public class Timeslot implements Serializable { return startDateTime; } - public void setDuration(int duration) { + public void setDuration(String duration) { this.duration = duration; } - public int getDuration() { + public String getDuration() { return duration; } - public void setLab(Lab lab) { + public void setLab(LabInfo lab) { this.lab = lab; } - public Lab getLab() { + public LabInfo getLab() { return lab; } } diff --git a/ui/src/main/java/org/akraino/validation/ui/filter/SecurityXssFilter.java b/ui/src/main/java/org/akraino/validation/ui/filter/SecurityXssFilter.java new file mode 100644 index 0000000..e9afd05 --- /dev/null +++ b/ui/src/main/java/org/akraino/validation/ui/filter/SecurityXssFilter.java @@ -0,0 +1,178 @@ +/*- + * ============LICENSE_START========================================== + * ONAP Portal + * =================================================================== + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * =================================================================== + * + * Unless otherwise specified, all software contained herein is licensed + * under the Apache License, Version 2.0 (the "License"); + * you may not use this software except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Unless otherwise specified, all documentation contained herein is licensed + * under the Creative Commons License, Attribution 4.0 Intl. (the "License"); + * you may not use this documentation except in compliance with the License. + * You may obtain a copy of the License at + * + * https://creativecommons.org/licenses/by/4.0/ + * + * Unless required by applicable law or agreed to in writing, documentation + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * ============LICENSE_END============================================ + * + * + */ +package org.akraino.validation.ui.filter; + +import java.io.BufferedReader; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStreamReader; +import java.nio.charset.StandardCharsets; +import java.util.Enumeration; +import java.util.HashMap; +import java.util.Map; + +import javax.servlet.FilterChain; +import javax.servlet.ReadListener; +import javax.servlet.ServletException; +import javax.servlet.ServletInputStream; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletRequestWrapper; +import javax.servlet.http.HttpServletResponse; + +import org.apache.commons.io.IOUtils; +import org.apache.commons.lang.StringUtils; +import org.apache.http.HttpStatus; +import org.onap.portalapp.util.SecurityXssValidator; +import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate; +import org.springframework.web.filter.OncePerRequestFilter; + +public class SecurityXssFilter extends OncePerRequestFilter { + + private static final EELFLoggerDelegate LOGGER = EELFLoggerDelegate.getLogger(SecurityXssFilter.class); + + private static final String APPLICATION_JSON = "application/json"; + + private static final String ERROR_BAD_REQUEST = "{\"error\":\"BAD_REQUEST\"}"; + + private SecurityXssValidator validator = SecurityXssValidator.getInstance(); + + public class RequestWrapper extends HttpServletRequestWrapper { + + private ByteArrayOutputStream cachedBytes; + + private Map parameter = new HashMap(); + + @SuppressWarnings("unchecked") + public RequestWrapper(HttpServletRequest request) { + super(request); + Enumeration parameterNames = request.getParameterNames(); + while (parameterNames.hasMoreElements()) { + String paramName = parameterNames.nextElement(); + String paramValue = request.getParameter(paramName); + parameter.put(paramName, paramValue); + } + } + + @Override + public String getParameter(String name) { + if (parameter != null) { + return (String) parameter.get(name); + } + return null; + } + + @Override + public ServletInputStream getInputStream() throws IOException { + if (cachedBytes == null) + cacheInputStream(); + + return new CachedServletInputStream(); + } + + @Override + public BufferedReader getReader() throws IOException { + return new BufferedReader(new InputStreamReader(getInputStream())); + } + + private void cacheInputStream() throws IOException { + cachedBytes = new ByteArrayOutputStream(); + IOUtils.copy(super.getInputStream(), cachedBytes); + } + + public class CachedServletInputStream extends ServletInputStream { + private ByteArrayInputStream input; + + public CachedServletInputStream() { + input = new ByteArrayInputStream(cachedBytes.toByteArray()); + } + + @Override + public int read() throws IOException { + return input.read(); + } + + @Override + public boolean isFinished() { + return false; + } + + @Override + public boolean isReady() { + return false; + } + + @Override + public void setReadListener(ReadListener readListener) { + + } + + } + } + + @Override + protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) + throws ServletException, IOException { + if (validateRequestType(request)) { + request = new RequestWrapper(request); + String requestData = IOUtils.toString(request.getInputStream(), StandardCharsets.UTF_8.toString()); + try { + if (StringUtils.isNotBlank(requestData) && validator.denyXSS(requestData)) { + response.setContentType(APPLICATION_JSON); + response.setStatus(HttpStatus.SC_BAD_REQUEST); + response.getWriter().write(ERROR_BAD_REQUEST); + throw new SecurityException(ERROR_BAD_REQUEST); + } + } catch (Exception e) { + LOGGER.error(EELFLoggerDelegate.errorLogger, "doFilterInternal() failed due to BAD_REQUEST", e); + response.getWriter().close(); + return; + } + filterChain.doFilter(request, response); + + } else { + filterChain.doFilter(request, response); + } + + } + + private boolean validateRequestType(HttpServletRequest request) { + return (request.getMethod().equalsIgnoreCase("POST") || request.getMethod().equalsIgnoreCase("PUT") + || request.getMethod().equalsIgnoreCase("DELETE")); + } +} diff --git a/ui/src/main/java/org/akraino/validation/ui/login/LoginStrategyImpl.java b/ui/src/main/java/org/akraino/validation/ui/login/LoginStrategyImpl.java new file mode 100644 index 0000000..55960ac --- /dev/null +++ b/ui/src/main/java/org/akraino/validation/ui/login/LoginStrategyImpl.java @@ -0,0 +1,170 @@ +/*- + * ============LICENSE_START========================================== + * ONAP Portal + * =================================================================== + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * =================================================================== + * + * Unless otherwise specified, all software contained herein is licensed + * under the Apache License, Version 2.0 (the "License"); + * you may not use this software except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Unless otherwise specified, all documentation contained herein is licensed + * under the Creative Commons License, Attribution 4.0 Intl. (the "License"); + * you may not use this documentation except in compliance with the License. + * You may obtain a copy of the License at + * + * https://creativecommons.org/licenses/by/4.0/ + * + * Unless required by applicable law or agreed to in writing, documentation + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * ============LICENSE_END============================================ + * + * + */ + +package org.akraino.validation.ui.login; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.servlet.http.Cookie; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.onap.portalsdk.core.auth.LoginStrategy; +import org.onap.portalsdk.core.command.LoginBean; +import org.onap.portalsdk.core.domain.RoleFunction; +import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate; +import org.onap.portalsdk.core.menu.MenuProperties; +import org.onap.portalsdk.core.onboarding.exception.CipherUtilException; +import org.onap.portalsdk.core.onboarding.exception.PortalAPIException; +import org.onap.portalsdk.core.onboarding.util.CipherUtil; +import org.onap.portalsdk.core.service.LoginService; +import org.onap.portalsdk.core.service.RoleService; +import org.onap.portalsdk.core.util.SystemProperties; +import org.onap.portalsdk.core.web.support.UserUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.servlet.ModelAndView; + +/** + * Implements basic single-signon login strategy for open-source + * applications when users start at Portal. Extracts an encrypted user ID + * sent by Portal. + */ +public class LoginStrategyImpl extends LoginStrategy { + + private static final EELFLoggerDelegate LOGGER = EELFLoggerDelegate.getLogger(LoginStrategyImpl.class); + + @Autowired + private RoleService roleService; + + @Autowired + private LoginService loginService; + + /** + * login for open source is same as external login in the non-open-source + * version. + */ + @Override + public ModelAndView doLogin(HttpServletRequest request, HttpServletResponse response) throws Exception { + invalidateExistingSession(request); + + LoginBean commandBean = new LoginBean(); + String loginId = request.getParameter("loginId"); + String password = request.getParameter("password"); + commandBean.setLoginId(loginId); + commandBean.setLoginPwd(password); + commandBean.setUserid(loginId); + commandBean = loginService.findUser(commandBean, + (String) request.getAttribute(MenuProperties.MENU_PROPERTIES_FILENAME_KEY), new HashMap()); + List roleFunctionList = roleService.getRoleFunctions(loginId); + + if (commandBean.getUser() == null) { + String loginErrorMessage = (commandBean.getLoginErrorMessage() != null) ? commandBean.getLoginErrorMessage() + : "login.error.external.invalid"; + Map model = new HashMap<>(); + model.put("error", loginErrorMessage); + return new ModelAndView("login_external", "model", model); + } else { + // store the currently logged in user's information in the session + UserUtils.setUserSession(request, commandBean.getUser(), commandBean.getMenu(), + commandBean.getBusinessDirectMenu(), + SystemProperties.getProperty(SystemProperties.LOGIN_METHOD_BACKDOOR), roleFunctionList); + initateSessionMgtHandler(request); + // user has been authenticated, now take them to the welcome page + return new ModelAndView("redirect:welcome.htm"); + } + } + + @Override + public String getUserId(HttpServletRequest request) throws PortalAPIException { + // Check ECOMP Portal cookie + Cookie ep = getCookie(request, EP_SERVICE); + if (ep == null) { + LOGGER.debug(EELFLoggerDelegate.debugLogger, "getUserId: no EP_SERVICE cookie, returning null"); + return null; + } + + String userid = null; + try { + userid = getUserIdFromCookie(request); + } catch (Exception e) { + LOGGER.error(EELFLoggerDelegate.errorLogger, "getUserId failed", e); + } + return userid; + } + + /** + * Searches the request for the user-ID cookie and decrypts the value + * using a key configured in properties + * + * @param request HttpServletRequest + * @return User ID + * @throws CipherUtilException On any failure to decrypt + */ + private String getUserIdFromCookie(HttpServletRequest request) throws CipherUtilException { + String userId = ""; + Cookie userIdCookie = getCookie(request, USER_ID); + if (userIdCookie != null) { + final String cookieValue = userIdCookie.getValue(); + if (!SystemProperties.containsProperty(SystemProperties.Decryption_Key)) + throw new IllegalStateException("Failed to find property " + SystemProperties.Decryption_Key); + final String decryptionKey = SystemProperties.getProperty(SystemProperties.Decryption_Key); + userId = CipherUtil.decrypt(cookieValue, decryptionKey); + LOGGER.debug(EELFLoggerDelegate.debugLogger, "getUserIdFromCookie: decrypted as {}", userId); + } + return userId; + } + + /** + * Searches the request for the named cookie. + * + * @param request HttpServletRequest + * @param cookieName Name of desired cookie + * @return Cookie if found; otherwise null. + */ + private Cookie getCookie(HttpServletRequest request, String cookieName) { + Cookie[] cookies = request.getCookies(); + if (cookies != null) + for (Cookie cookie : cookies) + if (cookie.getName().equals(cookieName)) + return cookie; + return null; + } + +} diff --git a/ui/src/main/java/org/akraino/validation/ui/scheduler/Register.java b/ui/src/main/java/org/akraino/validation/ui/scheduler/Register.java new file mode 100644 index 0000000..633ef9e --- /dev/null +++ b/ui/src/main/java/org/akraino/validation/ui/scheduler/Register.java @@ -0,0 +1,87 @@ +/* + * ============LICENSE_START========================================== + * ONAP Portal SDK + * =================================================================== + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * =================================================================== + * + * Unless otherwise specified, all software contained herein is licensed + * under the Apache License, Version 2.0 (the "License"); you may not use + * this software except in compliance with the License. You may obtain a + * copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied. See the License for the specific language governing + * permissions and limitations under the License. + * + * Unless otherwise specified, all documentation contained herein is + * licensed under the Creative Commons License, Attribution 4.0 Intl. (the + * "License"); you may not use this documentation except in compliance + * with the License. You may obtain a copy of the License at + * + * https://creativecommons.org/licenses/by/4.0/ + * + * Unless required by applicable law or agreed to in writing, + * documentation distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing + * permissions and limitations under the License. + * + * ============LICENSE_END============================================ + * + * + */ +package org.akraino.validation.ui.scheduler; + +import java.util.ArrayList; +import java.util.List; + +import org.onap.portalapp.scheduler.LogRegistry; +import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate; +import org.onap.portalsdk.core.scheduler.Registerable; +import org.onap.portalsdk.core.util.SystemProperties; +import org.quartz.Trigger; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.DependsOn; +import org.springframework.stereotype.Component; + +@Component +@DependsOn({"logRegistry", "systemProperties"}) +public class Register implements Registerable { + + private static final EELFLoggerDelegate LOGGER = EELFLoggerDelegate.getLogger(Register.class); + + private List scheduleTriggers = new ArrayList<>(); + Trigger[] trigger = new Trigger[1]; + + @Autowired + private LogRegistry logRegistry; + + @Override + public Trigger[] getTriggers() { + return getScheduleTriggers().toArray(trigger); + } + + @Override + public void registerTriggers() { + // if the property value is not available; the cron will not be added. + if (SystemProperties.containsProperty(SystemProperties.LOG_CRON)) { + LOGGER.debug(EELFLoggerDelegate.debugLogger, "Adding log registry for cron property {}", + SystemProperties.getProperty(SystemProperties.LOG_CRON)); + getScheduleTriggers().add(logRegistry.getTrigger()); + } + } + + public List getScheduleTriggers() { + return scheduleTriggers; + } + + public void setScheduleTriggers(List scheduleTriggers) { + this.scheduleTriggers = scheduleTriggers; + } + +} diff --git a/ui/src/main/java/org/akraino/validation/ui/scheduler/RegistryAdapter.java b/ui/src/main/java/org/akraino/validation/ui/scheduler/RegistryAdapter.java new file mode 100644 index 0000000..27e94b4 --- /dev/null +++ b/ui/src/main/java/org/akraino/validation/ui/scheduler/RegistryAdapter.java @@ -0,0 +1,105 @@ +/* + * ============LICENSE_START========================================== + * ONAP Portal SDK + * =================================================================== + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * =================================================================== + * + * Unless otherwise specified, all software contained herein is licensed + * under the Apache License, Version 2.0 (the "License"); you may not use + * this software except in compliance with the License. You may obtain a + * copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied. See the License for the specific language governing + * permissions and limitations under the License. + * + * Unless otherwise specified, all documentation contained herein is + * licensed under the Creative Commons License, Attribution 4.0 Intl. (the + * "License"); you may not use this documentation except in compliance + * with the License. You may obtain a copy of the License at + * + * https://creativecommons.org/licenses/by/4.0/ + * + * Unless required by applicable law or agreed to in writing, + * documentation distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing + * permissions and limitations under the License. + * + * ============LICENSE_END============================================ + * + * + */ +package org.akraino.validation.ui.scheduler; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import org.onap.portalsdk.core.scheduler.Registerable; +import org.onap.portalsdk.workflow.services.WorkflowScheduleService; +import org.quartz.Trigger; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.quartz.SchedulerFactoryBean; +import org.springframework.stereotype.Component; + +@Component +public class RegistryAdapter { + + @Autowired + private Registerable registry; + + @Autowired + private WorkflowScheduleService workflowScheduleService; + + private SchedulerFactoryBean schedulerBean; + + Trigger[] trigger = new Trigger[1]; + + public Trigger[] getTriggers() { + registry.registerTriggers(); + List allTriggers = new ArrayList<>(); + List coreTriggers = addCoreTriggers(); + final Trigger[] extTriggerArray = registry.getTriggers(); + allTriggers.addAll(Arrays.asList(extTriggerArray)); + allTriggers.addAll(coreTriggers); + return allTriggers.toArray(trigger); + } + + public List addCoreTriggers() { + // On startup of the application after crash recovery, invoke workflow + // schedule trigger + List triggers = getWorkflowScheduleService().triggerWorkflowScheduling(); + return triggers; + } + + public void setSchedulerBean(final SchedulerFactoryBean schedulerBean) { + this.schedulerBean = schedulerBean; + } + + public SchedulerFactoryBean getSchedulerBean() { + return schedulerBean; + } + + public Registerable getRegistry() { + return registry; + } + + public void setRegistry(Registerable registry) { + this.registry = registry; + } + + public WorkflowScheduleService getWorkflowScheduleService() { + return workflowScheduleService; + } + + public void setWorkflowScheduleService(WorkflowScheduleService workflowScheduleService) { + this.workflowScheduleService = workflowScheduleService; + } + +} diff --git a/ui/src/main/java/org/akraino/validation/ui/service/AdminAuthExtension.java b/ui/src/main/java/org/akraino/validation/ui/service/AdminAuthExtension.java new file mode 100644 index 0000000..b08bd40 --- /dev/null +++ b/ui/src/main/java/org/akraino/validation/ui/service/AdminAuthExtension.java @@ -0,0 +1,74 @@ +/* + * ============LICENSE_START========================================== + * ONAP Portal SDK + * =================================================================== + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * =================================================================== + * + * Unless otherwise specified, all software contained herein is licensed + * under the Apache License, Version 2.0 (the "License"); you may not use + * this software except in compliance with the License. You may obtain a + * copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied. See the License for the specific language governing + * permissions and limitations under the License. + * + * Unless otherwise specified, all documentation contained herein is + * licensed under the Creative Commons License, Attribution 4.0 Intl. (the + * "License"); you may not use this documentation except in compliance + * with the License. You may obtain a copy of the License at + * + * https://creativecommons.org/licenses/by/4.0/ + * + * Unless required by applicable law or agreed to in writing, + * documentation distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing + * permissions and limitations under the License. + * + * ============LICENSE_END============================================ + * + * + */ +package org.akraino.validation.ui.service; + +import java.util.Set; + +import org.onap.portalapp.service.IAdminAuthExtension; +import org.onap.portalsdk.core.domain.Role; +import org.onap.portalsdk.core.domain.User; +import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + + +@Service("adminAuthExtension") +@Transactional +/** + * Provides empty implementations of the methods in IAdminAuthExtension. + */ +public class AdminAuthExtension implements IAdminAuthExtension { + + private static final EELFLoggerDelegate LOGGER = EELFLoggerDelegate.getLogger(AdminAuthExtension.class); + + @Override + public void saveUserExtension(User user) { + LOGGER.debug(EELFLoggerDelegate.debugLogger, "saveUserExtension"); + } + + @Override + public void editUserExtension(User user) { + LOGGER.debug(EELFLoggerDelegate.debugLogger, "editUserExtension"); + } + + @Override + public void saveUserRoleExtension(Set roles, User user) { + LOGGER.debug(EELFLoggerDelegate.debugLogger, "saveUserRoleExtension"); + } + +} diff --git a/ui/src/main/java/org/akraino/validation/ui/service/BlueprintInstanceForValidationService.java b/ui/src/main/java/org/akraino/validation/ui/service/BlueprintInstanceForValidationService.java new file mode 100644 index 0000000..d786d09 --- /dev/null +++ b/ui/src/main/java/org/akraino/validation/ui/service/BlueprintInstanceForValidationService.java @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. You may obtain + * a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied. See the License for the specific language governing + * permissions and limitations under the License. + */ +package org.akraino.validation.ui.service; + +import java.util.List; + +import org.akraino.validation.ui.dao.BlueprintInstanceForValidationDAO; +import org.akraino.validation.ui.entity.BlueprintInstanceForValidation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@Transactional +public class BlueprintInstanceForValidationService { + + @Autowired + private BlueprintInstanceForValidationDAO dao; + + public void saveBlueprintInstance(BlueprintInstanceForValidation blueprintIns) { + + dao.saveOrUpdate(blueprintIns); + + } + + public List getBlueprintInstancesForValidation() { + + return dao.getBlueprintInstancesForValidation(); + + } + + public void deleteAll() { + dao.deleteAll(); + } + +} diff --git a/ui/src/main/java/org/akraino/validation/ui/service/BlueprintInstanceService.java b/ui/src/main/java/org/akraino/validation/ui/service/BlueprintInstanceService.java deleted file mode 100644 index 33914a4..0000000 --- a/ui/src/main/java/org/akraino/validation/ui/service/BlueprintInstanceService.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.akraino.validation.ui.service; - -import java.util.List; - -import org.akraino.validation.ui.dao.BlueprintInstanceDAO; -import org.akraino.validation.ui.entity.BlueprintInstance; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -@Service -@Transactional -public class BlueprintInstanceService { - - @Autowired - private BlueprintInstanceDAO blueprintInstDAO; - - public void saveBlueprintInstance(BlueprintInstance blueprintInstance) { - - blueprintInstDAO.saveOrUpdate(blueprintInstance); - - } - - public List getBlueprintInstances() { - - return blueprintInstDAO.getBlueprintInstances(); - - } - - public void deleteAll() { - blueprintInstDAO.deleteAll(); - } - -} diff --git a/ui/src/main/java/org/akraino/validation/ui/service/BlueprintService.java b/ui/src/main/java/org/akraino/validation/ui/service/BlueprintService.java index 019802c..ddc0219 100644 --- a/ui/src/main/java/org/akraino/validation/ui/service/BlueprintService.java +++ b/ui/src/main/java/org/akraino/validation/ui/service/BlueprintService.java @@ -1,17 +1,17 @@ /* * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. You may obtain + * a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied. See the License for the specific language governing + * permissions and limitations under the License. */ package org.akraino.validation.ui.service; diff --git a/ui/src/main/java/org/akraino/validation/ui/service/JenkinsJobNotificationService.java b/ui/src/main/java/org/akraino/validation/ui/service/JenkinsJobNotificationService.java index 0a50ad8..c2482b2 100644 --- a/ui/src/main/java/org/akraino/validation/ui/service/JenkinsJobNotificationService.java +++ b/ui/src/main/java/org/akraino/validation/ui/service/JenkinsJobNotificationService.java @@ -15,11 +15,14 @@ */ package org.akraino.validation.ui.service; +import org.akraino.validation.ui.conf.UiUtils; +import org.akraino.validation.ui.data.BlueprintLayer; import org.akraino.validation.ui.data.JnksJobNotify; import org.akraino.validation.ui.data.SubmissionStatus; +import org.akraino.validation.ui.entity.LabSilo; import org.akraino.validation.ui.entity.Submission; import org.akraino.validation.ui.service.utils.SubmissionHelper; -import org.apache.log4j.Logger; +import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -28,28 +31,46 @@ import org.springframework.transaction.annotation.Transactional; @Transactional public class JenkinsJobNotificationService { + private static final EELFLoggerDelegate LOGGER = EELFLoggerDelegate.getLogger(JenkinsJobNotificationService.class); + @Autowired private SubmissionHelper submissionHelper; @Autowired private SubmissionService submissionService; - private static final Logger LOGGER = Logger.getLogger(JenkinsJobNotificationService.class); + @Autowired + private SiloService siloService; - public void handle(JnksJobNotify jnksJobNotify) { - String jenkinsJobName = System.getenv("jenkins_job_name"); + public void handle(JnksJobNotify jnksJobNotify) throws Exception { + String jenkinsJobName = System.getenv("JENKINS_JOB_NAME"); if (!jenkinsJobName.equals(jnksJobNotify.getName())) { return; } Submission submission = submissionService.getSubmission(Integer.toString(jnksJobNotify.getSubmissionId())); if (submission == null) { - LOGGER.debug("No related submission was found."); + LOGGER.debug(EELFLoggerDelegate.debugLogger, "No related submission was found"); return; } - submission.setNexusResultUrl(System.getenv("nexus_results_url") + "/" - + submission.getBlueprintInstance().getTimeslot().getLab().name().toLowerCase() + "-blu-val" - + "/job/validation/" + String.valueOf(jnksJobNotify.getbuildNumber())); - LOGGER.info("Updating submission with id: " + submission.getSubmissionId()); + String siloText = null; + for (LabSilo silo : siloService.getSilos()) { + if (silo.getLab().getLab().equals(submission.getTimeslot().getLab().getLab())) { + siloText = silo.getSilo(); + } + } + if (siloText == null) { + throw new Exception("Could not retrieve silo of the selected lab : " + + submission.getTimeslot().getLab().getLab().toString()); + } + + String nexusUrl = UiUtils.NEXUS_URL + "/" + siloText + "/job/" + System.getenv("JENKINS_JOB_NAME") + "/" + + String.valueOf(jnksJobNotify.getbuildNumber() + "/results"); + if (!submission.getBlueprintInstanceForValidation().getLayer().equals(BlueprintLayer.All)) { + nexusUrl = nexusUrl + "/" + submission.getBlueprintInstanceForValidation().getLayer().name().toLowerCase(); + } + submission.setNexusResultUrl(nexusUrl); + LOGGER.info(EELFLoggerDelegate.applicationLogger, + "Updating submission with id: " + submission.getSubmissionId()); submission.setSubmissionStatus(SubmissionStatus.Completed); submissionHelper.saveSubmission(submission); } diff --git a/ui/src/main/java/org/akraino/validation/ui/service/LabService.java b/ui/src/main/java/org/akraino/validation/ui/service/LabService.java new file mode 100644 index 0000000..8dfc15e --- /dev/null +++ b/ui/src/main/java/org/akraino/validation/ui/service/LabService.java @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. You may obtain + * a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied. See the License for the specific language governing + * permissions and limitations under the License. + */ +package org.akraino.validation.ui.service; + +import java.util.List; + +import org.akraino.validation.ui.dao.LabDAO; +import org.akraino.validation.ui.entity.LabInfo; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@Transactional +public class LabService { + + @Autowired + private LabDAO labDAO; + + public void saveLab(LabInfo lab) { + + labDAO.saveOrUpdate(lab); + + } + + public List getLabs() { + + return labDAO.getLabs(); + + } + + public void deleteAll() { + labDAO.deleteAll(); + } + +} diff --git a/ui/src/main/java/org/akraino/validation/ui/service/ResultService.java b/ui/src/main/java/org/akraino/validation/ui/service/ResultService.java index 1deffa0..b189dba 100644 --- a/ui/src/main/java/org/akraino/validation/ui/service/ResultService.java +++ b/ui/src/main/java/org/akraino/validation/ui/service/ResultService.java @@ -16,7 +16,6 @@ package org.akraino.validation.ui.service; import java.io.IOException; -import java.net.MalformedURLException; import java.net.URL; import java.security.KeyManagementException; import java.security.NoSuchAlgorithmException; @@ -26,10 +25,12 @@ import org.akraino.validation.ui.client.jenkins.JenkinsExecutorClient; import org.akraino.validation.ui.client.jenkins.resources.QueueJobItem; import org.akraino.validation.ui.client.jenkins.resources.QueueJobItem.Executable; import org.akraino.validation.ui.client.nexus.NexusExecutorClient; -import org.akraino.validation.ui.client.nexus.resources.RobotTestResult; +import org.akraino.validation.ui.client.nexus.resources.WrapperRobotTestResult; +import org.akraino.validation.ui.conf.UiUtils; +import org.akraino.validation.ui.data.BlueprintLayer; +import org.akraino.validation.ui.entity.LabSilo; import org.akraino.validation.ui.entity.Submission; -import org.apache.commons.httpclient.HttpException; -import org.apache.log4j.Logger; +import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -41,19 +42,20 @@ import com.sun.jersey.api.client.UniformInterfaceException; @Service public class ResultService { - private static final Logger LOGGER = Logger.getLogger(ResultService.class); + private static final EELFLoggerDelegate LOGGER = EELFLoggerDelegate.getLogger(ResultService.class); @Autowired private SubmissionService submissionService; + @Autowired + private SiloService siloService; + @Deprecated - public URL getNexusResultUrl(Submission submission) - throws MalformedURLException, KeyManagementException, HttpException, ClientHandlerException, - UniformInterfaceException, NoSuchAlgorithmException, InterruptedException { + public URL getNexusResultUrl(Submission submission) throws Exception { - String url = System.getenv("jenkins_url"); - String userName = System.getenv("jenkins_user_name"); - String password = System.getenv("jenkins_user_pwd"); + String url = System.getenv("JENKINS_URL"); + String userName = System.getenv("JENKINS_USERNAME"); + String password = System.getenv("JENKINS_USER_PASSWORD"); Executable executable = null; while (executable == null) { @@ -63,22 +65,48 @@ public class ResultService { executable = queueJobItem.getExecutable(); Thread.sleep(2000); } - return new URL(System.getenv("nexus_results_url") + "/" - + submission.getBlueprintInstance().getTimeslot().getLab().name().toLowerCase() + "-blu-val" - + "/job/validation/" + String.valueOf(executable.getNumber())); + String siloText = null; + for (LabSilo silo : siloService.getSilos()) { + if (silo.getLab().getLab().equals(submission.getTimeslot().getLab().getLab())) { + siloText = silo.getSilo(); + } + } + if (siloText == null) { + throw new Exception("Could not retrieve silo of the selected lab : " + + submission.getTimeslot().getLab().getLab().toString()); + } + String nexusUrl = UiUtils.NEXUS_URL + "/" + siloText + "/job/" + System.getenv("JENKINS_JOB_NAME") + "/" + + String.valueOf(executable.getNumber() + "/results"); + if (!submission.getBlueprintInstanceForValidation().getLayer().equals(BlueprintLayer.All)) { + nexusUrl = nexusUrl + "/" + submission.getBlueprintInstanceForValidation().getLayer().name().toLowerCase(); + } + return new URL(nexusUrl); } - public List getRobotTestResults(String submissionId) + public List getRobotTestResults(String submissionId) throws JsonParseException, JsonMappingException, KeyManagementException, ClientHandlerException, UniformInterfaceException, NoSuchAlgorithmException, IOException { Submission submission = submissionService.getSubmission(submissionId); if (submission == null) { - LOGGER.info("Requested submission does not exist"); + LOGGER.info(EELFLoggerDelegate.applicationLogger, "Requested submission does not exist"); return null; } String nexusUrl = submission.getNexusResultUrl(); - NexusExecutorClient client = new NexusExecutorClient(nexusUrl + "/results"); + String urlLastpart = nexusUrl.substring(nexusUrl.lastIndexOf('/') + 1); + if (blueprintLayerContains(urlLastpart.substring(0, 1).toUpperCase() + urlLastpart.substring(1))) { + nexusUrl = nexusUrl.substring(0, nexusUrl.lastIndexOf(urlLastpart) - 1); + } + NexusExecutorClient client = new NexusExecutorClient(nexusUrl); return client.getRobotTestResults(); } + private boolean blueprintLayerContains(String layer) { + for (BlueprintLayer blueprintLayer : BlueprintLayer.values()) { + if (blueprintLayer.name().equals(layer)) { + return true; + } + } + return false; + } + } diff --git a/ui/src/main/java/org/akraino/validation/ui/service/SiloService.java b/ui/src/main/java/org/akraino/validation/ui/service/SiloService.java new file mode 100644 index 0000000..16ebe30 --- /dev/null +++ b/ui/src/main/java/org/akraino/validation/ui/service/SiloService.java @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. You may obtain + * a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied. See the License for the specific language governing + * permissions and limitations under the License. + */ +package org.akraino.validation.ui.service; + +import java.util.List; + +import org.akraino.validation.ui.dao.SiloDAO; +import org.akraino.validation.ui.entity.LabSilo; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@Transactional +public class SiloService { + + @Autowired + private SiloDAO siloDAO; + + public void saveSilo(LabSilo silo) { + + siloDAO.saveOrUpdate(silo); + + } + + public List getSilos() { + + return siloDAO.getSilos(); + + } + + public void deleteAll() { + siloDAO.deleteAll(); + } + +} diff --git a/ui/src/main/java/org/akraino/validation/ui/service/SubmissionService.java b/ui/src/main/java/org/akraino/validation/ui/service/SubmissionService.java index a6b1fca..ccf4087 100644 --- a/ui/src/main/java/org/akraino/validation/ui/service/SubmissionService.java +++ b/ui/src/main/java/org/akraino/validation/ui/service/SubmissionService.java @@ -30,14 +30,15 @@ import java.util.concurrent.CompletableFuture; import org.akraino.validation.ui.client.jenkins.JenkinsExecutorClient; import org.akraino.validation.ui.client.jenkins.resources.Parameter; import org.akraino.validation.ui.client.jenkins.resources.Parameters; -import org.akraino.validation.ui.config.AppInitializer; +import org.akraino.validation.ui.conf.UiUtils; import org.akraino.validation.ui.dao.SubmissionDAO; import org.akraino.validation.ui.data.SubmissionStatus; import org.akraino.validation.ui.entity.Submission; import org.akraino.validation.ui.service.utils.PrioritySupplier; import org.akraino.validation.ui.service.utils.SubmissionHelper; import org.apache.commons.httpclient.HttpException; -import org.apache.log4j.Logger; +import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate; +import org.onap.portalsdk.core.web.support.UserUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -49,7 +50,7 @@ import com.sun.jersey.api.client.UniformInterfaceException; @Transactional public class SubmissionService { - private static final Logger LOGGER = Logger.getLogger(SubmissionService.class); + private static final EELFLoggerDelegate LOGGER = EELFLoggerDelegate.getLogger(SubmissionService.class); @Autowired private SubmissionDAO submissionDAO; @@ -63,7 +64,7 @@ public class SubmissionService { JenkinsTriggerSubmissionJob task = new JenkinsTriggerSubmissionJob(submission); CompletableFuture completableFuture = - CompletableFuture.supplyAsync(new PrioritySupplier<>(1, task::execute), AppInitializer.executorService); + CompletableFuture.supplyAsync(new PrioritySupplier<>(1, task::execute), UiUtils.executorService); completableFuture.thenAcceptAsync(result -> this.callbackNotify(result)); return submission; @@ -102,10 +103,10 @@ public class SubmissionService { } public Submission execute() { - String url = System.getenv("jenkins_url"); - String userName = System.getenv("jenkins_user_name"); - String userPassword = System.getenv("jenkins_user_pwd"); - String jobName = System.getenv("jenkins_job_name"); + String url = System.getenv("JENKINS_URL"); + String userName = System.getenv("JENKINS_USERNAME"); + String userPassword = System.getenv("JENKINS_USER_PASSWORD"); + String jobName = System.getenv("JENKINS_JOB_NAME"); List listOfParameters = new ArrayList(); Parameters parameters = new Parameters(); Parameter parameter = new Parameter(); @@ -114,11 +115,16 @@ public class SubmissionService { listOfParameters.add(parameter); parameter = new Parameter(); parameter.setName("BLUEPRINT"); - parameter.setValue(submission.getBlueprintInstance().getBlueprint().getBlueprintName()); + parameter.setValue( + submission.getBlueprintInstanceForValidation().getBlueprint().getBlueprintName().toLowerCase()); listOfParameters.add(parameter); parameter = new Parameter(); parameter.setName("LAYER"); - parameter.setValue(submission.getBlueprintInstance().getLayer().name()); + parameter.setValue(submission.getBlueprintInstanceForValidation().getLayer().name().toLowerCase()); + listOfParameters.add(parameter); + parameter = new Parameter(); + parameter.setName("VERSION"); + parameter.setValue(submission.getBlueprintInstanceForValidation().getVersion().toLowerCase()); listOfParameters.add(parameter); parameter = new Parameter(); parameter.setName("UI_IP"); @@ -128,23 +134,20 @@ public class SubmissionService { socket.connect(InetAddress.getByName(random.nextInt(256) + "." + random.nextInt(256) + "." + random.nextInt(256) + "." + random.nextInt(256)), 10002); localIP = socket.getLocalAddress().getHostAddress(); - } catch (SocketException | UnknownHostException e1) { - LOGGER.error(e1); - return null; - } - parameter.setValue(localIP); - listOfParameters.add(parameter); - parameters.setParameter(listOfParameters); - JenkinsExecutorClient client; - try { + parameter.setValue(localIP); + listOfParameters.add(parameter); + parameters.setParameter(listOfParameters); + JenkinsExecutorClient client; client = JenkinsExecutorClient.getInstance(userName, userPassword, url); submission.setJnksQueueJobItemUrl(client.postJobWithQueryParams(jobName, parameters).toString()); - } catch (MalformedURLException | KeyManagementException | HttpException | ClientHandlerException - | UniformInterfaceException | NoSuchAlgorithmException e) { - LOGGER.error(e); + return submission; + } catch (SocketException | UnknownHostException | KeyManagementException | HttpException + | ClientHandlerException | UniformInterfaceException | MalformedURLException + | NoSuchAlgorithmException e) { + LOGGER.error(EELFLoggerDelegate.errorLogger, + "Error when triggering Jenkins job. " + UserUtils.getStackTrace(e)); return null; } - return submission; } } diff --git a/ui/src/main/java/org/akraino/validation/ui/service/TimeslotService.java b/ui/src/main/java/org/akraino/validation/ui/service/TimeslotService.java index 421c2b6..8df150d 100644 --- a/ui/src/main/java/org/akraino/validation/ui/service/TimeslotService.java +++ b/ui/src/main/java/org/akraino/validation/ui/service/TimeslotService.java @@ -1,17 +1,17 @@ /* * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. You may obtain + * a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied. See the License for the specific language governing + * permissions and limitations under the License. */ package org.akraino.validation.ui.service; diff --git a/ui/src/main/java/org/akraino/validation/ui/service/utils/SubmissionHelper.java b/ui/src/main/java/org/akraino/validation/ui/service/utils/SubmissionHelper.java index 7a36b23..8e45d73 100644 --- a/ui/src/main/java/org/akraino/validation/ui/service/utils/SubmissionHelper.java +++ b/ui/src/main/java/org/akraino/validation/ui/service/utils/SubmissionHelper.java @@ -1,17 +1,17 @@ /* * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. You may obtain + * a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied. See the License for the specific language governing + * permissions and limitations under the License. */ package org.akraino.validation.ui.service.utils; diff --git a/ui/src/main/resources/app.properties b/ui/src/main/resources/app.properties deleted file mode 100644 index 76281ca..0000000 --- a/ui/src/main/resources/app.properties +++ /dev/null @@ -1,21 +0,0 @@ -# Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#LDAP details for authentication & authorization -apacheds.ldap.url = ldap://localhost:10389/dc=akraino,dc=org - -#DB connection properties -postgres.db.url = jdbc:postgresql://localhost:6432/admin -postgres.db.user.name = admin - diff --git a/ui/src/main/resources/hibernate.properties b/ui/src/main/resources/hibernate.properties deleted file mode 100644 index a66c68f..0000000 --- a/ui/src/main/resources/hibernate.properties +++ /dev/null @@ -1,21 +0,0 @@ -# Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect -hibernate.show_sql = true -hibernate.c3p0.min_size = 5 -hibernate.c3p0.max_size = 20 -hibernate.c3p0.acquire_increment = 2 -hibernate.c3p0.max_statements = 150 -hibernate.jdbc.use_streams_for_binary = true \ No newline at end of file diff --git a/ui/src/main/resources/key.properties b/ui/src/main/resources/key.properties new file mode 100644 index 0000000..fa7598a --- /dev/null +++ b/ui/src/main/resources/key.properties @@ -0,0 +1,41 @@ +### +# ============LICENSE_START========================================== +# ONAP Portal SDK +# =================================================================== +# Copyright © 2017 AT&T Intellectual Property. All rights reserved. +# =================================================================== +# +# Unless otherwise specified, all software contained herein is licensed +# under the Apache License, Version 2.0 (the “License”); +# you may not use this software except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Unless otherwise specified, all documentation contained herein is licensed +# under the Creative Commons License, Attribution 4.0 Intl. (the “License”); +# you may not use this documentation except in compliance with the License. +# You may obtain a copy of the License at +# +# https://creativecommons.org/licenses/by/4.0/ +# +# Unless required by applicable law or agreed to in writing, documentation +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# ============LICENSE_END============================================ +# +# +### + +# Properties read by the ECOMP Framework library (epsdk-fw) + +cipher.enc.key = AGLDdG4D04BKm2IxIWEr8o== \ No newline at end of file diff --git a/ui/src/main/resources/log4j.properties b/ui/src/main/resources/log4j.properties deleted file mode 100644 index 4484b3f..0000000 --- a/ui/src/main/resources/log4j.properties +++ /dev/null @@ -1,34 +0,0 @@ -# Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Direct log messages to a log file -log4j.rootLogger=INFO, stdout, file -log4j.logger.org.hibernate.SQL=TRACE, stdout - -# Redirect log messages to console -log4j.appender.stdout=org.apache.log4j.ConsoleAppender -log4j.appender.stdout.Threshold=WARN -log4j.appender.stdout.Target=System.out -log4j.appender.stdout.layout=org.apache.log4j.PatternLayout -log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n - -# Redirect log messages to a log file, support file rolling. -log4j.appender.file=org.apache.log4j.RollingFileAppender -log4j.appender.stdout.Threshold=DEBUG -#log4j.appender.file.File=C:\\Users\\ld261v\\Downloads\\ak1.log -log4j.appender.file.File=/usr/local/tomcat/logs/akraino.log -log4j.appender.file.MaxFileSize=5MB -log4j.appender.file.MaxBackupIndex=10 -log4j.appender.file.layout=org.apache.log4j.PatternLayout -log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n \ No newline at end of file diff --git a/ui/src/main/resources/logback.xml b/ui/src/main/resources/logback.xml new file mode 100644 index 0000000..9c7102e --- /dev/null +++ b/ui/src/main/resources/logback.xml @@ -0,0 +1,371 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${defaultLoggerPattern} + + + + + + + + + + + + ${logDirectory}/${generalLogName}.log + + + ${logDirectory}/${generalLogName}.%d{yyyy-MM-dd}.log.zip + + + 30 + 3GB + + + + ${applicationLoggerPattern} + + + + + + 256 + + true + + + + + + + + + + + + + + + + + + + ${logDirectory}/${auditLogName}.log + + + ${logDirectory}/${auditLogName}.%d{yyyy-MM-dd}.log.zip + + + 30 + 3GB + + + + ${auditLoggerPattern} + + + + 256 + + + + + ${logDirectory}/${metricsLogName}.log + + + ${logDirectory}/${metricsLogName}.%d{yyyy-MM-dd}.log.zip + + + 30 + 3GB + + + + ${metricsLoggerPattern} + + + + + + 256 + + + + + ${logDirectory}/${errorLogName}.log + + + ${logDirectory}/${errorLogName}.%d{yyyy-MM-dd}.log.zip + + + 30 + 3GB + + + + ${errorLoggerPattern} + + + + + 256 + + + + + ${debugLogDirectory}/${debugLogName}.log + + + ${logDirectory}/${debugLogName}.%d{yyyy-MM-dd}.log.zip + + + 30 + 3GB + + + + ${defaultLoggerPattern} + + + + + 256 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ui/src/main/resources/music.properties b/ui/src/main/resources/music.properties new file mode 100644 index 0000000..fa89354 --- /dev/null +++ b/ui/src/main/resources/music.properties @@ -0,0 +1,31 @@ +music.session.keyspace = test_session +music.session.attr.tables = spring_session_attributes +music.session.meta.tables = spring_session +#music.cache = false +music.serialize.compress = true +music.session.max.inactive.interval.seconds = 1800 +music.exclude.api = /portalApi/healthCheck,/portalApi/healthCheckSuspend,/portalApi/healthCheckResume,/auxapi/.* +#By default it's eventual +music.atomic.get = false +music.atomic.put = false +#how often the session clean up would happen (hour) +music.cleanup.frequency = 6 +#how old of session need to be cleaned up (hour) +music.cleanup.threshold = 10 +music.enable = false +cassandra.host=135.197.226.103 +zookeeper.host=135.197.226.103, 135.197.226.108, 135.197.226.119 +cassandra.user=cassandra +cassandra.password=cassandra + +#Music API +#music.endpoint = http://vm-ep-dev4.research.att.com/MUSIC/rest/ +#music.version = v2 +#music.keyspace = keyspaces +#music.x.minor.version = 3 +#music.x.patch.version = 0 +#music.ns = com.att.ecomp.portal.demeter +#music.user.id = m00468@portal.ecomp.att.com +#music.password = friedG33nS- +#music.consistency.info = type +#music.consistency.info.value = eventual \ No newline at end of file diff --git a/ui/src/main/resources/portal.properties b/ui/src/main/resources/portal.properties new file mode 100644 index 0000000..5434599 --- /dev/null +++ b/ui/src/main/resources/portal.properties @@ -0,0 +1,70 @@ +### +# ============LICENSE_START========================================== +# ONAP Portal SDK +# =================================================================== +# Copyright © 2017 AT&T Intellectual Property. All rights reserved. +# =================================================================== +# +# Unless otherwise specified, all software contained herein is licensed +# under the Apache License, Version 2.0 (the â??Licenseâ?); +# you may not use this software except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Unless otherwise specified, all documentation contained herein is licensed +# under the Creative Commons License, Attribution 4.0 Intl. (the â??Licenseâ?); +# you may not use this documentation except in compliance with the License. +# You may obtain a copy of the License at +# +# https://creativecommons.org/licenses/by/4.0/ +# +# Unless required by applicable law or agreed to in writing, documentation +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# ============LICENSE_END============================================ +# +# +### +# Properties read by ECOMP Framework library, ecompFW.jar + +########################################################################## +# The following properties should NOT be changed by partner applications. +########################################################################## + +portal.api.prefix = /api +max.idle.time = 5 +user.attribute.name = user_attribute + +#Use REST API instead of UEB to fetch the functional menu data +use_rest_for_functional_menu=true + +########################################################################## +# The following properties MUST be changed by partner applications. +########################################################################## + +# Name of java class that implements the OnBoardingApiService interface. +portal.api.impl.class = org.onap.portalapp.service.OnBoardingApiServiceImpl + +# URL of the Portal where this app is onboarded +ecomp_redirect_url = https://portal.onap.org/ecompportal/process_csp + +# URL of the ECOMP Portal REST API +ecomp_rest_url = http://portal.onap.org:50580/ecompportal/auxapi + +# Applications do not need to run a UEB listener after 1607. +ueb_listeners_enable = false + +# UEB Configuration +# If key ueb_listeners_enable is set to false, +# then only the ueb_app_key is required. +ueb_app_key = REPLACE-ME-UEB-APP-KEY-EPSDK-APP-OS diff --git a/ui/src/main/webapp/.eslintrc b/ui/src/main/webapp/.eslintrc index d1e9531..8cc24f1 100644 --- a/ui/src/main/webapp/.eslintrc +++ b/ui/src/main/webapp/.eslintrc @@ -4,6 +4,7 @@ "console": 1, "confirm":1, "localStorage":1, - "window":1 + "window":1, + "appDS2":1 } } diff --git a/ui/src/main/webapp/WEB-INF/conf/system.properties b/ui/src/main/webapp/WEB-INF/conf/system.properties new file mode 100644 index 0000000..6276357 --- /dev/null +++ b/ui/src/main/webapp/WEB-INF/conf/system.properties @@ -0,0 +1,85 @@ +# +# Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +########################################################################## +# The following properties should NOT be changed by partner applications. +########################################################################## + +application_user_id = 30000 +post_default_role_id = 16 +clustered = true + +#Enable Fusion Mobile capabilities for the application +mobile_enable = false + +# Cache config file is needed on the classpath +cache_config_file_path = /WEB-INF/classes/cache.ccf +cache_switch = 199 +cache_load_on_startup = false + +user_name = fullName +decryption_key = AGLDdG4D04BKm2IxIWEr8o== + +########################################################################## +# The following properties REQUIRE changes by partner applications. +########################################################################## + +#Mysql +db.driver = org.mariadb.jdbc.Driver +db.userName = root +db.encrypt_flag = false +db.hib.dialect = org.hibernate.dialect.MySQLDialect +db.min_pool_size = 5 +db.max_pool_size = 10 +#db.test_connection_on_checkout = false +#db.preferred_test_query = SELECT 1 from FN_USER + +hb.dialect = org.hibernate.dialect.MySQLDialect +# SQL statements are logged to stdout +hb.show_sql = true +hb.idle_connection_test_period = 3600 + +app_display_name = Akraino Blueprint Validation UI +# license file area +files_path = /tmp + +#element map files +element_map_file_path = app/fusionapp/files/ +element_map_icon_path = app/fusionapp/icons/ + +#Cron Schedules have 6 required fields and 1 optional field: +# Seconds Minutes Hours Day-of-Month Month Day-of-Week Year +log_cron = 0 0/1 * * * ?; +#sessiontimeout_feed_cron = 0 * * * * ? * + +# Link shown in Help menu +contact_us_link = https://wiki.onap.org/display/DW/Portal + +# An Unique 128-bit value defined to identify a specific version +# of an application deployed on a specific virtual machine. +# This value must be generated and updated by the application +# which is using the ECOMP SDK at the time of its deployment. +# Online Unique UUID generator - https://www.uuidgenerator.net/ +instance_uuid=8da691c9-987d-43ed-a358-00ac2f35685d + +# Application base URL has the host and app context only; a proper prefix of the on-boarded URL. +# Only required for applications using FE/BE separation. For example: +# app_base_url = https://www.onap.org/app_context/ + +#authenticate user server +authenticate_user_server=http://todo_enter_auth_server_hostname:8383/openid-connect-server-webapp/allUsers +#cookie domain +cookie_domain = onap.org \ No newline at end of file diff --git a/ui/src/main/webapp/WEB-INF/defs/definitions.xml b/ui/src/main/webapp/WEB-INF/defs/definitions.xml new file mode 100644 index 0000000..ec0ec0d --- /dev/null +++ b/ui/src/main/webapp/WEB-INF/defs/definitions.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + diff --git a/ui/src/main/webapp/WEB-INF/fusion/conf/fusion.properties b/ui/src/main/webapp/WEB-INF/fusion/conf/fusion.properties new file mode 100644 index 0000000..8ee0a95 --- /dev/null +++ b/ui/src/main/webapp/WEB-INF/fusion/conf/fusion.properties @@ -0,0 +1,35 @@ +# login settings +login_method_backdoor = backdoor +login_method_attribute_name = login_method + +# These properties will be removed after SingleSignOnController is cleaned +authentication_mechanism = BOTH +login_method_csp = csp +login_method_web_junction = web_junction + +#login message +login.error.hrid.empty = Login failed, please contact system administrator. +login.error.hrid.not-found = User not found, please contact system administrator. +login.error.user.inactive = Account is disabled, please contact system administrator. + +# User Session settings +user_attribute_name = user +roles_attribute_name = roles +role_function_list = role_function_list +role_functions_attribute_name = role_functions + +# Import-user LDAP settings +post_initial_context_factory = com.sun.jndi.ldap.LdapCtxFactory +post_provider_url = ldap://ldap.mycompany.com:389 +post_security_principal = ou=people,o=mycompany,c=us +post_max_result_size = 499 + +# menu settings +menu_query_name = menuData +application_menu_set_name = APP +application_menu_attribute_name = applicationMenuData +business_direct_menu_set_name = BD +business_direct_menu_attribute_name = businessDirectMenuData + +# Role settings +sys_admin_role_id = 1 diff --git a/ui/src/main/webapp/WEB-INF/fusion/jsp/ds2/footer.jsp b/ui/src/main/webapp/WEB-INF/fusion/jsp/ds2/footer.jsp new file mode 100644 index 0000000..1363d15 --- /dev/null +++ b/ui/src/main/webapp/WEB-INF/fusion/jsp/ds2/footer.jsp @@ -0,0 +1,17 @@ + + + + +
+
+ +
+
\ No newline at end of file diff --git a/ui/src/main/webapp/WEB-INF/fusion/jsp/ds2/header.jsp b/ui/src/main/webapp/WEB-INF/fusion/jsp/ds2/header.jsp new file mode 100644 index 0000000..94213a2 --- /dev/null +++ b/ui/src/main/webapp/WEB-INF/fusion/jsp/ds2/header.jsp @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/src/main/webapp/WEB-INF/fusion/jsp/ds2/left-menu.jsp b/ui/src/main/webapp/WEB-INF/fusion/jsp/ds2/left-menu.jsp new file mode 100644 index 0000000..66e7da3 --- /dev/null +++ b/ui/src/main/webapp/WEB-INF/fusion/jsp/ds2/left-menu.jsp @@ -0,0 +1,778 @@ +<%-- + ============LICENSE_START========================================== + ONAP Portal SDK + =================================================================== + Copyright © 2017 AT&T Intellectual Property. All rights reserved. + =================================================================== + + Unless otherwise specified, all software contained herein is licensed + under the Apache License, Version 2.0 (the “License”); + you may not use this software except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + Unless otherwise specified, all documentation contained herein is licensed + under the Creative Commons License, Attribution 4.0 Intl. (the “License”); + you may not use this documentation except in compliance with the License. + You may obtain a copy of the License at + + https://creativecommons.org/licenses/by/4.0/ + + Unless required by applicable law or agreed to in writing, documentation + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + ============LICENSE_END============================================ + + + --%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> +<%@ page isELIgnored="false"%> +<%@ page import="org.onap.portalsdk.core.util.SystemProperties"%> +<%@ page import="org.onap.portalsdk.core.onboarding.util.PortalApiProperties"%> +<%@ page import="org.onap.portalsdk.core.onboarding.util.PortalApiConstants"%> +<%@ page import="org.onap.portalsdk.core.domain.MenuData"%> + + + + + + + + +" /> +" /> + +<% + String contactUsLink = SystemProperties.getProperty(SystemProperties.CONTACT_US_LINK); + String redirectUrl = PortalApiProperties.getProperty(PortalApiConstants.ECOMP_REDIRECT_URL); + String portalUrl = redirectUrl.substring(0, redirectUrl.lastIndexOf('/')) + "/process_csp"; + String getAccessLink = redirectUrl.substring(0, redirectUrl.lastIndexOf('/')) + "/get_access"; +%> + + + + + + +<%@include file="/WEB-INF/fusion/jsp/ebz/loginSnippet.html" %> + +
+
+ +
+
+
+ + +
+
+
+
+
  • +
    +
  • +
    +
    + +
    +
    + + +
    + + +
    +
    +
    +
  • + Unable to load menus +
  • +
    + +
    +
  • +
    + + +
    +
  • +
  •  
  • +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + +     {{app_name}} + +
    +
    +
    +
    + + + + + +
    +
    +
    +
    +
    +
    +
    +
    + + \ No newline at end of file diff --git a/ui/src/main/webapp/WEB-INF/fusion/orm/Analytics.hbm.xml b/ui/src/main/webapp/WEB-INF/fusion/orm/Analytics.hbm.xml new file mode 100644 index 0000000..95d1468 --- /dev/null +++ b/ui/src/main/webapp/WEB-INF/fusion/orm/Analytics.hbm.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + select repId, orderNo, roleId, userId, readOnlyYn from ReportUserRole where + repId = :report_id and userId is not null + + + + select repId, orderNo, roleId, userId, readOnlyYn from ReportUserRole where + repId = :report_id and roleId is not null + + + + delete from ReportUserRole where repId = :report_id and userId =:user_id + + + + delete from ReportUserRole where repId = :report_id and roleId =:role_id + + diff --git a/ui/src/main/webapp/WEB-INF/fusion/orm/RNoteBookIntegration.hbm.xml b/ui/src/main/webapp/WEB-INF/fusion/orm/RNoteBookIntegration.hbm.xml new file mode 100644 index 0000000..6966eec --- /dev/null +++ b/ui/src/main/webapp/WEB-INF/fusion/orm/RNoteBookIntegration.hbm.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ui/src/main/webapp/WEB-INF/index.jsp b/ui/src/main/webapp/WEB-INF/index.jsp new file mode 100644 index 0000000..8f71b2a --- /dev/null +++ b/ui/src/main/webapp/WEB-INF/index.jsp @@ -0,0 +1,40 @@ +<%-- +============LICENSE_START========================================== + 3 ONAP Portal SDK + 4 =================================================================== + 5 Copyright © 2017 AT&T Intellectual Property. All rights reserved. + 6 =================================================================== + 7 + 8 Unless otherwise specified, all software contained herein is licensed + 9 under the Apache License, Version 2.0 (the ?License?); + 10 you may not use this software except in compliance with the License. + 11 You may obtain a copy of the License at + 12 + 13 http://www.apache.org/licenses/LICENSE-2.0 + 14 + 15 Unless required by applicable law or agreed to in writing, software + 16 distributed under the License is distributed on an "AS IS" BASIS, + 17 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + 18 See the License for the specific language governing permissions and + 19 limitations under the License. + 20 + 21 Unless otherwise specified, all documentation contained herein is licensed + 22 under the Creative Commons License, Attribution 4.0 Intl. (the ?License?); + 23 you may not use this documentation except in compliance with the License. + 24 You may obtain a copy of the License at + 25 + 26 https://creativecommons.org/licenses/by/4.0/ + 27 + 28 Unless required by applicable law or agreed to in writing, documentation + 29 distributed under the License is distributed on an "AS IS" BASIS, + 30 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + 31 See the License for the specific language governing permissions and + 32 limitations under the License. + 33 + 34 ============LICENSE_END============================================. +--%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> + +<%-- Redirected because we can't set the welcome page to a virtual URL. --%> +<%-- Forward to the intended start page to reduce frustration for new users. --%> + diff --git a/ui/src/main/webapp/WEB-INF/jsp/login.jsp b/ui/src/main/webapp/WEB-INF/jsp/login.jsp new file mode 100644 index 0000000..c5b43e0 --- /dev/null +++ b/ui/src/main/webapp/WEB-INF/jsp/login.jsp @@ -0,0 +1,114 @@ +<%-- +Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +--%> +<%@ page import="org.onap.portalsdk.core.util.SystemProperties"%> + +<% + // Name is defined by app; do not throw if missing + final String appDisplayName = SystemProperties.containsProperty(SystemProperties.APP_DISPLAY_NAME) + ? SystemProperties.getProperty(SystemProperties.APP_DISPLAY_NAME) + : SystemProperties.APP_DISPLAY_NAME; +%> + + + + + + + Login + + + + +
    +
    +
    ${model.error}
    +
    +
    +
    +
    +
    +
    + + + diff --git a/ui/src/main/webapp/WEB-INF/jsp/login_external.jsp b/ui/src/main/webapp/WEB-INF/jsp/login_external.jsp new file mode 100644 index 0000000..9d389d0 --- /dev/null +++ b/ui/src/main/webapp/WEB-INF/jsp/login_external.jsp @@ -0,0 +1,114 @@ +<%-- +Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +--%> +<%@ page import="org.onap.portalsdk.core.util.SystemProperties"%> + +<% + // Name is defined by app; do not throw if missing + final String appDisplayName = SystemProperties.containsProperty(SystemProperties.APP_DISPLAY_NAME) + ? SystemProperties.getProperty(SystemProperties.APP_DISPLAY_NAME) + : SystemProperties.APP_DISPLAY_NAME; +%> + + + + + + + + + + + +
    +
    +
    ${model.error}
    +
    +
    +
    +
    +
    +
    + + + diff --git a/ui/src/main/webapp/WEB-INF/web.xml b/ui/src/main/webapp/WEB-INF/web.xml old mode 100755 new mode 100644 index 0ef6de8..92a2d59 --- a/ui/src/main/webapp/WEB-INF/web.xml +++ b/ui/src/main/webapp/WEB-INF/web.xml @@ -1,25 +1,48 @@ - + -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at + AECBlueprintValidationUI - http://www.apache.org/licenses/LICENSE-2.0 + + -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. ---> + + 30 + COOKIE + + + SecurityXssFilter + org.akraino.validation.ui.filter.SecurityXssFilter + + + + SecurityXssFilter + /* + + + springSessionRepositoryFilter + org.onap.portalapp.music.filter.MusicSessionRepositoryFilter + + + + springSessionRepositoryFilter + /* + REQUEST + ERROR + + + /WEB-INF/jsp/error.jsp + - - - - Archetype Created Web Application - - - + \ No newline at end of file diff --git a/ui/src/main/webapp/resources/js/App.Config.js b/ui/src/main/webapp/app/AECBlueprintValidationUI/App.Config.js similarity index 93% rename from ui/src/main/webapp/resources/js/App.Config.js rename to ui/src/main/webapp/app/AECBlueprintValidationUI/App.Config.js index 8fb450a..6186a2b 100644 --- a/ui/src/main/webapp/resources/js/App.Config.js +++ b/ui/src/main/webapp/app/AECBlueprintValidationUI/App.Config.js @@ -14,6 +14,6 @@ * limitations under the License. */ -var config_module = angular.module('App.config', []); +var config_module = angular.module('App.Config', []); config_module.constant('appContext', '/AECBlueprintValidationUI'); config_module.constant('refreshPeriod', '5000'); // in msecs diff --git a/ui/src/main/webapp/resources/js/App.Services.js b/ui/src/main/webapp/app/AECBlueprintValidationUI/App.Services.js similarity index 96% rename from ui/src/main/webapp/resources/js/App.Services.js rename to ui/src/main/webapp/app/AECBlueprintValidationUI/App.Services.js index f0887ad..8fa4ce6 100644 --- a/ui/src/main/webapp/resources/js/App.Services.js +++ b/ui/src/main/webapp/app/AECBlueprintValidationUI/App.Services.js @@ -14,10 +14,9 @@ * limitations under the License. */ -var AECBlueprintValidationUIApp = angular - .module('BlueprintValidationUIManagement'); +var services = angular.module('App.Services', [ 'App.Config' ]); -AECBlueprintValidationUIApp.factory('restAPISvc', [ +services.factory('restAPISvc', [ '$http', 'appContext', function($http, appContext) { diff --git a/ui/src/main/webapp/app/AECBlueprintValidationUI/CommittedSubmissions/AECCommittedSubmissions.js b/ui/src/main/webapp/app/AECBlueprintValidationUI/CommittedSubmissions/AECCommittedSubmissions.js new file mode 100644 index 0000000..9730d6c --- /dev/null +++ b/ui/src/main/webapp/app/AECBlueprintValidationUI/CommittedSubmissions/AECCommittedSubmissions.js @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +var appDS2 = angular.module("AECCommittedSubmissions", [ 'ngRoute', + 'ngMessages', 'modalServices', 'ngCookies', 'b2b.att', 'gridster', + 'ui.bootstrap', 'ui.bootstrap.modal', 'App.Config', 'App.Services' ]); diff --git a/ui/src/main/webapp/app/AECBlueprintValidationUI/CommittedSubmissions/AECCommittedSubmissionsController.js b/ui/src/main/webapp/app/AECBlueprintValidationUI/CommittedSubmissions/AECCommittedSubmissionsController.js new file mode 100644 index 0000000..538793e --- /dev/null +++ b/ui/src/main/webapp/app/AECBlueprintValidationUI/CommittedSubmissions/AECCommittedSubmissionsController.js @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +var app = angular.module('AECCommittedSubmissions'); + +app.controller('AECCommittedSubmissionsController', function($scope, + restAPISvc, $interval, refreshPeriod) { + + $scope.submissionIdList = []; + + restAPISvc.getRestAPI("/api/submission/", function(data) { + $scope.submissions = data; + }); + + $scope.refreshCommittedSubmissions = function() { + restAPISvc.getRestAPI("/api/submission/", function(data) { + $scope.submissions = data; + }); + } + + $scope.modifySubmissionIdList = function(id) { + if ($scope.submissionIdList.indexOf(id) === -1) { + $scope.submissionIdList.push(id); + } else { + $scope.submissionIdList.splice($scope.submissionIdList.indexOf(id), + 1); + } + } + + $scope.deleteSubmissions = function() { + var confirmation = confirm("Are you sure?"); + if (confirmation == true) { + angular.forEach($scope.submissionIdList, function(id) { + var submission = { + "submissionId" : id + }; + restAPISvc.deleteRestAPI("/api/submission/", submission); + }); + } + } + + $interval(function() { + $scope.refreshCommittedSubmissions(); + }, refreshPeriod); + +}); diff --git a/ui/src/main/webapp/app/AECBlueprintValidationUI/CommittedSubmissions/CommittedSubmissions.html b/ui/src/main/webapp/app/AECBlueprintValidationUI/CommittedSubmissions/CommittedSubmissions.html new file mode 100644 index 0000000..8886182 --- /dev/null +++ b/ui/src/main/webapp/app/AECBlueprintValidationUI/CommittedSubmissions/CommittedSubmissions.html @@ -0,0 +1,178 @@ + + + + + + + + + +Committed Submissions + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + \ No newline at end of file diff --git a/ui/src/main/webapp/app/AECBlueprintValidationUI/CommittedSubmissions/CommittedSubmissionsTemplate.html b/ui/src/main/webapp/app/AECBlueprintValidationUI/CommittedSubmissions/CommittedSubmissionsTemplate.html new file mode 100644 index 0000000..784810b --- /dev/null +++ b/ui/src/main/webapp/app/AECBlueprintValidationUI/CommittedSubmissions/CommittedSubmissionsTemplate.html @@ -0,0 +1,305 @@ + +
    + + + +

    Committed Submissions

    + +
    + +
    + +
    + +
    + + +
    + + +
    + +
    + + + +
    + + +
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + +
     Id Status Blueprint VersionLayer Desired Timeslot Url of result 
    {{ + submission.submissionId }}{{ + submission.submissionStatus }}{{ + submission.blueprintInstanceForValidation.blueprint.blueprintName + }}{{ + submission.blueprintInstanceForValidation.version }}{{ + submission.blueprintInstanceForValidation.layer }}Lab: + {{ submission.timeslot.lab.lab }} Start date and time: {{ + submission.timeslot.startDateTime }} + {{ + submission.nexusResultUrl }}
    + +
    +
    + +
    + +
    + +
    +
    +
    + + + +
    \ No newline at end of file diff --git a/ui/src/main/webapp/app/AECBlueprintValidationUI/CommittedSubmissions/Route.js b/ui/src/main/webapp/app/AECBlueprintValidationUI/CommittedSubmissions/Route.js new file mode 100644 index 0000000..48a9a5a --- /dev/null +++ b/ui/src/main/webapp/app/AECBlueprintValidationUI/CommittedSubmissions/Route.js @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +appDS2 + .config(function($routeProvider) { + $routeProvider + .otherwise({ + templateUrl : 'app/AECBlueprintValidationUI/CommittedSubmissions/CommittedSubmissionsTemplate.html', + controller : "AECCommittedSubmissionsController" + }); + }); \ No newline at end of file diff --git a/ui/src/main/webapp/app/AECBlueprintValidationUI/GetBySubmissionId/AECGetBySubmissionId.js b/ui/src/main/webapp/app/AECBlueprintValidationUI/GetBySubmissionId/AECGetBySubmissionId.js new file mode 100644 index 0000000..e4d0b89 --- /dev/null +++ b/ui/src/main/webapp/app/AECBlueprintValidationUI/GetBySubmissionId/AECGetBySubmissionId.js @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +var appDS2 = angular.module("AECGetBySubmissionId", [ 'ngRoute', 'ngMessages', + 'modalServices', 'ngCookies', 'b2b.att', 'gridster', 'ui.bootstrap', + 'ui.bootstrap.modal', 'App.Services' ]); \ No newline at end of file diff --git a/ui/src/main/webapp/app/AECBlueprintValidationUI/GetBySubmissionId/AECGetBySubmissionIdController.js b/ui/src/main/webapp/app/AECBlueprintValidationUI/GetBySubmissionId/AECGetBySubmissionIdController.js new file mode 100644 index 0000000..d53bcc7 --- /dev/null +++ b/ui/src/main/webapp/app/AECBlueprintValidationUI/GetBySubmissionId/AECGetBySubmissionIdController.js @@ -0,0 +1,121 @@ +/* + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +var app = angular.module('AECGetBySubmissionId'); +app + .controller( + 'AECGetBySubmissionIdController', + function($scope, restAPISvc) { + + initialize(); + + function initialize() { + $scope.results = []; + $scope.resultsLayers = []; + $scope.resultsLayerTestSuitesNames = []; + $scope.selectedRobotTestResult = []; + restAPISvc + .getRestAPI( + "/api/submission/", + function(data) { + $scope.submissions = data; + $scope.submissionsForDisplay = []; + angular + .forEach( + $scope.submissions, + function( + submissionData) { + var temp = "id: " + + submissionData.submissionId + + " blueprint: " + + submissionData.blueprintInstanceForValidation.blueprint.blueprintName + + " version: " + + submissionData.blueprintInstanceForValidation.version + + " layer: " + + submissionData.blueprintInstanceForValidation.layer + + " lab: " + + submissionData.timeslot.lab.lab + + " Start date and time: " + + submissionData.timeslot.startDateTime + /* + * + " duration: " + + * submissionData.blueprintInstanceForValidation.timeslot.duration + */; + $scope.submissionsForDisplay + .push(temp); + }); + }); + } + $scope.selectedSubmissionChange = function( + selectedSubmission) { + $scope.results = []; + $scope.resultsLayers = []; + $scope.resultsLayerTestSuitesNames = []; + $scope.selectedRobotTestResult = []; + var id = selectedSubmission.substring( + selectedSubmission.indexOf("id:") + 4, + selectedSubmission.indexOf("blueprint") - 1); + restAPISvc + .getRestAPI( + "/api/results/getBySubmissionId/" + id, + function(data) { + if (data !== undefined) { + $scope.results = data; + angular + .forEach( + $scope.results, + function(result) { + $scope.resultsLayers + .push(result.blueprintLayer); + }); + } else { + confirm("Error when committing the submission"); + } + }); + } + + $scope.selectedResultsLayerChange = function(selectedLayer) { + $scope.resultsLayerTestSuitesNames = []; + $scope.robotTestResults = []; + $scope.selectedRobotTestResult = []; + var selectedLayerResult = []; + angular.forEach($scope.results, function(result) { + if (result.blueprintLayer === selectedLayer) { + selectedLayerResult = result; + } + }); + $scope.robotTestResults = selectedLayerResult.robotTestResults; + angular.forEach($scope.robotTestResults, function( + robotTestResult) { + $scope.resultsLayerTestSuitesNames + .push(robotTestResult.name); + }); + } + + $scope.selectedTestSuitesNameChange = function( + selectedTestSuiteName) { + angular + .forEach( + $scope.robotTestResults, + function(robotTestResult) { + if (robotTestResult.name.trim() === selectedTestSuiteName + .trim()) { + $scope.selectedRobotTestResult = robotTestResult; + } + }); + } + + }); diff --git a/ui/src/main/webapp/app/AECBlueprintValidationUI/GetBySubmissionId/GetBySubmissionId.html b/ui/src/main/webapp/app/AECBlueprintValidationUI/GetBySubmissionId/GetBySubmissionId.html new file mode 100644 index 0000000..437c42f --- /dev/null +++ b/ui/src/main/webapp/app/AECBlueprintValidationUI/GetBySubmissionId/GetBySubmissionId.html @@ -0,0 +1,178 @@ + + + + + + + + + +Get By Submission Id + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + \ No newline at end of file diff --git a/ui/src/main/webapp/app/AECBlueprintValidationUI/GetBySubmissionId/GetBySubmissionIdTemplate.html b/ui/src/main/webapp/app/AECBlueprintValidationUI/GetBySubmissionId/GetBySubmissionIdTemplate.html new file mode 100644 index 0000000..3e86330 --- /dev/null +++ b/ui/src/main/webapp/app/AECBlueprintValidationUI/GetBySubmissionId/GetBySubmissionIdTemplate.html @@ -0,0 +1,206 @@ + + +
    + + +

    Get results by submission

    + +

    Select Submission:

    + +
    + +
    + +

    Select a blueprint layer of the selected + submission:

    +
    + +
    + +

    Select a test suite of the selected + (submission, layer) pair in order to be displayed:

    +
    + +
    + + +


    + +
    + +

    + Test info +

    + +

    +

    Name: {{selectedRobotTestResult.name}}

    +

    Generated: {{selectedRobotTestResult.robot.generated}}

    +

    Generator: {{selectedRobotTestResult.robot.generator}}

    +

    Errors: {{selectedRobotTestResult.robot.errors}}

    + +

    +

    + Test Statistics +

    +

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

    +

     Total statistics 

    Total 

    Pass 

    Fail 

    Pass / Fail 

    {{ + stat.content }}{{ + (stat.fail * 1) + (stat.pass*1) }}{{ + stat.pass }}{{ + stat.fail}} +
    +
    +
    +
    +
    + +
    + +

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

    +

     Statistics by Tag 

    Total 

    Pass 

    Fail 

    Pass / Fail 

    {{ + stat.content }}{{ + (stat.fail * 1) + (stat.pass*1) }}{{ + stat.pass }}{{ + stat.fail}} +
    +
    +
    +
    +
    + +
    + +

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

    +

     Statistics by Suite 

    Total 

    Pass 

    Fail 

    Pass / Fail 

    {{ + stat.content }}{{ + (stat.fail * 1) + (stat.pass*1) }}{{ + stat.pass }}{{ + stat.fail}} +
    +
    +
    +
    +
    + +
    +
    \ No newline at end of file diff --git a/ui/src/main/webapp/app/AECBlueprintValidationUI/GetBySubmissionId/Route.js b/ui/src/main/webapp/app/AECBlueprintValidationUI/GetBySubmissionId/Route.js new file mode 100644 index 0000000..58c09fd --- /dev/null +++ b/ui/src/main/webapp/app/AECBlueprintValidationUI/GetBySubmissionId/Route.js @@ -0,0 +1,9 @@ +appDS2 + .config(function($routeProvider) { + $routeProvider + + .otherwise({ + templateUrl : 'app/AECBlueprintValidationUI/GetBySubmissionId/GetBySubmissionIdTemplate.html', + controller : "AECGetBySubmissionIdController" + }); + }); \ No newline at end of file diff --git a/ui/src/main/webapp/app/AECBlueprintValidationUI/NewSubmission/AECNewSubmission.js b/ui/src/main/webapp/app/AECBlueprintValidationUI/NewSubmission/AECNewSubmission.js new file mode 100644 index 0000000..6d094b3 --- /dev/null +++ b/ui/src/main/webapp/app/AECBlueprintValidationUI/NewSubmission/AECNewSubmission.js @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +var appDS2 = angular.module("AECNewSubmission", [ 'ngRoute', 'ngMessages', + 'modalServices', 'ngCookies', 'b2b.att', 'gridster', 'ui.bootstrap', + 'ui.bootstrap.modal', 'App.Services' ]); \ No newline at end of file diff --git a/ui/src/main/webapp/resources/js/AECNewSubmissionController.js b/ui/src/main/webapp/app/AECBlueprintValidationUI/NewSubmission/AECNewSubmissionController.js similarity index 62% rename from ui/src/main/webapp/resources/js/AECNewSubmissionController.js rename to ui/src/main/webapp/app/AECBlueprintValidationUI/NewSubmission/AECNewSubmissionController.js index 1cfafc4..f7d0085 100644 --- a/ui/src/main/webapp/resources/js/AECNewSubmissionController.js +++ b/ui/src/main/webapp/app/AECBlueprintValidationUI/NewSubmission/AECNewSubmissionController.js @@ -14,26 +14,24 @@ * limitations under the License. */ -var AECBlueprintValidationUIApp = angular - .module('BlueprintValidationUIManagement'); - -AECBlueprintValidationUIApp +var app = angular.module('AECNewSubmission'); +app .controller( 'AECNewSubmissionController', - function($scope, appContext, restAPISvc) { + function($scope, restAPISvc) { initialize(); function initialize() { restAPISvc .getRestAPI( - "/api/blueprintInstance/", + "/api/blueprintInstanceForValidation/", function(data) { - $scope.blueprintInstances = data; + $scope.blueprintInstancesForValidation = data; $scope.blueprintNames = []; angular .forEach( - $scope.blueprintInstances, + $scope.blueprintInstancesForValidation, function( blueprintInstance) { if ($scope.blueprintNames @@ -43,14 +41,30 @@ AECBlueprintValidationUIApp } }); }); + restAPISvc.getRestAPI("/api/timeslots/", + function(data) { + $scope.timeslots = data; + $scope.declerativeTimeslots = []; + angular.forEach($scope.timeslots, function( + timeslot) { + var temp = "id: " + timeslot.timeslotId + + " Start date and time: " + + timeslot.startDateTime + /* + * + " duration(in sec) :" + + * blueprintInstance["timeslot"].duration + */ + + " lab :" + timeslot.lab.lab; + $scope.declerativeTimeslots.push(temp); + }); + }); } $scope.selectedBluePrintNameChange = function() { $scope.blueprintVersions = []; $scope.blueprintLayers = []; - $scope.declerativeTimeslots = []; angular .forEach( - $scope.blueprintInstances, + $scope.blueprintInstancesForValidation, function(blueprintInstance) { if ($scope.selectedBlueprintName === blueprintInstance["blueprint"]["blueprintName"]) { if ($scope.blueprintVersions @@ -63,10 +77,9 @@ AECBlueprintValidationUIApp } $scope.selectedBluePrintVersionChange = function() { $scope.blueprintLayers = []; - $scope.declerativeTimeslots = []; angular .forEach( - $scope.blueprintInstances, + $scope.blueprintInstancesForValidation, function(blueprintInstance) { if ($scope.selectedBlueprintName === blueprintInstance["blueprint"]["blueprintName"]) { if ($scope.selectedBlueprintVersion === blueprintInstance["version"]) { @@ -79,61 +92,41 @@ AECBlueprintValidationUIApp } }); } - $scope.selectedBluePrintLayerChange = function() { - $scope.declerativeTimeslots = []; - angular - .forEach( - $scope.blueprintInstances, - function(blueprintInstance) { - if ($scope.selectedBlueprintName === blueprintInstance["blueprint"]["blueprintName"]) { - if ($scope.selectedBlueprintVersion === blueprintInstance["version"]) { - if ($scope.selectedBlueprintLayer === blueprintInstance["layer"]) { - var temp = "id: " - + blueprintInstance["timeslot"].timeslotId - + " Start date and time: " - + blueprintInstance["timeslot"].startDateTime - + " duration(in sec) :" - + blueprintInstance["timeslot"].duration - + " lab :" - + blueprintInstance["timeslot"].lab; - if ($scope.declerativeTimeslots - .indexOf(temp) === -1) { - $scope.declerativeTimeslots - .push(temp); - } - } - } - } - }); - } + $scope.submit = function() { var finalBlueprint; + var finalTimeslot; angular .forEach( - $scope.blueprintInstances, + $scope.blueprintInstancesForValidation, function(blueprintInstance) { if (blueprintInstance["blueprint"]["blueprintName"] === $scope.selectedBlueprintName) { if (blueprintInstance["version"] === $scope.selectedBlueprintVersion) { if (blueprintInstance["layer"] === $scope.selectedBlueprintLayer) { - var selectedDeclerativeTimeslotId = $scope.selectedDeclerativeTimeslot - .substring( - $scope.selectedDeclerativeTimeslot - .indexOf("id:") + 4, - $scope.selectedDeclerativeTimeslot - .indexOf("Start date and time:") - 1); - if (selectedDeclerativeTimeslotId - .toString() - .trim() === blueprintInstance["timeslot"]["timeslotId"] - .toString() - .trim()) { - finalBlueprint = blueprintInstance; - } + finalBlueprint = blueprintInstance; } } } }); + var selectedDeclerativeTimeslotId = $scope.selectedDeclerativeTimeslot + .substring( + $scope.selectedDeclerativeTimeslot + .indexOf("id:") + 4, + $scope.selectedDeclerativeTimeslot + .indexOf("Start date and time:") - 1); + angular + .forEach( + $scope.timeslots, + function(timeslot) { + if (selectedDeclerativeTimeslotId + .toString().trim() === timeslot.timeslotId + .toString().trim()) { + finalTimeslot = timeslot; + } + }); var submission = { - "blueprintInstance" : finalBlueprint + "blueprintInstanceForValidation" : finalBlueprint, + "timeslot" : finalTimeslot }; restAPISvc .postRestAPI( diff --git a/ui/src/main/webapp/app/AECBlueprintValidationUI/NewSubmission/NewSubmission.html b/ui/src/main/webapp/app/AECBlueprintValidationUI/NewSubmission/NewSubmission.html new file mode 100644 index 0000000..e551449 --- /dev/null +++ b/ui/src/main/webapp/app/AECBlueprintValidationUI/NewSubmission/NewSubmission.html @@ -0,0 +1,178 @@ + + + + + + + + + +New Submission + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + \ No newline at end of file diff --git a/ui/src/main/webapp/app/AECBlueprintValidationUI/NewSubmission/NewSubmissionTemplate.html b/ui/src/main/webapp/app/AECBlueprintValidationUI/NewSubmission/NewSubmissionTemplate.html new file mode 100644 index 0000000..a84fa05 --- /dev/null +++ b/ui/src/main/webapp/app/AECBlueprintValidationUI/NewSubmission/NewSubmissionTemplate.html @@ -0,0 +1,73 @@ + + +
    +
    +

    New Submission

    +

    Submission form

    + +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    +
    + + +
    +
    + +
    +
    +
    + +
    + +
    +
    +
    diff --git a/ui/src/main/java/org/akraino/validation/ui/common/ServiceInitializationListener.java b/ui/src/main/webapp/app/AECBlueprintValidationUI/NewSubmission/Route.js similarity index 60% rename from ui/src/main/java/org/akraino/validation/ui/common/ServiceInitializationListener.java rename to ui/src/main/webapp/app/AECBlueprintValidationUI/NewSubmission/Route.js index e4836ad..6f95fcc 100644 --- a/ui/src/main/java/org/akraino/validation/ui/common/ServiceInitializationListener.java +++ b/ui/src/main/webapp/app/AECBlueprintValidationUI/NewSubmission/Route.js @@ -13,18 +13,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.akraino.validation.ui.common; -import org.springframework.context.ApplicationListener; -import org.springframework.context.event.ContextRefreshedEvent; -import org.springframework.stereotype.Component; +appDS2 + .config(function($routeProvider) { + $routeProvider -@Component -public class ServiceInitializationListener implements ApplicationListener { - - @Override - public void onApplicationEvent(ContextRefreshedEvent event) { - - } - -} + .otherwise({ + templateUrl : 'app/AECBlueprintValidationUI/NewSubmission/NewSubmissionTemplate.html', + controller : "AECNewSubmissionController" + }); + }); \ No newline at end of file diff --git a/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/font_icons.css b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/font_icons.css new file mode 100644 index 0000000..0aa5b85 --- /dev/null +++ b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/font_icons.css @@ -0,0 +1 @@ +/* font_icons.css is in open source - this empty file prevents 404 error in browser */ diff --git a/ui/src/main/webapp/app/fusion/external/ds2/css/digital-ng-library/ecomp-ionicons.css b/ui/src/main/webapp/app/fusion/external/ds2/css/digital-ng-library/ecomp-ionicons.css new file mode 100644 index 0000000..f3b546d --- /dev/null +++ b/ui/src/main/webapp/app/fusion/external/ds2/css/digital-ng-library/ecomp-ionicons.css @@ -0,0 +1,288 @@ +@charset "UTF-8"; + +@font-face { + font-family: "Ionicons"; + src: url("../fonts/ionicons.eot?v=2.0.0"); + src: url("../fonts/ionicons.eot?v=2.0.0#iefix") + format("embedded-opentype"), + url("../fonts/ionicons.ttf?v=2.0.0") format("truetype"), + url("../fonts/ionicons.woff?v=2.0.0") format("woff"), + url("../fonts/ionicons.svg?v=2.0.0#Ionicons") format("svg"); + font-weight: normal; + font-style: normal; +} + +.ionicons, .icon-controls-upPRIMARY, .icon-arrows-download:before, + .icon-securityalerts-alertL:before, .icon-controls-add-maximize:before, + .icon-controls-add-maximize-circle:before, .icon-misc-time:before, + .icoSecurityalerts:before, .icon-apps-marketplace:before, + .icon-content-grid:before, .icon-documents-archive:before, + .icon-arrows-vertical-arrow-down:before, .icoArrows-download:before, + .icoArrows-incoming-call:before, .icon-arrows-outgoing-call:before, + .icon-arrows-upload:before, .icon-arrows-straight-arrow:before, + .icoArrows-vertical-arrow:before, .icon-people-userbookmark:before, + .icon-controls-check:before, .icon-chevron-down:before, + .icon-controls-down:before, .icon-controls-left:before, + .icon-controls-right:before, .icon-chevron-up:before, + .icoDocuments-report:before, .icon-edit:before, .icon-controls-up:before, + .icon-overview:before, .icon-settings:before, .icon-building-home:before, + .icon-documents-book:before, .icoDocuments-book-outline:before, + .icoDocuments-bookmarks:before, .icoDocuments-bookmarks-outline:before, + .icon-add-widget:before, .icon-documents-copy:before, + .icon-content-flag:before, .icon-primary-accordion-minus:before, + .icon-misc-piechart:before, .icon-misc-piechart-outline:before, + .icon-primary-accordion-plus:before, .icon-star:before, + .icon-building-door:before, .icon-content-gridguide:before, + .icon-user:before, .icon-people-oneperson:before, + .icon-people-oneperson-add:before, .icon-people-oneperson-stalker:before, + .icon-controls-pointer:before, .icon-arrows-replay-restart:before, + .icon-content-star:before, .icon-misc-trash:before, .icon-misc-pen:before, + .ion-navicon:before, .icon-primary-close:before, .close:before, + .reset-field:before, .icon-datanetwork-softwareasaservice:before, + .icon-datanetwork-messaging2:before, + .icon-controls-settingsconnectedactivity:before, .icon-arrows-upload:before + { + display: inline-block; + font-family: "Ionicons"; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + text-rendering: auto; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.icoSecurityalerts-alert:before { + content: "\f100"; +} + +.icon-arrows-download:before { + content: "\f41f"; +} + +.icon-controls-add-maximize:before { + content: "\f2c7"; +} + +.icon-controls-add-maximize-circle:before { + content: "\f359"; +} + +.icon-misc-time:before { + content: "\f35a"; +} + +.icoSecurityalerts:before { + content: "\f35b"; +} + +.icon-content-grid:before { + content: "\f35c"; +} + +.icon-documents-archive:before { + content: "\f2c9"; +} + +.icon-arrows-vertical-arrow-down:before { + content: "\f35d"; +} + +.icon-arrows-download:before { + content: "\f35e"; +} + +.icon-arrows-incoming-call:before { + content: "\f360"; +} + +.icoArrows-outgoing-call:before { + content: "\f362"; +} + +.icoArrows-upload:before { + content: "\f364"; +} + +.icoArrows-straight-arrow:before { + content: "\f30f"; +} + +.icon-arrows-vertical-arrow:before { + content: "\f366"; +} + +.icon-people-userbookmark:before { + content: "\f39f"; +} + +.icon-controls-check:before { + content: "\f121"; +} + +.icon-chevron-down:before { + content: "\f123"; +} + +.icon-controls-left:before { + content: "\f124"; +} + +.icon-controls-right:before { + content: "\f125"; +} + +.icon-chevron-up:before { + content: "\f126"; +} + +.icoDocuments-report:before { + content: "\f274"; +} + +.icon-overview:before { + content: "\f133"; +} + +.icon-controls-down:before { + content: "\f3d0"; +} + +.icon-controls-up:before { + content: "\f3d8"; +} + +.icon-documents-book:before { + content: "\f3e8"; +} + +.icoDocuments-book-outline:before { + content: "\f3e7"; +} + +.icoDocuments-bookmarks:before { + content: "\f3ea"; +} + +.icoDocuments-bookmarks-outline:before { + content: "\f3e9"; +} + +.icon-documents-copy:before { + content: "\f41c"; +} + +.icon-content-flag:before { + content: "\f42d"; +} + +.icon-primary-accordion-minus:before { + content: "\f463"; +} + +.icon-misc-piechart:before { + content: "\f484"; +} + +.icon-misc-piechart-outline:before { + content: "\f483"; +} + +.icon-primary-accordion-plus:before { + content: "\f48a"; +} + +.icon-building-door:before { + content: "\f29f"; +} + +.icon-content-gridguide:before { + content: "\f20d"; +} + +.icon-people-oneperson:before { + content: "\f213"; +} + +.icon-people-oneperson-add:before { + content: "\f211"; +} + +.icon-people-oneperson-stalker:before { + content: "\f212"; +} + +.icon-arrows-replay-restart:before { + content: "\f21c"; +} + +.icon-misc-trash:before { + content: "\f252"; +} + +.icon-arrows-upload:before { + content: "\f255"; +} + +.icon-user:before { + content: "\f213"; +} + +.icon-star:before { + content: "\f4b3"; +} + +.icon-edit:before { + content: "\f2bf"; +} + +.icon-settings:before { + content: "\f13d"; +} + +.icon-apps-marketplace:before { + content: "\f35c"; +} + +.icon-add-widget:before { + content: "\f3f0"; +} + +.icon-controls-upPRIMARY:before { + content: "\f3d8"; +} + +.icon-misc-pen:before { + content: "\f2bf"; +} + +.ion-navicon:before { + content: "\f20e"; +} + +.icon-building-home:before { + content: "\f144"; +} + +.icon-content-star:before { + content: "\f24e"; +} + +.icon-primary-close:before, .close:before, .reset-field:before { + content: "\f129"; +} + +.icon-datanetwork-softwareasaservice:before { + content: "\f40c"; +} + +.icon-datanetwork-messaging2:before { + content: "\f132"; +} + +.icon-controls-settingsconnectedactivity:before { + content: "\f411"; +} \ No newline at end of file diff --git a/ui/src/main/webapp/app/fusion/external/ds2/css/digital-ng-library/ionicons.css b/ui/src/main/webapp/app/fusion/external/ds2/css/digital-ng-library/ionicons.css new file mode 100644 index 0000000..bf2665c --- /dev/null +++ b/ui/src/main/webapp/app/fusion/external/ds2/css/digital-ng-library/ionicons.css @@ -0,0 +1,3297 @@ +@charset "UTF-8"; +/*! + Ionicons, v2.0.0 + Created by Ben Sperry for the Ionic Framework, http://ionicons.com/ + https://twitter.com/benjsperry https://twitter.com/ionicframework + MIT License: https://github.com/driftyco/ionicons + + Android-style icons originally built by Google’s + Material Design Icons: https://github.com/google/material-design-icons + used under CC BY http://creativecommons.org/licenses/by/4.0/ + Modified icons to fit ionicon’s grid from original. +*/ +@font-face { + font-family: "Ionicons"; + src: url("../fonts/ionicons.eot?v=2.0.0"); + src: url("../fonts/ionicons.eot?v=2.0.0#iefix") + format("embedded-opentype"), + url("../fonts/ionicons.ttf?v=2.0.0") format("truetype"), + url("../fonts/ionicons.woff?v=2.0.0") format("woff"), + url("../fonts/ionicons.svg?v=2.0.0#Ionicons") format("svg"); + font-weight: normal; + font-style: normal; +} + +.ion, .ionicons, .ion-alert:before, .ion-alert-circled:before, + .ion-android-add:before, .ion-android-add-circle:before, + .ion-android-alarm-clock:before, .ion-android-alert:before, + .ion-android-apps:before, .ion-android-archive:before, + .ion-android-arrow-back:before, .ion-android-arrow-down:before, + .ion-android-arrow-dropdown:before, + .ion-android-arrow-dropdown-circle:before, + .ion-android-arrow-dropleft:before, + .ion-android-arrow-dropleft-circle:before, + .ion-android-arrow-dropright:before, + .ion-android-arrow-dropright-circle:before, + .ion-android-arrow-dropup:before, .ion-android-arrow-dropup-circle:before, + .ion-android-arrow-forward:before, .ion-android-arrow-up:before, + .ion-android-attach:before, .ion-android-bar:before, + .ion-android-bicycle:before, .ion-android-boat:before, + .ion-android-bookmark:before, .ion-android-bulb:before, + .ion-android-bus:before, .ion-android-calendar:before, + .ion-android-call:before, .ion-android-camera:before, + .ion-android-cancel:before, .ion-android-car:before, + .ion-android-cart:before, .ion-android-chat:before, + .ion-android-checkbox:before, .ion-android-checkbox-blank:before, + .ion-android-checkbox-outline:before, + .ion-android-checkbox-outline-blank:before, + .ion-android-checkmark-circle:before, .ion-android-clipboard:before, + .ion-android-close:before, .ion-android-cloud:before, + .ion-android-cloud-circle:before, .ion-android-cloud-done:before, + .ion-android-cloud-outline:before, .ion-android-color-palette:before, + .ion-android-compass:before, .ion-android-contact:before, + .ion-android-contacts:before, .ion-android-contract:before, + .ion-android-create:before, .ion-android-delete:before, + .ion-android-desktop:before, .ion-android-document:before, + .ion-android-done:before, .ion-android-done-all:before, + .ion-android-download:before, .ion-android-drafts:before, + .ion-android-exit:before, .ion-android-expand:before, + .ion-android-favorite:before, .ion-android-favorite-outline:before, + .ion-android-film:before, .ion-android-folder:before, + .ion-android-folder-open:before, .ion-android-funnel:before, + .ion-android-globe:before, .ion-android-hand:before, + .ion-android-hangout:before, .ion-android-happy:before, + .ion-android-home:before, .ion-android-image:before, + .ion-android-laptop:before, .ion-android-list:before, + .ion-android-locate:before, .ion-android-lock:before, + .ion-android-mail:before, .ion-android-map:before, .ion-android-menu:before, + .ion-android-microphone:before, .ion-android-microphone-off:before, + .ion-android-more-horizontal:before, .ion-android-more-vertical:before, + .ion-android-navigate:before, .ion-android-notifications:before, + .ion-android-notifications-none:before, + .ion-android-notifications-off:before, .ion-android-open:before, + .ion-android-options:before, .ion-android-people:before, + .ion-android-person:before, .ion-android-person-add:before, + .ion-android-phone-landscape:before, .ion-android-phone-portrait:before, + .ion-android-pin:before, .ion-android-plane:before, + .ion-android-playstore:before, .ion-android-print:before, + .ion-android-radio-button-off:before, .ion-android-radio-button-on:before, + .ion-android-refresh:before, .ion-android-remove:before, + .ion-android-remove-circle:before, .ion-android-restaurant:before, + .ion-android-sad:before, .ion-android-search:before, + .ion-android-send:before, .ion-android-settings:before, + .ion-android-share:before, .ion-android-share-alt:before, + .ion-android-star:before, .ion-android-star-half:before, + .ion-android-star-outline:before, .ion-android-stopwatch:before, + .ion-android-subway:before, .ion-android-sunny:before, + .ion-android-sync:before, .ion-android-textsms:before, + .ion-android-time:before, .ion-android-train:before, + .ion-android-unlock:before, .ion-android-upload:before, + .ion-android-volume-down:before, .ion-android-volume-mute:before, + .ion-android-volume-off:before, .ion-android-volume-up:before, + .ion-android-walk:before, .ion-android-warning:before, + .ion-android-watch:before, .ion-android-wifi:before, .ion-aperture:before, + .ion-archive:before, .ion-arrow-down-a:before, .ion-arrow-down-b:before, + .ion-arrow-down-c:before, .ion-arrow-expand:before, + .ion-arrow-graph-down-left:before, .ion-arrow-graph-down-right:before, + .ion-arrow-graph-up-left:before, .ion-arrow-graph-up-right:before, + .ion-arrow-left-a:before, .ion-arrow-left-b:before, + .ion-arrow-left-c:before, .ion-arrow-move:before, .ion-arrow-resize:before, + .ion-arrow-return-left:before, .ion-arrow-return-right:before, + .ion-arrow-right-a:before, .ion-arrow-right-b:before, + .ion-arrow-right-c:before, .ion-arrow-shrink:before, .ion-arrow-swap:before, + .ion-arrow-up-a:before, .ion-arrow-up-b:before, .ion-arrow-up-c:before, + .ion-asterisk:before, .ion-at:before, .ion-backspace:before, + .ion-backspace-outline:before, .ion-bag:before, + .ion-battery-charging:before, .ion-battery-empty:before, + .ion-battery-full:before, .ion-battery-half:before, .ion-battery-low:before, + .ion-beaker:before, .ion-beer:before, .ion-bluetooth:before, + .ion-bonfire:before, .ion-bookmark:before, .ion-bowtie:before, + .ion-briefcase:before, .ion-bug:before, .ion-calculator:before, + .ion-calendar:before, .ion-camera:before, .ion-card:before, + .ion-cash:before, .ion-chatbox:before, .ion-chatbox-working:before, + .ion-chatboxes:before, .ion-chatbubble:before, + .ion-chatbubble-working:before, .ion-chatbubbles:before, + .ion-checkmark:before, .ion-checkmark-circled:before, + .ion-checkmark-round:before, .ion-chevron-down:before, + .ion-chevron-left:before, .ion-chevron-right:before, .ion-chevron-up:before, + .ion-clipboard:before, .ion-clock:before, .ion-close:before, + .ion-close-circled:before, .ion-close-round:before, + .ion-closed-captioning:before, .ion-cloud:before, .ion-code:before, + .ion-code-download:before, .ion-code-working:before, .ion-coffee:before, + .ion-compass:before, .ion-compose:before, .ion-connection-bars:before, + .ion-contrast:before, .ion-crop:before, .ion-cube:before, .ion-disc:before, + .ion-document:before, .ion-document-text:before, .ion-drag:before, + .ion-earth:before, .ion-easel:before, .ion-edit:before, .ion-egg:before, + .ion-eject:before, .ion-email:before, .ion-email-unread:before, + .ion-erlenmeyer-flask:before, .ion-erlenmeyer-flask-bubbles:before, + .ion-eye:before, .ion-eye-disabled:before, .ion-female:before, + .ion-filing:before, .ion-film-marker:before, .ion-fireball:before, + .ion-flag:before, .ion-flame:before, .ion-flash:before, + .ion-flash-off:before, .ion-folder:before, .ion-fork:before, + .ion-fork-repo:before, .ion-forward:before, .ion-funnel:before, + .ion-gear-a:before, .ion-gear-b:before, .ion-grid:before, + .ion-hammer:before, .ion-happy:before, .ion-happy-outline:before, + .ion-headphone:before, .ion-heart:before, .ion-heart-broken:before, + .ion-help:before, .ion-help-buoy:before, .ion-help-circled:before, + .ion-home:before, .ion-icecream:before, .ion-image:before, + .ion-images:before, .ion-information:before, + .ion-information-circled:before, .ion-ionic:before, .ion-ios-alarm:before, + .ion-ios-alarm-outline:before, .ion-ios-albums:before, + .ion-ios-albums-outline:before, .ion-ios-americanfootball:before, + .ion-ios-americanfootball-outline:before, .ion-ios-analytics:before, + .ion-ios-analytics-outline:before, .ion-ios-arrow-back:before, + .ion-ios-arrow-down:before, .ion-ios-arrow-forward:before, + .ion-ios-arrow-left:before, .ion-ios-arrow-right:before, + .ion-ios-arrow-thin-down:before, .ion-ios-arrow-thin-left:before, + .ion-ios-arrow-thin-right:before, .ion-ios-arrow-thin-up:before, + .ion-ios-arrow-up:before, .ion-ios-at:before, .ion-ios-at-outline:before, + .ion-ios-barcode:before, .ion-ios-barcode-outline:before, + .ion-ios-baseball:before, .ion-ios-baseball-outline:before, + .ion-ios-basketball:before, .ion-ios-basketball-outline:before, + .ion-ios-bell:before, .ion-ios-bell-outline:before, .ion-ios-body:before, + .ion-ios-body-outline:before, .ion-ios-bolt:before, + .ion-ios-bolt-outline:before, .ion-ios-book:before, + .ion-ios-book-outline:before, .ion-ios-bookmarks:before, + .ion-ios-bookmarks-outline:before, .ion-ios-box:before, + .ion-ios-box-outline:before, .ion-ios-briefcase:before, + .ion-ios-briefcase-outline:before, .ion-ios-browsers:before, + .ion-ios-browsers-outline:before, .ion-ios-calculator:before, + .ion-ios-calculator-outline:before, .ion-ios-calendar:before, + .ion-ios-calendar-outline:before, .ion-ios-camera:before, + .ion-ios-camera-outline:before, .ion-ios-cart:before, + .ion-ios-cart-outline:before, .ion-ios-chatboxes:before, + .ion-ios-chatboxes-outline:before, .ion-ios-chatbubble:before, + .ion-ios-chatbubble-outline:before, .ion-ios-checkmark:before, + .ion-ios-checkmark-empty:before, .ion-ios-checkmark-outline:before, + .ion-ios-circle-filled:before, .ion-ios-circle-outline:before, + .ion-ios-clock:before, .ion-ios-clock-outline:before, .ion-ios-close:before, + .ion-ios-close-empty:before, .ion-ios-close-outline:before, + .ion-ios-cloud:before, .ion-ios-cloud-download:before, + .ion-ios-cloud-download-outline:before, .ion-ios-cloud-outline:before, + .ion-ios-cloud-upload:before, .ion-ios-cloud-upload-outline:before, + .ion-ios-cloudy:before, .ion-ios-cloudy-night:before, + .ion-ios-cloudy-night-outline:before, .ion-ios-cloudy-outline:before, + .ion-ios-cog:before, .ion-ios-cog-outline:before, + .ion-ios-color-filter:before, .ion-ios-color-filter-outline:before, + .ion-ios-color-wand:before, .ion-ios-color-wand-outline:before, + .ion-ios-compose:before, .ion-ios-compose-outline:before, + .ion-ios-contact:before, .ion-ios-contact-outline:before, + .ion-ios-copy:before, .ion-ios-copy-outline:before, .ion-ios-crop:before, + .ion-ios-crop-strong:before, .ion-ios-download:before, + .ion-ios-download-outline:before, .ion-ios-drag:before, + .ion-ios-email:before, .ion-ios-email-outline:before, .ion-ios-eye:before, + .ion-ios-eye-outline:before, .ion-ios-fastforward:before, + .ion-ios-fastforward-outline:before, .ion-ios-filing:before, + .ion-ios-filing-outline:before, .ion-ios-film:before, + .ion-ios-film-outline:before, .ion-ios-flag:before, + .ion-ios-flag-outline:before, .ion-ios-flame:before, + .ion-ios-flame-outline:before, .ion-ios-flask:before, + .ion-ios-flask-outline:before, .ion-ios-flower:before, + .ion-ios-flower-outline:before, .ion-ios-folder:before, + .ion-ios-folder-outline:before, .ion-ios-football:before, + .ion-ios-football-outline:before, .ion-ios-game-controller-a:before, + .ion-ios-game-controller-a-outline:before, + .ion-ios-game-controller-b:before, + .ion-ios-game-controller-b-outline:before, .ion-ios-gear:before, + .ion-ios-gear-outline:before, .ion-ios-glasses:before, + .ion-ios-glasses-outline:before, .ion-ios-grid-view:before, + .ion-ios-grid-view-outline:before, .ion-ios-heart:before, + .ion-ios-heart-outline:before, .ion-ios-help:before, + .ion-ios-help-empty:before, .ion-ios-help-outline:before, + .ion-ios-home:before, .ion-ios-home-outline:before, + .ion-ios-infinite:before, .ion-ios-infinite-outline:before, + .ion-ios-information:before, .ion-ios-information-empty:before, + .ion-ios-information-outline:before, .ion-ios-ionic-outline:before, + .ion-ios-keypad:before, .ion-ios-keypad-outline:before, + .ion-ios-lightbulb:before, .ion-ios-lightbulb-outline:before, + .ion-ios-list:before, .ion-ios-list-outline:before, + .ion-ios-location:before, .ion-ios-location-outline:before, + .ion-ios-locked:before, .ion-ios-locked-outline:before, + .ion-ios-loop:before, .ion-ios-loop-strong:before, .ion-ios-medical:before, + .ion-ios-medical-outline:before, .ion-ios-medkit:before, + .ion-ios-medkit-outline:before, .ion-ios-mic:before, + .ion-ios-mic-off:before, .ion-ios-mic-outline:before, .ion-ios-minus:before, + .ion-ios-minus-empty:before, .ion-ios-minus-outline:before, + .ion-ios-monitor:before, .ion-ios-monitor-outline:before, + .ion-ios-moon:before, .ion-ios-moon-outline:before, .ion-ios-more:before, + .ion-ios-more-outline:before, .ion-ios-musical-note:before, + .ion-ios-musical-notes:before, .ion-ios-navigate:before, + .ion-ios-navigate-outline:before, .ion-ios-nutrition:before, + .ion-ios-nutrition-outline:before, .ion-ios-paper:before, + .ion-ios-paper-outline:before, .ion-ios-paperplane:before, + .ion-ios-paperplane-outline:before, .ion-ios-partlysunny:before, + .ion-ios-partlysunny-outline:before, .ion-ios-pause:before, + .ion-ios-pause-outline:before, .ion-ios-paw:before, + .ion-ios-paw-outline:before, .ion-ios-people:before, + .ion-ios-people-outline:before, .ion-ios-person:before, + .ion-ios-person-outline:before, .ion-ios-personadd:before, + .ion-ios-personadd-outline:before, .ion-ios-photos:before, + .ion-ios-photos-outline:before, .ion-ios-pie:before, + .ion-ios-pie-outline:before, .ion-ios-pint:before, + .ion-ios-pint-outline:before, .ion-ios-play:before, + .ion-ios-play-outline:before, .ion-ios-plus:before, + .ion-ios-plus-empty:before, .ion-ios-plus-outline:before, + .ion-ios-pricetag:before, .ion-ios-pricetag-outline:before, + .ion-ios-pricetags:before, .ion-ios-pricetags-outline:before, + .ion-ios-printer:before, .ion-ios-printer-outline:before, + .ion-ios-pulse:before, .ion-ios-pulse-strong:before, .ion-ios-rainy:before, + .ion-ios-rainy-outline:before, .ion-ios-recording:before, + .ion-ios-recording-outline:before, .ion-ios-redo:before, + .ion-ios-redo-outline:before, .ion-ios-refresh:before, + .ion-ios-refresh-empty:before, .ion-ios-refresh-outline:before, + .ion-ios-reload:before, .ion-ios-reverse-camera:before, + .ion-ios-reverse-camera-outline:before, .ion-ios-rewind:before, + .ion-ios-rewind-outline:before, .ion-ios-rose:before, + .ion-ios-rose-outline:before, .ion-ios-search:before, + .ion-ios-search-strong:before, .ion-ios-settings:before, + .ion-ios-settings-strong:before, .ion-ios-shuffle:before, + .ion-ios-shuffle-strong:before, .ion-ios-skipbackward:before, + .ion-ios-skipbackward-outline:before, .ion-ios-skipforward:before, + .ion-ios-skipforward-outline:before, .ion-ios-snowy:before, + .ion-ios-speedometer:before, .ion-ios-speedometer-outline:before, + .ion-ios-star:before, .ion-ios-star-half:before, + .ion-ios-star-outline:before, .ion-ios-stopwatch:before, + .ion-ios-stopwatch-outline:before, .ion-ios-sunny:before, + .ion-ios-sunny-outline:before, .ion-ios-telephone:before, + .ion-ios-telephone-outline:before, .ion-ios-tennisball:before, + .ion-ios-tennisball-outline:before, .ion-ios-thunderstorm:before, + .ion-ios-thunderstorm-outline:before, .ion-ios-time:before, + .ion-ios-time-outline:before, .ion-ios-timer:before, + .ion-ios-timer-outline:before, .ion-ios-toggle:before, + .ion-ios-toggle-outline:before, .ion-ios-trash:before, + .ion-ios-trash-outline:before, .ion-ios-undo:before, + .ion-ios-undo-outline:before, .ion-ios-unlocked:before, + .ion-ios-unlocked-outline:before, .ion-ios-upload:before, + .ion-ios-upload-outline:before, .ion-ios-videocam:before, + .ion-ios-videocam-outline:before, .ion-ios-volume-high:before, + .ion-ios-volume-low:before, .ion-ios-wineglass:before, + .ion-ios-wineglass-outline:before, .ion-ios-world:before, + .ion-ios-world-outline:before, .ion-ipad:before, .ion-iphone:before, + .ion-ipod:before, .ion-jet:before, .ion-key:before, .ion-knife:before, + .ion-laptop:before, .ion-leaf:before, .ion-levels:before, + .ion-lightbulb:before, .ion-link:before, .ion-load-a:before, + .ion-load-b:before, .ion-load-c:before, .ion-load-d:before, + .ion-location:before, .ion-lock-combination:before, .ion-locked:before, + .ion-log-in:before, .ion-log-out:before, .ion-loop:before, + .ion-magnet:before, .ion-male:before, .ion-man:before, .ion-map:before, + .ion-medkit:before, .ion-merge:before, .ion-mic-a:before, .ion-mic-b:before, + .ion-mic-c:before, .ion-minus:before, .ion-minus-circled:before, + .ion-minus-round:before, .ion-model-s:before, .ion-monitor:before, + .ion-more:before, .ion-mouse:before, .ion-music-note:before, + .ion-navicon:before, .ion-navicon-round:before, .ion-navigate:before, + .ion-network:before, .ion-no-smoking:before, .ion-nuclear:before, + .ion-outlet:before, .ion-paintbrush:before, .ion-paintbucket:before, + .ion-paper-airplane:before, .ion-paperclip:before, .ion-pause:before, + .ion-person:before, .ion-person-add:before, .ion-person-stalker:before, + .ion-pie-graph:before, .ion-pin:before, .ion-pinpoint:before, + .ion-pizza:before, .ion-plane:before, .ion-planet:before, .ion-play:before, + .ion-playstation:before, .ion-plus:before, .ion-plus-circled:before, + .ion-plus-round:before, .ion-podium:before, .ion-pound:before, + .ion-power:before, .ion-pricetag:before, .ion-pricetags:before, + .ion-printer:before, .ion-pull-request:before, .ion-qr-scanner:before, + .ion-quote:before, .ion-radio-waves:before, .ion-record:before, + .ion-refresh:before, .ion-reply:before, .ion-reply-all:before, + .ion-ribbon-a:before, .ion-ribbon-b:before, .ion-sad:before, + .ion-sad-outline:before, .ion-scissors:before, .ion-search:before, + .ion-settings:before, .ion-share:before, .ion-shuffle:before, + .ion-skip-backward:before, .ion-skip-forward:before, + .ion-social-android:before, .ion-social-android-outline:before, + .ion-social-angular:before, .ion-social-angular-outline:before, + .ion-social-apple:before, .ion-social-apple-outline:before, + .ion-social-bitcoin:before, .ion-social-bitcoin-outline:before, + .ion-social-buffer:before, .ion-social-buffer-outline:before, + .ion-social-chrome:before, .ion-social-chrome-outline:before, + .ion-social-codepen:before, .ion-social-codepen-outline:before, + .ion-social-css3:before, .ion-social-css3-outline:before, + .ion-social-designernews:before, .ion-social-designernews-outline:before, + .ion-social-dribbble:before, .ion-social-dribbble-outline:before, + .ion-social-dropbox:before, .ion-social-dropbox-outline:before, + .ion-social-euro:before, .ion-social-euro-outline:before, + .ion-social-facebook:before, .ion-social-facebook-outline:before, + .ion-social-foursquare:before, .ion-social-foursquare-outline:before, + .ion-social-freebsd-devil:before, .ion-social-github:before, + .ion-social-github-outline:before, .ion-social-google:before, + .ion-social-google-outline:before, .ion-social-googleplus:before, + .ion-social-googleplus-outline:before, .ion-social-hackernews:before, + .ion-social-hackernews-outline:before, .ion-social-html5:before, + .ion-social-html5-outline:before, .ion-social-instagram:before, + .ion-social-instagram-outline:before, .ion-social-javascript:before, + .ion-social-javascript-outline:before, .ion-social-linkedin:before, + .ion-social-linkedin-outline:before, .ion-social-markdown:before, + .ion-social-nodejs:before, .ion-social-octocat:before, + .ion-social-pinterest:before, .ion-social-pinterest-outline:before, + .ion-social-python:before, .ion-social-reddit:before, + .ion-social-reddit-outline:before, .ion-social-rss:before, + .ion-social-rss-outline:before, .ion-social-sass:before, + .ion-social-skype:before, .ion-social-skype-outline:before, + .ion-social-snapchat:before, .ion-social-snapchat-outline:before, + .ion-social-tumblr:before, .ion-social-tumblr-outline:before, + .ion-social-tux:before, .ion-social-twitch:before, + .ion-social-twitch-outline:before, .ion-social-twitter:before, + .ion-social-twitter-outline:before, .ion-social-usd:before, + .ion-social-usd-outline:before, .ion-social-vimeo:before, + .ion-social-vimeo-outline:before, .ion-social-whatsapp:before, + .ion-social-whatsapp-outline:before, .ion-social-windows:before, + .ion-social-windows-outline:before, .ion-social-wordpress:before, + .ion-social-wordpress-outline:before, .ion-social-yahoo:before, + .ion-social-yahoo-outline:before, .ion-social-yen:before, + .ion-social-yen-outline:before, .ion-social-youtube:before, + .ion-social-youtube-outline:before, .ion-soup-can:before, + .ion-soup-can-outline:before, .ion-speakerphone:before, + .ion-speedometer:before, .ion-spoon:before, .ion-star:before, + .ion-stats-bars:before, .ion-steam:before, .ion-stop:before, + .ion-thermometer:before, .ion-thumbsdown:before, .ion-thumbsup:before, + .ion-toggle:before, .ion-toggle-filled:before, .ion-transgender:before, + .ion-trash-a:before, .ion-trash-b:before, .ion-trophy:before, + .ion-tshirt:before, .ion-tshirt-outline:before, .ion-umbrella:before, + .ion-university:before, .ion-unlocked:before, .ion-upload:before, + .ion-usb:before, .ion-videocamera:before, .ion-volume-high:before, + .ion-volume-low:before, .ion-volume-medium:before, .ion-volume-mute:before, + .ion-wand:before, .ion-waterdrop:before, .ion-wifi:before, + .ion-wineglass:before, .ion-woman:before, .ion-wrench:before, + .ion-xbox:before { + display: inline-block; + font-family: "Ionicons"; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + text-rendering: auto; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.ion-alert:before { + content: "\f101"; +} + +.ion-alert-circled:before { + content: "\f100"; +} + +.ion-android-add:before { + content: "\f2c7"; +} + +.ion-android-add-circle:before { + content: "\f359"; +} + +.ion-android-alarm-clock:before { + content: "\f35a"; +} + +.ion-android-alert:before { + content: "\f35b"; +} + +.ion-android-apps:before { + content: "\f35c"; +} + +.ion-android-archive:before { + content: "\f2c9"; +} + +.ion-android-arrow-back:before { + content: "\f2ca"; +} + +.ion-android-arrow-down:before { + content: "\f35d"; +} + +.ion-android-arrow-dropdown:before { + content: "\f35f"; +} + +.ion-android-arrow-dropdown-circle:before { + content: "\f35e"; +} + +.ion-android-arrow-dropleft:before { + content: "\f361"; +} + +.ion-android-arrow-dropleft-circle:before { + content: "\f360"; +} + +.ion-android-arrow-dropright:before { + content: "\f363"; +} + +.ion-android-arrow-dropright-circle:before { + content: "\f362"; +} + +.ion-android-arrow-dropup:before { + content: "\f365"; +} + +.ion-android-arrow-dropup-circle:before { + content: "\f364"; +} + +.ion-android-arrow-forward:before { + content: "\f30f"; +} + +.ion-android-arrow-up:before { + content: "\f366"; +} + +.ion-android-attach:before { + content: "\f367"; +} + +.ion-android-bar:before { + content: "\f368"; +} + +.ion-android-bicycle:before { + content: "\f369"; +} + +.ion-android-boat:before { + content: "\f36a"; +} + +.ion-android-bookmark:before { + content: "\f36b"; +} + +.ion-android-bulb:before { + content: "\f36c"; +} + +.ion-android-bus:before { + content: "\f36d"; +} + +.ion-android-calendar:before { + content: "\f2d1"; +} + +.ion-android-call:before { + content: "\f2d2"; +} + +.ion-android-camera:before { + content: "\f2d3"; +} + +.ion-android-cancel:before { + content: "\f36e"; +} + +.ion-android-car:before { + content: "\f36f"; +} + +.ion-android-cart:before { + content: "\f370"; +} + +.ion-android-chat:before { + content: "\f2d4"; +} + +.ion-android-checkbox:before { + content: "\f374"; +} + +.ion-android-checkbox-blank:before { + content: "\f371"; +} + +.ion-android-checkbox-outline:before { + content: "\f373"; +} + +.ion-android-checkbox-outline-blank:before { + content: "\f372"; +} + +.ion-android-checkmark-circle:before { + content: "\f375"; +} + +.ion-android-clipboard:before { + content: "\f376"; +} + +.ion-android-close:before { + content: "\f2d7"; +} + +.ion-android-cloud:before { + content: "\f37a"; +} + +.ion-android-cloud-circle:before { + content: "\f377"; +} + +.ion-android-cloud-done:before { + content: "\f378"; +} + +.ion-android-cloud-outline:before { + content: "\f379"; +} + +.ion-android-color-palette:before { + content: "\f37b"; +} + +.ion-android-compass:before { + content: "\f37c"; +} + +.ion-android-contact:before { + content: "\f2d8"; +} + +.ion-android-contacts:before { + content: "\f2d9"; +} + +.ion-android-contract:before { + content: "\f37d"; +} + +.ion-android-create:before { + content: "\f37e"; +} + +.ion-android-delete:before { + content: "\f37f"; +} + +.ion-android-desktop:before { + content: "\f380"; +} + +.ion-android-document:before { + content: "\f381"; +} + +.ion-android-done:before { + content: "\f383"; +} + +.ion-android-done-all:before { + content: "\f382"; +} + +.ion-android-download:before { + content: "\f2dd"; +} + +.ion-android-drafts:before { + content: "\f384"; +} + +.ion-android-exit:before { + content: "\f385"; +} + +.ion-android-expand:before { + content: "\f386"; +} + +.ion-android-favorite:before { + content: "\f388"; +} + +.ion-android-favorite-outline:before { + content: "\f387"; +} + +.ion-android-film:before { + content: "\f389"; +} + +.ion-android-folder:before { + content: "\f2e0"; +} + +.ion-android-folder-open:before { + content: "\f38a"; +} + +.ion-android-funnel:before { + content: "\f38b"; +} + +.ion-android-globe:before { + content: "\f38c"; +} + +.ion-android-hand:before { + content: "\f2e3"; +} + +.ion-android-hangout:before { + content: "\f38d"; +} + +.ion-android-happy:before { + content: "\f38e"; +} + +.ion-android-home:before { + content: "\f38f"; +} + +.ion-android-image:before { + content: "\f2e4"; +} + +.ion-android-laptop:before { + content: "\f390"; +} + +.ion-android-list:before { + content: "\f391"; +} + +.ion-android-locate:before { + content: "\f2e9"; +} + +.ion-android-lock:before { + content: "\f392"; +} + +.ion-android-mail:before { + content: "\f2eb"; +} + +.ion-android-map:before { + content: "\f393"; +} + +.ion-android-menu:before { + content: "\f394"; +} + +.ion-android-microphone:before { + content: "\f2ec"; +} + +.ion-android-microphone-off:before { + content: "\f395"; +} + +.ion-android-more-horizontal:before { + content: "\f396"; +} + +.ion-android-more-vertical:before { + content: "\f397"; +} + +.ion-android-navigate:before { + content: "\f398"; +} + +.ion-android-notifications:before { + content: "\f39b"; +} + +.ion-android-notifications-none:before { + content: "\f399"; +} + +.ion-android-notifications-off:before { + content: "\f39a"; +} + +.ion-android-open:before { + content: "\f39c"; +} + +.ion-android-options:before { + content: "\f39d"; +} + +.ion-android-people:before { + content: "\f39e"; +} + +.ion-android-person:before { + content: "\f3a0"; +} + +.ion-android-person-add:before { + content: "\f39f"; +} + +.ion-android-phone-landscape:before { + content: "\f3a1"; +} + +.ion-android-phone-portrait:before { + content: "\f3a2"; +} + +.ion-android-pin:before { + content: "\f3a3"; +} + +.ion-android-plane:before { + content: "\f3a4"; +} + +.ion-android-playstore:before { + content: "\f2f0"; +} + +.ion-android-print:before { + content: "\f3a5"; +} + +.ion-android-radio-button-off:before { + content: "\f3a6"; +} + +.ion-android-radio-button-on:before { + content: "\f3a7"; +} + +.ion-android-refresh:before { + content: "\f3a8"; +} + +.ion-android-remove:before { + content: "\f2f4"; +} + +.ion-android-remove-circle:before { + content: "\f3a9"; +} + +.ion-android-restaurant:before { + content: "\f3aa"; +} + +.ion-android-sad:before { + content: "\f3ab"; +} + +.ion-android-search:before { + content: "\f2f5"; +} + +.ion-android-send:before { + content: "\f2f6"; +} + +.ion-android-settings:before { + content: "\f2f7"; +} + +.ion-android-share:before { + content: "\f2f8"; +} + +.ion-android-share-alt:before { + content: "\f3ac"; +} + +.ion-android-star:before { + content: "\f2fc"; +} + +.ion-android-star-half:before { + content: "\f3ad"; +} + +.ion-android-star-outline:before { + content: "\f3ae"; +} + +.ion-android-stopwatch:before { + content: "\f2fd"; +} + +.ion-android-subway:before { + content: "\f3af"; +} + +.ion-android-sunny:before { + content: "\f3b0"; +} + +.ion-android-sync:before { + content: "\f3b1"; +} + +.ion-android-textsms:before { + content: "\f3b2"; +} + +.ion-android-time:before { + content: "\f3b3"; +} + +.ion-android-train:before { + content: "\f3b4"; +} + +.ion-android-unlock:before { + content: "\f3b5"; +} + +.ion-android-upload:before { + content: "\f3b6"; +} + +.ion-android-volume-down:before { + content: "\f3b7"; +} + +.ion-android-volume-mute:before { + content: "\f3b8"; +} + +.ion-android-volume-off:before { + content: "\f3b9"; +} + +.ion-android-volume-up:before { + content: "\f3ba"; +} + +.ion-android-walk:before { + content: "\f3bb"; +} + +.ion-android-warning:before { + content: "\f3bc"; +} + +.ion-android-watch:before { + content: "\f3bd"; +} + +.ion-android-wifi:before { + content: "\f305"; +} + +.ion-aperture:before { + content: "\f313"; +} + +.ion-archive:before { + content: "\f102"; +} + +.ion-arrow-down-a:before { + content: "\f103"; +} + +.ion-arrow-down-b:before { + content: "\f104"; +} + +.ion-arrow-down-c:before { + content: "\f105"; +} + +.ion-arrow-expand:before { + content: "\f25e"; +} + +.ion-arrow-graph-down-left:before { + content: "\f25f"; +} + +.ion-arrow-graph-down-right:before { + content: "\f260"; +} + +.ion-arrow-graph-up-left:before { + content: "\f261"; +} + +.ion-arrow-graph-up-right:before { + content: "\f262"; +} + +.ion-arrow-left-a:before { + content: "\f106"; +} + +.ion-arrow-left-b:before { + content: "\f107"; +} + +.ion-arrow-left-c:before { + content: "\f108"; +} + +.ion-arrow-move:before { + content: "\f263"; +} + +.ion-arrow-resize:before { + content: "\f264"; +} + +.ion-arrow-return-left:before { + content: "\f265"; +} + +.ion-arrow-return-right:before { + content: "\f266"; +} + +.ion-arrow-right-a:before { + content: "\f109"; +} + +.ion-arrow-right-b:before { + content: "\f10a"; +} + +.ion-arrow-right-c:before { + content: "\f10b"; +} + +.ion-arrow-shrink:before { + content: "\f267"; +} + +.ion-arrow-swap:before { + content: "\f268"; +} + +.ion-arrow-up-a:before { + content: "\f10c"; +} + +.ion-arrow-up-b:before { + content: "\f10d"; +} + +.ion-arrow-up-c:before { + content: "\f10e"; +} + +.ion-asterisk:before { + content: "\f314"; +} + +.ion-at:before { + content: "\f10f"; +} + +.ion-backspace:before { + content: "\f3bf"; +} + +.ion-backspace-outline:before { + content: "\f3be"; +} + +.ion-bag:before { + content: "\f110"; +} + +.ion-battery-charging:before { + content: "\f111"; +} + +.ion-battery-empty:before { + content: "\f112"; +} + +.ion-battery-full:before { + content: "\f113"; +} + +.ion-battery-half:before { + content: "\f114"; +} + +.ion-battery-low:before { + content: "\f115"; +} + +.ion-beaker:before { + content: "\f269"; +} + +.ion-beer:before { + content: "\f26a"; +} + +.ion-bluetooth:before { + content: "\f116"; +} + +.ion-bonfire:before { + content: "\f315"; +} + +.ion-bookmark:before { + content: "\f26b"; +} + +.ion-bowtie:before { + content: "\f3c0"; +} + +.ion-briefcase:before { + content: "\f26c"; +} + +.ion-bug:before { + content: "\f2be"; +} + +.ion-calculator:before { + content: "\f26d"; +} + +.ion-calendar:before { + content: "\f117"; +} + +.ion-camera:before { + content: "\f118"; +} + +.ion-card:before { + content: "\f119"; +} + +.ion-cash:before { + content: "\f316"; +} + +.ion-chatbox:before { + content: "\f11b"; +} + +.ion-chatbox-working:before { + content: "\f11a"; +} + +.ion-chatboxes:before { + content: "\f11c"; +} + +.ion-chatbubble:before { + content: "\f11e"; +} + +.ion-chatbubble-working:before { + content: "\f11d"; +} + +.ion-chatbubbles:before { + content: "\f11f"; +} + +.ion-checkmark:before { + content: "\f122"; +} + +.ion-checkmark-circled:before { + content: "\f120"; +} + +.ion-checkmark-round:before { + content: "\f121"; +} + +.ion-chevron-down:before { + content: "\f123"; +} + +.ion-chevron-left:before { + content: "\f124"; +} + +.ion-chevron-right:before { + content: "\f125"; +} + +.ion-chevron-up:before { + content: "\f126"; +} + +.ion-clipboard:before { + content: "\f127"; +} + +.ion-clock:before { + content: "\f26e"; +} + +.ion-close:before { + content: "\f12a"; +} + +.ion-close-circled:before { + content: "\f128"; +} + +.ion-close-round:before { + content: "\f129"; +} + +.ion-closed-captioning:before { + content: "\f317"; +} + +.ion-cloud:before { + content: "\f12b"; +} + +.ion-code:before { + content: "\f271"; +} + +.ion-code-download:before { + content: "\f26f"; +} + +.ion-code-working:before { + content: "\f270"; +} + +.ion-coffee:before { + content: "\f272"; +} + +.ion-compass:before { + content: "\f273"; +} + +.ion-compose:before { + content: "\f12c"; +} + +.ion-connection-bars:before { + content: "\f274"; +} + +.ion-contrast:before { + content: "\f275"; +} + +.ion-crop:before { + content: "\f3c1"; +} + +.ion-cube:before { + content: "\f318"; +} + +.ion-disc:before { + content: "\f12d"; +} + +.ion-document:before { + content: "\f12f"; +} + +.ion-document-text:before { + content: "\f12e"; +} + +.ion-drag:before { + content: "\f130"; +} + +.ion-earth:before { + content: "\f276"; +} + +.ion-easel:before { + content: "\f3c2"; +} + +.ion-edit:before { + content: "\f2bf"; +} + +.ion-egg:before { + content: "\f277"; +} + +.ion-eject:before { + content: "\f131"; +} + +.ion-email:before { + content: "\f132"; +} + +.ion-email-unread:before { + content: "\f3c3"; +} + +.ion-erlenmeyer-flask:before { + content: "\f3c5"; +} + +.ion-erlenmeyer-flask-bubbles:before { + content: "\f3c4"; +} + +.ion-eye:before { + content: "\f133"; +} + +.ion-eye-disabled:before { + content: "\f306"; +} + +.ion-female:before { + content: "\f278"; +} + +.ion-filing:before { + content: "\f134"; +} + +.ion-film-marker:before { + content: "\f135"; +} + +.ion-fireball:before { + content: "\f319"; +} + +.ion-flag:before { + content: "\f279"; +} + +.ion-flame:before { + content: "\f31a"; +} + +.ion-flash:before { + content: "\f137"; +} + +.ion-flash-off:before { + content: "\f136"; +} + +.ion-folder:before { + content: "\f139"; +} + +.ion-fork:before { + content: "\f27a"; +} + +.ion-fork-repo:before { + content: "\f2c0"; +} + +.ion-forward:before { + content: "\f13a"; +} + +.ion-funnel:before { + content: "\f31b"; +} + +.ion-gear-a:before { + content: "\f13d"; +} + +.ion-gear-b:before { + content: "\f13e"; +} + +.ion-grid:before { + content: "\f13f"; +} + +.ion-hammer:before { + content: "\f27b"; +} + +.ion-happy:before { + content: "\f31c"; +} + +.ion-happy-outline:before { + content: "\f3c6"; +} + +.ion-headphone:before { + content: "\f140"; +} + +.ion-heart:before { + content: "\f141"; +} + +.ion-heart-broken:before { + content: "\f31d"; +} + +.ion-help:before { + content: "\f143"; +} + +.ion-help-buoy:before { + content: "\f27c"; +} + +.ion-help-circled:before { + content: "\f142"; +} + +.ion-home:before { + content: "\f144"; +} + +.ion-icecream:before { + content: "\f27d"; +} + +.ion-image:before { + content: "\f147"; +} + +.ion-images:before { + content: "\f148"; +} + +.ion-information:before { + content: "\f14a"; +} + +.ion-information-circled:before { + content: "\f149"; +} + +.ion-ionic:before { + content: "\f14b"; +} + +.ion-ios-alarm:before { + content: "\f3c8"; +} + +.ion-ios-alarm-outline:before { + content: "\f3c7"; +} + +.ion-ios-albums:before { + content: "\f3ca"; +} + +.ion-ios-albums-outline:before { + content: "\f3c9"; +} + +.ion-ios-americanfootball:before { + content: "\f3cc"; +} + +.ion-ios-americanfootball-outline:before { + content: "\f3cb"; +} + +.ion-ios-analytics:before { + content: "\f3ce"; +} + +.ion-ios-analytics-outline:before { + content: "\f3cd"; +} + +.ion-ios-arrow-back:before { + content: "\f3cf"; +} + +.ion-ios-arrow-down:before { + content: "\f3d0"; +} + +.ion-ios-arrow-forward:before { + content: "\f3d1"; +} + +.ion-ios-arrow-left:before { + content: "\f3d2"; +} + +.ion-ios-arrow-right:before { + content: "\f3d3"; +} + +.ion-ios-arrow-thin-down:before { + content: "\f3d4"; +} + +.ion-ios-arrow-thin-left:before { + content: "\f3d5"; +} + +.ion-ios-arrow-thin-right:before { + content: "\f3d6"; +} + +.ion-ios-arrow-thin-up:before { + content: "\f3d7"; +} + +.ion-ios-arrow-up:before { + content: "\f3d8"; +} + +.ion-ios-at:before { + content: "\f3da"; +} + +.ion-ios-at-outline:before { + content: "\f3d9"; +} + +.ion-ios-barcode:before { + content: "\f3dc"; +} + +.ion-ios-barcode-outline:before { + content: "\f3db"; +} + +.ion-ios-baseball:before { + content: "\f3de"; +} + +.ion-ios-baseball-outline:before { + content: "\f3dd"; +} + +.ion-ios-basketball:before { + content: "\f3e0"; +} + +.ion-ios-basketball-outline:before { + content: "\f3df"; +} + +.ion-ios-bell:before { + content: "\f3e2"; +} + +.ion-ios-bell-outline:before { + content: "\f3e1"; +} + +.ion-ios-body:before { + content: "\f3e4"; +} + +.ion-ios-body-outline:before { + content: "\f3e3"; +} + +.ion-ios-bolt:before { + content: "\f3e6"; +} + +.ion-ios-bolt-outline:before { + content: "\f3e5"; +} + +.ion-ios-book:before { + content: "\f3e8"; +} + +.ion-ios-book-outline:before { + content: "\f3e7"; +} + +.ion-ios-bookmarks:before { + content: "\f3ea"; +} + +.ion-ios-bookmarks-outline:before { + content: "\f3e9"; +} + +.ion-ios-box:before { + content: "\f3ec"; +} + +.ion-ios-box-outline:before { + content: "\f3eb"; +} + +.ion-ios-briefcase:before { + content: "\f3ee"; +} + +.ion-ios-briefcase-outline:before { + content: "\f3ed"; +} + +.ion-ios-browsers:before { + content: "\f3f0"; +} + +.ion-ios-browsers-outline:before { + content: "\f3ef"; +} + +.ion-ios-calculator:before { + content: "\f3f2"; +} + +.ion-ios-calculator-outline:before { + content: "\f3f1"; +} + +.ion-ios-calendar:before { + content: "\f3f4"; +} + +.ion-ios-calendar-outline:before { + content: "\f3f3"; +} + +.ion-ios-camera:before { + content: "\f3f6"; +} + +.ion-ios-camera-outline:before { + content: "\f3f5"; +} + +.ion-ios-cart:before { + content: "\f3f8"; +} + +.ion-ios-cart-outline:before { + content: "\f3f7"; +} + +.ion-ios-chatboxes:before { + content: "\f3fa"; +} + +.ion-ios-chatboxes-outline:before { + content: "\f3f9"; +} + +.ion-ios-chatbubble:before { + content: "\f3fc"; +} + +.ion-ios-chatbubble-outline:before { + content: "\f3fb"; +} + +.ion-ios-checkmark:before { + content: "\f3ff"; +} + +.ion-ios-checkmark-empty:before { + content: "\f3fd"; +} + +.ion-ios-checkmark-outline:before { + content: "\f3fe"; +} + +.ion-ios-circle-filled:before { + content: "\f400"; +} + +.ion-ios-circle-outline:before { + content: "\f401"; +} + +.ion-ios-clock:before { + content: "\f403"; +} + +.ion-ios-clock-outline:before { + content: "\f402"; +} + +.ion-ios-close:before { + content: "\f406"; +} + +.ion-ios-close-empty:before { + content: "\f404"; +} + +.ion-ios-close-outline:before { + content: "\f405"; +} + +.ion-ios-cloud:before { + content: "\f40c"; +} + +.ion-ios-cloud-download:before { + content: "\f408"; +} + +.ion-ios-cloud-download-outline:before { + content: "\f407"; +} + +.ion-ios-cloud-outline:before { + content: "\f409"; +} + +.ion-ios-cloud-upload:before { + content: "\f40b"; +} + +.ion-ios-cloud-upload-outline:before { + content: "\f40a"; +} + +.ion-ios-cloudy:before { + content: "\f410"; +} + +.ion-ios-cloudy-night:before { + content: "\f40e"; +} + +.ion-ios-cloudy-night-outline:before { + content: "\f40d"; +} + +.ion-ios-cloudy-outline:before { + content: "\f40f"; +} + +.ion-ios-cog:before { + content: "\f412"; +} + +.ion-ios-cog-outline:before { + content: "\f411"; +} + +.ion-ios-color-filter:before { + content: "\f414"; +} + +.ion-ios-color-filter-outline:before { + content: "\f413"; +} + +.ion-ios-color-wand:before { + content: "\f416"; +} + +.ion-ios-color-wand-outline:before { + content: "\f415"; +} + +.ion-ios-compose:before { + content: "\f418"; +} + +.ion-ios-compose-outline:before { + content: "\f417"; +} + +.ion-ios-contact:before { + content: "\f41a"; +} + +.ion-ios-contact-outline:before { + content: "\f419"; +} + +.ion-ios-copy:before { + content: "\f41c"; +} + +.ion-ios-copy-outline:before { + content: "\f41b"; +} + +.ion-ios-crop:before { + content: "\f41e"; +} + +.ion-ios-crop-strong:before { + content: "\f41d"; +} + +.ion-ios-download:before { + content: "\f420"; +} + +.ion-ios-download-outline:before { + content: "\f41f"; +} + +.ion-ios-drag:before { + content: "\f421"; +} + +.ion-ios-email:before { + content: "\f423"; +} + +.ion-ios-email-outline:before { + content: "\f422"; +} + +.ion-ios-eye:before { + content: "\f425"; +} + +.ion-ios-eye-outline:before { + content: "\f424"; +} + +.ion-ios-fastforward:before { + content: "\f427"; +} + +.ion-ios-fastforward-outline:before { + content: "\f426"; +} + +.ion-ios-filing:before { + content: "\f429"; +} + +.ion-ios-filing-outline:before { + content: "\f428"; +} + +.ion-ios-film:before { + content: "\f42b"; +} + +.ion-ios-film-outline:before { + content: "\f42a"; +} + +.ion-ios-flag:before { + content: "\f42d"; +} + +.ion-ios-flag-outline:before { + content: "\f42c"; +} + +.ion-ios-flame:before { + content: "\f42f"; +} + +.ion-ios-flame-outline:before { + content: "\f42e"; +} + +.ion-ios-flask:before { + content: "\f431"; +} + +.ion-ios-flask-outline:before { + content: "\f430"; +} + +.ion-ios-flower:before { + content: "\f433"; +} + +.ion-ios-flower-outline:before { + content: "\f432"; +} + +.ion-ios-folder:before { + content: "\f435"; +} + +.ion-ios-folder-outline:before { + content: "\f434"; +} + +.ion-ios-football:before { + content: "\f437"; +} + +.ion-ios-football-outline:before { + content: "\f436"; +} + +.ion-ios-game-controller-a:before { + content: "\f439"; +} + +.ion-ios-game-controller-a-outline:before { + content: "\f438"; +} + +.ion-ios-game-controller-b:before { + content: "\f43b"; +} + +.ion-ios-game-controller-b-outline:before { + content: "\f43a"; +} + +.ion-ios-gear:before { + content: "\f43d"; +} + +.ion-ios-gear-outline:before { + content: "\f43c"; +} + +.ion-ios-glasses:before { + content: "\f43f"; +} + +.ion-ios-glasses-outline:before { + content: "\f43e"; +} + +.ion-ios-grid-view:before { + content: "\f441"; +} + +.ion-ios-grid-view-outline:before { + content: "\f440"; +} + +.ion-ios-heart:before { + content: "\f443"; +} + +.ion-ios-heart-outline:before { + content: "\f442"; +} + +.ion-ios-help:before { + content: "\f446"; +} + +.ion-ios-help-empty:before { + content: "\f444"; +} + +.ion-ios-help-outline:before { + content: "\f445"; +} + +.ion-ios-home:before { + content: "\f448"; +} + +.ion-ios-home-outline:before { + content: "\f447"; +} + +.ion-ios-infinite:before { + content: "\f44a"; +} + +.ion-ios-infinite-outline:before { + content: "\f449"; +} + +.ion-ios-information:before { + content: "\f44d"; +} + +.ion-ios-information-empty:before { + content: "\f44b"; +} + +.ion-ios-information-outline:before { + content: "\f44c"; +} + +.ion-ios-ionic-outline:before { + content: "\f44e"; +} + +.ion-ios-keypad:before { + content: "\f450"; +} + +.ion-ios-keypad-outline:before { + content: "\f44f"; +} + +.ion-ios-lightbulb:before { + content: "\f452"; +} + +.ion-ios-lightbulb-outline:before { + content: "\f451"; +} + +.ion-ios-list:before { + content: "\f454"; +} + +.ion-ios-list-outline:before { + content: "\f453"; +} + +.ion-ios-location:before { + content: "\f456"; +} + +.ion-ios-location-outline:before { + content: "\f455"; +} + +.ion-ios-locked:before { + content: "\f458"; +} + +.ion-ios-locked-outline:before { + content: "\f457"; +} + +.ion-ios-loop:before { + content: "\f45a"; +} + +.ion-ios-loop-strong:before { + content: "\f459"; +} + +.ion-ios-medical:before { + content: "\f45c"; +} + +.ion-ios-medical-outline:before { + content: "\f45b"; +} + +.ion-ios-medkit:before { + content: "\f45e"; +} + +.ion-ios-medkit-outline:before { + content: "\f45d"; +} + +.ion-ios-mic:before { + content: "\f461"; +} + +.ion-ios-mic-off:before { + content: "\f45f"; +} + +.ion-ios-mic-outline:before { + content: "\f460"; +} + +.ion-ios-minus:before { + content: "\f464"; +} + +.ion-ios-minus-empty:before { + content: "\f462"; +} + +.ion-ios-minus-outline:before { + content: "\f463"; +} + +.ion-ios-monitor:before { + content: "\f466"; +} + +.ion-ios-monitor-outline:before { + content: "\f465"; +} + +.ion-ios-moon:before { + content: "\f468"; +} + +.ion-ios-moon-outline:before { + content: "\f467"; +} + +.ion-ios-more:before { + content: "\f46a"; +} + +.ion-ios-more-outline:before { + content: "\f469"; +} + +.ion-ios-musical-note:before { + content: "\f46b"; +} + +.ion-ios-musical-notes:before { + content: "\f46c"; +} + +.ion-ios-navigate:before { + content: "\f46e"; +} + +.ion-ios-navigate-outline:before { + content: "\f46d"; +} + +.ion-ios-nutrition:before { + content: "\f470"; +} + +.ion-ios-nutrition-outline:before { + content: "\f46f"; +} + +.ion-ios-paper:before { + content: "\f472"; +} + +.ion-ios-paper-outline:before { + content: "\f471"; +} + +.ion-ios-paperplane:before { + content: "\f474"; +} + +.ion-ios-paperplane-outline:before { + content: "\f473"; +} + +.ion-ios-partlysunny:before { + content: "\f476"; +} + +.ion-ios-partlysunny-outline:before { + content: "\f475"; +} + +.ion-ios-pause:before { + content: "\f478"; +} + +.ion-ios-pause-outline:before { + content: "\f477"; +} + +.ion-ios-paw:before { + content: "\f47a"; +} + +.ion-ios-paw-outline:before { + content: "\f479"; +} + +.ion-ios-people:before { + content: "\f47c"; +} + +.ion-ios-people-outline:before { + content: "\f47b"; +} + +.ion-ios-person:before { + content: "\f47e"; +} + +.ion-ios-person-outline:before { + content: "\f47d"; +} + +.ion-ios-personadd:before { + content: "\f480"; +} + +.ion-ios-personadd-outline:before { + content: "\f47f"; +} + +.ion-ios-photos:before { + content: "\f482"; +} + +.ion-ios-photos-outline:before { + content: "\f481"; +} + +.ion-ios-pie:before { + content: "\f484"; +} + +.ion-ios-pie-outline:before { + content: "\f483"; +} + +.ion-ios-pint:before { + content: "\f486"; +} + +.ion-ios-pint-outline:before { + content: "\f485"; +} + +.ion-ios-play:before { + content: "\f488"; +} + +.ion-ios-play-outline:before { + content: "\f487"; +} + +.ion-ios-plus:before { + content: "\f48b"; +} + +.ion-ios-plus-empty:before { + content: "\f489"; +} + +.ion-ios-plus-outline:before { + content: "\f48a"; +} + +.ion-ios-pricetag:before { + content: "\f48d"; +} + +.ion-ios-pricetag-outline:before { + content: "\f48c"; +} + +.ion-ios-pricetags:before { + content: "\f48f"; +} + +.ion-ios-pricetags-outline:before { + content: "\f48e"; +} + +.ion-ios-printer:before { + content: "\f491"; +} + +.ion-ios-printer-outline:before { + content: "\f490"; +} + +.ion-ios-pulse:before { + content: "\f493"; +} + +.ion-ios-pulse-strong:before { + content: "\f492"; +} + +.ion-ios-rainy:before { + content: "\f495"; +} + +.ion-ios-rainy-outline:before { + content: "\f494"; +} + +.ion-ios-recording:before { + content: "\f497"; +} + +.ion-ios-recording-outline:before { + content: "\f496"; +} + +.ion-ios-redo:before { + content: "\f499"; +} + +.ion-ios-redo-outline:before { + content: "\f498"; +} + +.ion-ios-refresh:before { + content: "\f49c"; +} + +.ion-ios-refresh-empty:before { + content: "\f49a"; +} + +.ion-ios-refresh-outline:before { + content: "\f49b"; +} + +.ion-ios-reload:before { + content: "\f49d"; +} + +.ion-ios-reverse-camera:before { + content: "\f49f"; +} + +.ion-ios-reverse-camera-outline:before { + content: "\f49e"; +} + +.ion-ios-rewind:before { + content: "\f4a1"; +} + +.ion-ios-rewind-outline:before { + content: "\f4a0"; +} + +.ion-ios-rose:before { + content: "\f4a3"; +} + +.ion-ios-rose-outline:before { + content: "\f4a2"; +} + +.ion-ios-search:before { + content: "\f4a5"; +} + +.ion-ios-search-strong:before { + content: "\f4a4"; +} + +.ion-ios-settings:before { + content: "\f4a7"; +} + +.ion-ios-settings-strong:before { + content: "\f4a6"; +} + +.ion-ios-shuffle:before { + content: "\f4a9"; +} + +.ion-ios-shuffle-strong:before { + content: "\f4a8"; +} + +.ion-ios-skipbackward:before { + content: "\f4ab"; +} + +.ion-ios-skipbackward-outline:before { + content: "\f4aa"; +} + +.ion-ios-skipforward:before { + content: "\f4ad"; +} + +.ion-ios-skipforward-outline:before { + content: "\f4ac"; +} + +.ion-ios-snowy:before { + content: "\f4ae"; +} + +.ion-ios-speedometer:before { + content: "\f4b0"; +} + +.ion-ios-speedometer-outline:before { + content: "\f4af"; +} + +.ion-ios-star:before { + content: "\f4b3"; +} + +.ion-ios-star-half:before { + content: "\f4b1"; +} + +.ion-ios-star-outline:before { + content: "\f4b2"; +} + +.ion-ios-stopwatch:before { + content: "\f4b5"; +} + +.ion-ios-stopwatch-outline:before { + content: "\f4b4"; +} + +.ion-ios-sunny:before { + content: "\f4b7"; +} + +.ion-ios-sunny-outline:before { + content: "\f4b6"; +} + +.ion-ios-telephone:before { + content: "\f4b9"; +} + +.ion-ios-telephone-outline:before { + content: "\f4b8"; +} + +.ion-ios-tennisball:before { + content: "\f4bb"; +} + +.ion-ios-tennisball-outline:before { + content: "\f4ba"; +} + +.ion-ios-thunderstorm:before { + content: "\f4bd"; +} + +.ion-ios-thunderstorm-outline:before { + content: "\f4bc"; +} + +.ion-ios-time:before { + content: "\f4bf"; +} + +.ion-ios-time-outline:before { + content: "\f4be"; +} + +.ion-ios-timer:before { + content: "\f4c1"; +} + +.ion-ios-timer-outline:before { + content: "\f4c0"; +} + +.ion-ios-toggle:before { + content: "\f4c3"; +} + +.ion-ios-toggle-outline:before { + content: "\f4c2"; +} + +.ion-ios-trash:before { + content: "\f4c5"; +} + +.ion-ios-trash-outline:before { + content: "\f4c4"; +} + +.ion-ios-undo:before { + content: "\f4c7"; +} + +.ion-ios-undo-outline:before { + content: "\f4c6"; +} + +.ion-ios-unlocked:before { + content: "\f4c9"; +} + +.ion-ios-unlocked-outline:before { + content: "\f4c8"; +} + +.ion-ios-upload:before { + content: "\f4cb"; +} + +.ion-ios-upload-outline:before { + content: "\f4ca"; +} + +.ion-ios-videocam:before { + content: "\f4cd"; +} + +.ion-ios-videocam-outline:before { + content: "\f4cc"; +} + +.ion-ios-volume-high:before { + content: "\f4ce"; +} + +.ion-ios-volume-low:before { + content: "\f4cf"; +} + +.ion-ios-wineglass:before { + content: "\f4d1"; +} + +.ion-ios-wineglass-outline:before { + content: "\f4d0"; +} + +.ion-ios-world:before { + content: "\f4d3"; +} + +.ion-ios-world-outline:before { + content: "\f4d2"; +} + +.ion-ipad:before { + content: "\f1f9"; +} + +.ion-iphone:before { + content: "\f1fa"; +} + +.ion-ipod:before { + content: "\f1fb"; +} + +.ion-jet:before { + content: "\f295"; +} + +.ion-key:before { + content: "\f296"; +} + +.ion-knife:before { + content: "\f297"; +} + +.ion-laptop:before { + content: "\f1fc"; +} + +.ion-leaf:before { + content: "\f1fd"; +} + +.ion-levels:before { + content: "\f298"; +} + +.ion-lightbulb:before { + content: "\f299"; +} + +.ion-link:before { + content: "\f1fe"; +} + +.ion-load-a:before { + content: "\f29a"; +} + +.ion-load-b:before { + content: "\f29b"; +} + +.ion-load-c:before { + content: "\f29c"; +} + +.ion-load-d:before { + content: "\f29d"; +} + +.ion-location:before { + content: "\f1ff"; +} + +.ion-lock-combination:before { + content: "\f4d4"; +} + +.ion-locked:before { + content: "\f200"; +} + +.ion-log-in:before { + content: "\f29e"; +} + +.ion-log-out:before { + content: "\f29f"; +} + +.ion-loop:before { + content: "\f201"; +} + +.ion-magnet:before { + content: "\f2a0"; +} + +.ion-male:before { + content: "\f2a1"; +} + +.ion-man:before { + content: "\f202"; +} + +.ion-map:before { + content: "\f203"; +} + +.ion-medkit:before { + content: "\f2a2"; +} + +.ion-merge:before { + content: "\f33f"; +} + +.ion-mic-a:before { + content: "\f204"; +} + +.ion-mic-b:before { + content: "\f205"; +} + +.ion-mic-c:before { + content: "\f206"; +} + +.ion-minus:before { + content: "\f209"; +} + +.ion-minus-circled:before { + content: "\f207"; +} + +.ion-minus-round:before { + content: "\f208"; +} + +.ion-model-s:before { + content: "\f2c1"; +} + +.ion-monitor:before { + content: "\f20a"; +} + +.ion-more:before { + content: "\f20b"; +} + +.ion-mouse:before { + content: "\f340"; +} + +.ion-music-note:before { + content: "\f20c"; +} + +.ion-navicon:before { + content: "\f20e"; +} + +.ion-navicon-round:before { + content: "\f20d"; +} + +.ion-navigate:before { + content: "\f2a3"; +} + +.ion-network:before { + content: "\f341"; +} + +.ion-no-smoking:before { + content: "\f2c2"; +} + +.ion-nuclear:before { + content: "\f2a4"; +} + +.ion-outlet:before { + content: "\f342"; +} + +.ion-paintbrush:before { + content: "\f4d5"; +} + +.ion-paintbucket:before { + content: "\f4d6"; +} + +.ion-paper-airplane:before { + content: "\f2c3"; +} + +.ion-paperclip:before { + content: "\f20f"; +} + +.ion-pause:before { + content: "\f210"; +} + +.ion-person:before { + content: "\f213"; +} + +.ion-person-add:before { + content: "\f211"; +} + +.ion-person-stalker:before { + content: "\f212"; +} + +.ion-pie-graph:before { + content: "\f2a5"; +} + +.ion-pin:before { + content: "\f2a6"; +} + +.ion-pinpoint:before { + content: "\f2a7"; +} + +.ion-pizza:before { + content: "\f2a8"; +} + +.ion-plane:before { + content: "\f214"; +} + +.ion-planet:before { + content: "\f343"; +} + +.ion-play:before { + content: "\f215"; +} + +.ion-playstation:before { + content: "\f30a"; +} + +.ion-plus:before { + content: "\f218"; +} + +.ion-plus-circled:before { + content: "\f216"; +} + +.ion-plus-round:before { + content: "\f217"; +} + +.ion-podium:before { + content: "\f344"; +} + +.ion-pound:before { + content: "\f219"; +} + +.ion-power:before { + content: "\f2a9"; +} + +.ion-pricetag:before { + content: "\f2aa"; +} + +.ion-pricetags:before { + content: "\f2ab"; +} + +.ion-printer:before { + content: "\f21a"; +} + +.ion-pull-request:before { + content: "\f345"; +} + +.ion-qr-scanner:before { + content: "\f346"; +} + +.ion-quote:before { + content: "\f347"; +} + +.ion-radio-waves:before { + content: "\f2ac"; +} + +.ion-record:before { + content: "\f21b"; +} + +.ion-refresh:before { + content: "\f21c"; +} + +.ion-reply:before { + content: "\f21e"; +} + +.ion-reply-all:before { + content: "\f21d"; +} + +.ion-ribbon-a:before { + content: "\f348"; +} + +.ion-ribbon-b:before { + content: "\f349"; +} + +.ion-sad:before { + content: "\f34a"; +} + +.ion-sad-outline:before { + content: "\f4d7"; +} + +.ion-scissors:before { + content: "\f34b"; +} + +.ion-search:before { + content: "\f21f"; +} + +.ion-settings:before { + content: "\f2ad"; +} + +.ion-share:before { + content: "\f220"; +} + +.ion-shuffle:before { + content: "\f221"; +} + +.ion-skip-backward:before { + content: "\f222"; +} + +.ion-skip-forward:before { + content: "\f223"; +} + +.ion-social-android:before { + content: "\f225"; +} + +.ion-social-android-outline:before { + content: "\f224"; +} + +.ion-social-angular:before { + content: "\f4d9"; +} + +.ion-social-angular-outline:before { + content: "\f4d8"; +} + +.ion-social-apple:before { + content: "\f227"; +} + +.ion-social-apple-outline:before { + content: "\f226"; +} + +.ion-social-bitcoin:before { + content: "\f2af"; +} + +.ion-social-bitcoin-outline:before { + content: "\f2ae"; +} + +.ion-social-buffer:before { + content: "\f229"; +} + +.ion-social-buffer-outline:before { + content: "\f228"; +} + +.ion-social-chrome:before { + content: "\f4db"; +} + +.ion-social-chrome-outline:before { + content: "\f4da"; +} + +.ion-social-codepen:before { + content: "\f4dd"; +} + +.ion-social-codepen-outline:before { + content: "\f4dc"; +} + +.ion-social-css3:before { + content: "\f4df"; +} + +.ion-social-css3-outline:before { + content: "\f4de"; +} + +.ion-social-designernews:before { + content: "\f22b"; +} + +.ion-social-designernews-outline:before { + content: "\f22a"; +} + +.ion-social-dribbble:before { + content: "\f22d"; +} + +.ion-social-dribbble-outline:before { + content: "\f22c"; +} + +.ion-social-dropbox:before { + content: "\f22f"; +} + +.ion-social-dropbox-outline:before { + content: "\f22e"; +} + +.ion-social-euro:before { + content: "\f4e1"; +} + +.ion-social-euro-outline:before { + content: "\f4e0"; +} + +.ion-social-facebook:before { + content: "\f231"; +} + +.ion-social-facebook-outline:before { + content: "\f230"; +} + +.ion-social-foursquare:before { + content: "\f34d"; +} + +.ion-social-foursquare-outline:before { + content: "\f34c"; +} + +.ion-social-freebsd-devil:before { + content: "\f2c4"; +} + +.ion-social-github:before { + content: "\f233"; +} + +.ion-social-github-outline:before { + content: "\f232"; +} + +.ion-social-google:before { + content: "\f34f"; +} + +.ion-social-google-outline:before { + content: "\f34e"; +} + +.ion-social-googleplus:before { + content: "\f235"; +} + +.ion-social-googleplus-outline:before { + content: "\f234"; +} + +.ion-social-hackernews:before { + content: "\f237"; +} + +.ion-social-hackernews-outline:before { + content: "\f236"; +} + +.ion-social-html5:before { + content: "\f4e3"; +} + +.ion-social-html5-outline:before { + content: "\f4e2"; +} + +.ion-social-instagram:before { + content: "\f351"; +} + +.ion-social-instagram-outline:before { + content: "\f350"; +} + +.ion-social-javascript:before { + content: "\f4e5"; +} + +.ion-social-javascript-outline:before { + content: "\f4e4"; +} + +.ion-social-linkedin:before { + content: "\f239"; +} + +.ion-social-linkedin-outline:before { + content: "\f238"; +} + +.ion-social-markdown:before { + content: "\f4e6"; +} + +.ion-social-nodejs:before { + content: "\f4e7"; +} + +.ion-social-octocat:before { + content: "\f4e8"; +} + +.ion-social-pinterest:before { + content: "\f2b1"; +} + +.ion-social-pinterest-outline:before { + content: "\f2b0"; +} + +.ion-social-python:before { + content: "\f4e9"; +} + +.ion-social-reddit:before { + content: "\f23b"; +} + +.ion-social-reddit-outline:before { + content: "\f23a"; +} + +.ion-social-rss:before { + content: "\f23d"; +} + +.ion-social-rss-outline:before { + content: "\f23c"; +} + +.ion-social-sass:before { + content: "\f4ea"; +} + +.ion-social-skype:before { + content: "\f23f"; +} + +.ion-social-skype-outline:before { + content: "\f23e"; +} + +.ion-social-snapchat:before { + content: "\f4ec"; +} + +.ion-social-snapchat-outline:before { + content: "\f4eb"; +} + +.ion-social-tumblr:before { + content: "\f241"; +} + +.ion-social-tumblr-outline:before { + content: "\f240"; +} + +.ion-social-tux:before { + content: "\f2c5"; +} + +.ion-social-twitch:before { + content: "\f4ee"; +} + +.ion-social-twitch-outline:before { + content: "\f4ed"; +} + +.ion-social-twitter:before { + content: "\f243"; +} + +.ion-social-twitter-outline:before { + content: "\f242"; +} + +.ion-social-usd:before { + content: "\f353"; +} + +.ion-social-usd-outline:before { + content: "\f352"; +} + +.ion-social-vimeo:before { + content: "\f245"; +} + +.ion-social-vimeo-outline:before { + content: "\f244"; +} + +.ion-social-whatsapp:before { + content: "\f4f0"; +} + +.ion-social-whatsapp-outline:before { + content: "\f4ef"; +} + +.ion-social-windows:before { + content: "\f247"; +} + +.ion-social-windows-outline:before { + content: "\f246"; +} + +.ion-social-wordpress:before { + content: "\f249"; +} + +.ion-social-wordpress-outline:before { + content: "\f248"; +} + +.ion-social-yahoo:before { + content: "\f24b"; +} + +.ion-social-yahoo-outline:before { + content: "\f24a"; +} + +.ion-social-yen:before { + content: "\f4f2"; +} + +.ion-social-yen-outline:before { + content: "\f4f1"; +} + +.ion-social-youtube:before { + content: "\f24d"; +} + +.ion-social-youtube-outline:before { + content: "\f24c"; +} + +.ion-soup-can:before { + content: "\f4f4"; +} + +.ion-soup-can-outline:before { + content: "\f4f3"; +} + +.ion-speakerphone:before { + content: "\f2b2"; +} + +.ion-speedometer:before { + content: "\f2b3"; +} + +.ion-spoon:before { + content: "\f2b4"; +} + +.ion-star:before { + content: "\f24e"; +} + +.ion-stats-bars:before { + content: "\f2b5"; +} + +.ion-steam:before { + content: "\f30b"; +} + +.ion-stop:before { + content: "\f24f"; +} + +.ion-thermometer:before { + content: "\f2b6"; +} + +.ion-thumbsdown:before { + content: "\f250"; +} + +.ion-thumbsup:before { + content: "\f251"; +} + +.ion-toggle:before { + content: "\f355"; +} + +.ion-toggle-filled:before { + content: "\f354"; +} + +.ion-transgender:before { + content: "\f4f5"; +} + +.ion-trash-a:before { + content: "\f252"; +} + +.ion-trash-b:before { + content: "\f253"; +} + +.ion-trophy:before { + content: "\f356"; +} + +.ion-tshirt:before { + content: "\f4f7"; +} + +.ion-tshirt-outline:before { + content: "\f4f6"; +} + +.ion-umbrella:before { + content: "\f2b7"; +} + +.ion-university:before { + content: "\f357"; +} + +.ion-unlocked:before { + content: "\f254"; +} + +.ion-upload:before { + content: "\f255"; +} + +.ion-usb:before { + content: "\f2b8"; +} + +.ion-videocamera:before { + content: "\f256"; +} + +.ion-volume-high:before { + content: "\f257"; +} + +.ion-volume-low:before { + content: "\f258"; +} + +.ion-volume-medium:before { + content: "\f259"; +} + +.ion-volume-mute:before { + content: "\f25a"; +} + +.ion-wand:before { + content: "\f358"; +} + +.ion-waterdrop:before { + content: "\f25b"; +} + +.ion-wifi:before { + content: "\f25c"; +} + +.ion-wineglass:before { + content: "\f2b9"; +} + +.ion-woman:before { + content: "\f25d"; +} + +.ion-wrench:before { + content: "\f2ba"; +} + +.ion-xbox:before { + content: "\f30c"; +} \ No newline at end of file diff --git a/ui/src/main/webapp/app/fusion/external/ds2/css/fonts/ionicons.eot b/ui/src/main/webapp/app/fusion/external/ds2/css/fonts/ionicons.eot new file mode 100644 index 0000000000000000000000000000000000000000..92a3f20a39267ae7f45144f412a995a663730360 GIT binary patch literal 120724 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

    @FHUiu&=5w(f-3S1h*&)&h2 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 + + + + +Created by FontForge 20120731 at Thu Dec 4 09:51:48 2014 + By Adam Bradley +Created by Adam Bradley with FontForge 2.0 (http://fontforge.sf.net) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ui/src/main/webapp/app/fusion/external/ds2/css/fonts/ionicons.ttf b/ui/src/main/webapp/app/fusion/external/ds2/css/fonts/ionicons.ttf new file mode 100644 index 0000000000000000000000000000000000000000..c4e4632486d863337c1c73478ddb3c20726c55a0 GIT binary patch literal 188508 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

    8E#xmG!w{$tO5=<$!EHPzZXo}IBc1_sqA&q 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 literal 0 HcmV?d00001 diff --git a/ui/src/main/webapp/app/fusion/external/ds2/css/fonts/ionicons.woff b/ui/src/main/webapp/app/fusion/external/ds2/css/fonts/ionicons.woff new file mode 100644 index 0000000000000000000000000000000000000000..5f3a14e0a5ca6d20cc4fac708979e807b0d51bc3 GIT binary patch literal 67904 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

  • F(S(gioucm()OHA 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 E0LEz`i~s-t literal 0 HcmV?d00001 diff --git a/ui/src/main/webapp/app/fusion/scripts/DS2-controllers/ds-profile/post-controller.js b/ui/src/main/webapp/app/fusion/scripts/DS2-controllers/ds-profile/post-controller.js new file mode 100644 index 0000000..73934f7 --- /dev/null +++ b/ui/src/main/webapp/app/fusion/scripts/DS2-controllers/ds-profile/post-controller.js @@ -0,0 +1,4 @@ +appDS2.controller('postController', function($scope, $http, $modal, + $routeParams, $rootScope, PostService) { + +}); diff --git a/ui/src/main/webapp/app/fusion/scripts/DS2-controllers/samplePage-route.js b/ui/src/main/webapp/app/fusion/scripts/DS2-controllers/samplePage-route.js new file mode 100644 index 0000000..d8faae6 --- /dev/null +++ b/ui/src/main/webapp/app/fusion/scripts/DS2-controllers/samplePage-route.js @@ -0,0 +1,27 @@ +appDS2 + .config(function($routeProvider) { + $routeProvider + .when( + '/collaborate_list', + { + templateUrl : 'app/fusion/scripts/DS2-view-models/ds2-admin/collaborate-list.html', + controller : 'collaborateListControllerDS2' + }) + .when( + '/drools/:filename', + { + templateUrl : 'app/fusion/scripts/DS2-view-models/ds2-samplePages/drools.html', + controller : 'droolsController' + }) + .when( + '/droolsList', + { + templateUrl : 'app/fusion/scripts/DS2-view-models/ds2-samplePages/drools-list.html', + controller : 'droolsListController' + }) + .otherwise( + { + templateUrl : 'app/fusion/scripts/DS2-view-models/ds2-samplePages/net_map.html', + controller : 'netMapController' + }); + }); diff --git a/ui/src/main/webapp/app/fusion/scripts/DS2-services/postSearch.js b/ui/src/main/webapp/app/fusion/scripts/DS2-services/postSearch.js new file mode 100644 index 0000000..d3dac85 --- /dev/null +++ b/ui/src/main/webapp/app/fusion/scripts/DS2-services/postSearch.js @@ -0,0 +1,5 @@ +appDS2.factory('PostService', function($http, $q) { + return { + + }; +}); diff --git a/ui/src/main/webapp/app/fusion/scripts/DS2-view-models/ds2-profile/post.html b/ui/src/main/webapp/app/fusion/scripts/DS2-view-models/ds2-profile/post.html new file mode 100644 index 0000000..ce4bacf --- /dev/null +++ b/ui/src/main/webapp/app/fusion/scripts/DS2-view-models/ds2-profile/post.html @@ -0,0 +1,3 @@ +
    +

    User Search

    +
    diff --git a/ui/src/main/webapp/app/fusion/scripts/DS2-view-models/ds2-profile/profile_searchDS2.html b/ui/src/main/webapp/app/fusion/scripts/DS2-view-models/ds2-profile/profile_searchDS2.html new file mode 100644 index 0000000..6b50b74 --- /dev/null +++ b/ui/src/main/webapp/app/fusion/scripts/DS2-view-models/ds2-profile/profile_searchDS2.html @@ -0,0 +1,60 @@ +
    +
    +

    Profile Search

    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    User IDLast NameFirst NameEmailUser IDManager User IDEditActive?
    {{rowData.id}}{{rowData.lastName}}{{rowData.firstName}}{{rowData.email}}{{rowData.orgUserId}}{{rowData.orgManagerUserId}} +
    + +
    +
    + +
    +
    +
    +
    +
    + +
    +
    +
    diff --git a/ui/src/main/webapp/app/fusion/scripts/DS2-view-models/ds2-profile/self_profile.html b/ui/src/main/webapp/app/fusion/scripts/DS2-view-models/ds2-profile/self_profile.html new file mode 100644 index 0000000..da9ca15 --- /dev/null +++ b/ui/src/main/webapp/app/fusion/scripts/DS2-view-models/ds2-profile/self_profile.html @@ -0,0 +1,227 @@ +
    diff --git a/ui/src/main/webapp/app/fusion/scripts/DS2-view-models/ds2-samplePages/samplePage.html b/ui/src/main/webapp/app/fusion/scripts/DS2-view-models/ds2-samplePages/samplePage.html new file mode 100644 index 0000000..b6a4107 --- /dev/null +++ b/ui/src/main/webapp/app/fusion/scripts/DS2-view-models/ds2-samplePages/samplePage.html @@ -0,0 +1,78 @@ + + + + + + +Sample Page + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + diff --git a/ui/src/main/webapp/app/fusion/scripts/DS2-view-models/footer.html b/ui/src/main/webapp/app/fusion/scripts/DS2-view-models/footer.html new file mode 100644 index 0000000..69d63cb --- /dev/null +++ b/ui/src/main/webapp/app/fusion/scripts/DS2-view-models/footer.html @@ -0,0 +1,29 @@ + + +
    +
    + +
    +
    diff --git a/ui/src/main/webapp/app/fusion/scripts/DS2-view-models/header-logo.html b/ui/src/main/webapp/app/fusion/scripts/DS2-view-models/header-logo.html new file mode 100644 index 0000000..630767f --- /dev/null +++ b/ui/src/main/webapp/app/fusion/scripts/DS2-view-models/header-logo.html @@ -0,0 +1,19 @@ + + + +Blueprint Validation UI \ No newline at end of file diff --git a/ui/src/main/webapp/WEB-INF/views/welcome.jsp b/ui/src/main/webapp/app/fusion/scripts/DS2-view-models/welcome-content.html old mode 100755 new mode 100644 similarity index 64% rename from ui/src/main/webapp/WEB-INF/views/welcome.jsp rename to ui/src/main/webapp/app/fusion/scripts/DS2-view-models/welcome-content.html index 0f3d695..0d85329 --- a/ui/src/main/webapp/WEB-INF/views/welcome.jsp +++ b/ui/src/main/webapp/app/fusion/scripts/DS2-view-models/welcome-content.html @@ -13,16 +13,16 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> -<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> - - + + + - Spring 4 MVC Hello World Example with Maven Eclipse - + + + +Page Redirection - -

    Hello World, Spring MVC

    - -

    Welcome, ${name}

    - \ No newline at end of file diff --git a/ui/src/main/webapp/app/fusion/scripts/view-models/footer.html b/ui/src/main/webapp/app/fusion/scripts/view-models/footer.html new file mode 100644 index 0000000..b0bd26e --- /dev/null +++ b/ui/src/main/webapp/app/fusion/scripts/view-models/footer.html @@ -0,0 +1,17 @@ + + + +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    + \ No newline at end of file diff --git a/ui/src/main/webapp/index.html b/ui/src/main/webapp/index.html deleted file mode 100755 index cb23409..0000000 --- a/ui/src/main/webapp/index.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - -AKRAINO Blueprint Validation UI - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - \ No newline at end of file diff --git a/ui/src/main/webapp/resources/css/ngDialog-theme-default.css b/ui/src/main/webapp/resources/css/ngDialog-theme-default.css deleted file mode 100644 index 5845704..0000000 --- a/ui/src/main/webapp/resources/css/ngDialog-theme-default.css +++ /dev/null @@ -1,211 +0,0 @@ -/* - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -@-webkit-keyframes ngdialog-flyin { - 0% { - opacity: 0; - -webkit-transform: translateY(-40px); - transform: translateY(-40px); - } - - 100% { - opacity: 1; - -webkit-transform: translateY(0); - transform: translateY(0); - } -} - -@keyframes ngdialog-flyin { - 0% { - opacity: 0; - -webkit-transform: translateY(-40px); - -ms-transform: translateY(-40px); - transform: translateY(-40px); - } - - 100% { - opacity: 1; - -webkit-transform: translateY(0); - -ms-transform: translateY(0); - transform: translateY(0); - } -} - -@-webkit-keyframes ngdialog-flyout { - 0% { - opacity: 1; - -webkit-transform: translateY(0); - transform: translateY(0); - } - - 100% { - opacity: 0; - -webkit-transform: translateY(-40px); - transform: translateY(-40px); - } -} - -@keyframes ngdialog-flyout { - 0% { - opacity: 1; - -webkit-transform: translateY(0); - -ms-transform: translateY(0); - transform: translateY(0); - } - - 100% { - opacity: 0; - -webkit-transform: translateY(-40px); - -ms-transform: translateY(-40px); - transform: translateY(-40px); - } -} - -.ngdialog.ngdialog-theme-default { - padding-bottom: 160px; - padding-top: 160px; -} - -.ngdialog.ngdialog-theme-default.ngdialog-closing .ngdialog-content { - -webkit-animation: ngdialog-flyout .5s; - animation: ngdialog-flyout .5s; -} - -.ngdialog.ngdialog-theme-default .ngdialog-content { - -webkit-animation: ngdialog-flyin .5s; - animation: ngdialog-flyin .5s; - background: #F9F4E5; - border-radius: 5px; - color: #444; - font-family: 'Helvetica',sans-serif; - font-size: 1.1em; - line-height: 1.5em; - margin: 0 auto; - max-width: 100%; - padding: 1em; - position: relative; - width: 450px; -} - -.ngdialog.ngdialog-theme-default .ngdialog-close { - border-radius: 5px; - cursor: pointer; - position: absolute; - right: 0; - top: 0; -} - -.ngdialog.ngdialog-theme-default .ngdialog-close:before { - background: transparent; - border-radius: 3px; - color: #bbb; - content: '\00D7'; - font-size: 26px; - font-weight: 400; - height: 30px; - line-height: 26px; - position: absolute; - right: 3px; - text-align: center; - top: 3px; - width: 30px; -} - -.ngdialog.ngdialog-theme-default .ngdialog-close:hover:before, -.ngdialog.ngdialog-theme-default .ngdialog-close:active:before { - color: #777; -} - -.ngdialog.ngdialog-theme-default .ngdialog-message { - margin-bottom: .5em; -} - -.ngdialog.ngdialog-theme-default .ngdialog-input { - margin-bottom: 1em; -} - -.ngdialog.ngdialog-theme-default .ngdialog-input textarea, -.ngdialog.ngdialog-theme-default .ngdialog-input input[type="text"], -.ngdialog.ngdialog-theme-default .ngdialog-input input[type="password"], -.ngdialog.ngdialog-theme-default .ngdialog-input input[type="email"], -.ngdialog.ngdialog-theme-default .ngdialog-input input[type="url"] { - background: #fff; - border: 0; - border-radius: 3px; - font-family: inherit; - font-size: inherit; - font-weight: inherit; - margin: 0 0 .25em; - min-height: 2.5em; - padding: .25em .67em; - width: 100%; -} - -.ngdialog.ngdialog-theme-default .ngdialog-input textarea:focus, -.ngdialog.ngdialog-theme-default .ngdialog-input input[type="text"]:focus, -.ngdialog.ngdialog-theme-default .ngdialog-input input[type="password"]:focus, -.ngdialog.ngdialog-theme-default .ngdialog-input input[type="email"]:focus, -.ngdialog.ngdialog-theme-default .ngdialog-input input[type="url"]:focus { - -webkit-box-shadow: inset 0 0 0 2px #8dbdf1; - box-shadow: inset 0 0 0 2px #8dbdf1; - outline: none; -} - -.ngdialog.ngdialog-theme-default .ngdialog-buttons { - *zoom: 1; -} - -.ngdialog.ngdialog-theme-default .ngdialog-buttons:after { - content: ''; - display: table; - clear: both; -} - -.ngdialog.ngdialog-theme-default .ngdialog-button { - border: 0; - border-radius: 3px; - cursor: pointer; - float: right; - font-family: inherit; - font-size: .8em; - letter-spacing: .1em; - line-height: 1em; - margin: 0 0 0 .5em; - padding: .75em 2em; - text-transform: uppercase; -} - -.ngdialog.ngdialog-theme-default .ngdialog-button:focus { - -webkit-animation: ngdialog-pulse 1.1s infinite; - animation: ngdialog-pulse 1.1s infinite; - outline: none; -} - -@media (max-width: 568px) { - .ngdialog.ngdialog-theme-default .ngdialog-button:focus { - -webkit-animation: none; - animation: none; - } -} - -.ngdialog.ngdialog-theme-default .ngdialog-button.ngdialog-button-primary { - background: #3288e6; - color: #fff; -} - -.ngdialog.ngdialog-theme-default .ngdialog-button.ngdialog-button-secondary { - background: #e0e0e0; - color: #777; -} \ No newline at end of file diff --git a/ui/src/main/webapp/resources/css/style.css b/ui/src/main/webapp/resources/css/style.css deleted file mode 100755 index 7680da0..0000000 --- a/ui/src/main/webapp/resources/css/style.css +++ /dev/null @@ -1,611 +0,0 @@ -/* - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -.img-arredondadaSide { - border-radius: 100%; - w overflow: hidden; - height: 100px; - width:100px; - background:#6495ED; - margin-top:10px; - margin-left: 5px; -} - .img-arredondadaChat { - border-radius: 100%; - overflow: hidden; - height: 50px; - width:50px; - background: black; -} - .tema{ - color:red; -} - .chat-container { - width: 400px; - height: 100%; - margin: 0 auto; -} - .corStatusFinalizado{ - color:green; -} - .corNormal{ - color:#3366FF; -} - .corStatusNaoFinalizado{ - color:red; -} - .alinharCentro{ - text-align: center; -} - .user-panel { - padding: 10px; -} - .user-panel:before, .user-panel:after { - display: table; - content: " "; -} - .user-panel:after { - clear: both; -} - .user-panel > .image > img { - width: 45px; - height: 45px; -} - .user-panel > .info { - font-weight: 600; - padding: 5px 5px 5px 15px; - font-size: 14px; - line-height: 1; -} - .user-panel > .info > p { - margin-bottom: 9px; -} - .user-panel > .info > a { - text-decoration: none; - padding-right: 5px; - margin-top: 3px; - font-size: 11px; - font-weight: normal; -} - .user-panel > .info > a > .fa, .user-panel > .info > a > .ion, .user-panel > .info > a > .glyphicon { - margin-right: 3px; -} - #wrapper { - padding-left: 0; - -webkit-transition: all 0.5s ease; - -moz-transition: all 0.5s ease; - -o-transition: all 0.5s ease; - transition: all 0.5s ease; - margin-top: -20px; -} - #wrapper.toggled { - padding-left: 250px; -} - #sidebar-wrapper { - z-index: 1000; - position: absolute; - left: 250px; - width: 0; - height:100vh; - margin-left: -250px; - overflow-y: auto; - background: #cccccc; - -webkit-transition: all 0.5s ease; - -moz-transition: all 0.5s ease; - -o-transition: all 0.5s ease; - transition: all 0.5s ease; -} - #wrapper.toggled #sidebar-wrapper { - width: 250px; -} - #page-content-wrapper { - width: 100%; -} - #wrapper.toggled #page-content-wrapper { - position: absolute; - margin-right: -250px; -} -/* Sidebar Styles */ - .sidebar-nav { - position: absolute; - top: 0; - width: 250px; - margin: 0; - padding: 0; - list-style: none; -} - .sidebar-nav li { - text-indent: 20px; - line-height: 40px; - margin-left: -25px; - color: #000000; -} - .logo{ - color: rgb(105, 183, 105); - font-size: 36px; - font-weight: 700; - line-height: 39.6px; - margin-left:20px; - margin-top:10px -} - .fa { - display: inline-block; - font-family: FontAwesome; - font-style: normal; - font-weight: normal; - line-height: 1; - font-size-adjust: none; - font-stretch: normal; - font-feature-settings: normal; - font-language-override: normal; - font-kerning: auto; - font-synthesis: weight style; - font-variant: normal; - font-size: inherit; - text-rendering: auto; - padding-right: 10px; -} - .containerLogin{ - padding-right: 15px; - padding-left: 15px; - margin-right: auto; - margin-top: 100px; - margin-left: auto; - width: 30%; -} - .sidebar-nav li a { - display: block; - text-decoration: none; - color: #000000; -} - - .sidebar-nav li a:hover { - text-decoration: none; - color: #fff; - background: rgba(255,255,255,0.2); -} - - .sidebar-nav li a.example{ - text-decoration: none; - color: #fff; - background: #999999; -} -sidebar-nav > .sidebar-brand { - height: 65px; - font-size: 18px; - line-height: 60px; -} - .sidebar-nav > .sidebar-brand a { - color: #999999; -} - .sidebar-nav > .sidebar-brand a:hover { - color: #fff; - background: none; -} - .sidebar-nav > .sidebar-brand a:active { - color: #fff; - background: none; -} - @media only screen and (max-height: 650px) and (min-width:768px){ - #sidebar-wrapper { - width: 250px; - position: absolute; - height:200%; - } -} - @media only screen and (max-height: 450px) and (min-width:768px){ - #sidebar-wrapper { - width: 250px; - position: absolute; - height:160%; - } -} - @media only screen and (max-height: 1200px) and (min-width:1366px){ - #sidebar-wrapper { - width: 250px; - position: absolute; - height:100%; - } -} - @media(min-width:768px) { - #wrapper { - padding-left: 120px; - } - #wrapper.toggled { - padding-left: 0; - } - #sidebar-wrapper { - width: 250px; - } - #wrapper.toggled #sidebar-wrapper { - width: 0; - } - #page-content-wrapper { - position: relative; - } - #wrapper.toggled #page-content-wrapper { - position: relative; - margin-right: 0; - } -} - - * { - box-sizing: border-box; -} - body { - margin: 0; - padding:0; - - font-family: Arial; - height:calc(100% - 70px); - height:-moz-calc(100% - 70px); - height:-webkit-calc(100% - 70px); - -} -html{margin:0;padding:0;} - - .header { - overflow: hidden; - background-color: #000000; - padding: 8px 10px; -} - .header a { - float: left; - color: white; - text-align: center; - padding: 12px; - text-decoration: none; - font-size: 18px; - line-height: 25px; - border-radius: 4px; -} - .header a.logo { - font-size: 25px; - font-weight: bold; -} - .header-right { - float: right; -} - .akrbutton { - background-color: #4d4d4d; - border: none; - color: white; - padding: 8px 15px; - text-align: center; - text-decoration: none; - display: inline-block; - font-size: 12px; - margin: 3% 2%; - cursor: pointer; - border-radius: 5px; -} - .refreshbutton { - background-color: #4d4d4d; - border: none; - color: white; - padding: 7px 14px; - text-align: center; - text-decoration: none; - display: inline-block; - cursor: pointer; - border-radius: 5px; - -} - .akrtheader { - padding-top: 12px; - padding-bottom: 12px; - text-align: left; - background-color: #4CAF50 -} - table, td { - border: 1px solid #ddd; -} - table { - border-collapse: collapse; - width: 100%;} - - .siteStatusTable th { - padding: 5px; - text-align: left; - background-color: #cccccc; - border: 1px solid #ddd; -} - .siteStatusTable td { - padding-top: 5px; - padding-bottom:5px; -} -.nodeTable th { - padding: 10px; - text-align: left; - background-color: #cccccc; - border: 0px solid #ddd; -} - .nodeTable td { - padding-top: 5px; - padding-bottom:5px; -} - .siteaddOnsTable th { - padding: 10px; - text-align: left; - background-color: #cccccc; - border: 1px solid #ddd; -} - .siteaddOnsTable td { - padding-top: 5px; - padding-bottom:5px; -} - - - .sitetempestsTable th { - padding: 10px; - text-align: left; - background-color: #cccccc; - border: 1px solid #ddd; -} - .sitetempestsTable td { - padding-top: 5px; - padding-bottom:5px; -} - - -.shardwareTable th { - padding: 5px; - text-align: left; - background-color: #cccccc; - border: 1px solid #ddd; -} - .shardwareTable td { - padding-top: 3px; - padding-bottom:3px; -} -.rackTable th { - padding: 10px; - text-align: left; - background-color: #cccccc; - border: 1px solid #ddd; -} - .rackTable td { - padding-top: 5px; - padding-bottom:5px; -} - -.sitebuildTable th { - padding: 10px; - text-align: left; - background-color: #cccccc; - border: 1px solid #ddd; -} - .sitebuildTable td { - padding-top: 5px; - padding-bottom:5px; -} - - .softwareTable th { - padding: 10px; - text-align: left; - background-color: #cccccc; - border: 1px solid #ddd; -} - .softwareTable td { - padding-top: 5px; - padding-bottom:5px; -} -.popUpTable th { - padding: 10px; - text-align: left; - background-color: #cccccc; - border: 1px solid #ddd; -} - .popUpTable td { - padding-top: 5px; - padding-bottom:5px; -} -/*.pagination { - display: inline-block; - float:right; -} - .pagination li { - list-style-type:none; - color: white; - float: left; - padding: 8px 16px; - text-decoration: none; - transition: background-color .3s; - border: 1px solid #ddd; -} - .pagination li.active { - background-color: #DCDCDC; - color: white; - border: 1px solid #ddd; -}*/ - button:disabled { - background: #dddddd; -} - .select-style { - border: 1px solid #ccc; - width: 240px; - height: 40px; - border-radius: 3px; - overflow: hidden; - background-position: right; -} - .select-style select { - - width: 100%; - border: 0px; - box-shadow: none; - background:none; - background-image: none; - -webkit-appearance: none; - outline: 0px; - -} -.selectStyle select option{ - height:30px; - padding-top:5px; -} -@-moz-document url-prefix() { - select.example { - padding-right: 25px; - - height:40px; - - background-image: url("data:image/svg+xml,\ - \ - \ - "); - background-repeat: no-repeat; - background-position: calc(100% - 7px) 50%; - -moz-appearance: none; - appearance: none; - - } -} -@-moz-document url-prefix() { - select.exampleTable { - - - height:25px; - - background-image: url("data:image/svg+xml,\ - \ - \ - "); - background-repeat: no-repeat; - background-position: calc(100% - 7px) 50%; - -moz-appearance: none; - appearance: none; - - } -} - .select-style select:focus { - outline: none; -} - .child_div_1{ - float:left; - margin-right:50px; -} - .child_div_2{ - float:right; - margin-right:50%; -} - .ngdialog { - margin-top:-100px; - padding-top:10px; - overflow-y: auto; -} - .addOnForm input[type=text], select, textarea { - width: 40%; - padding: 3px; - border: 0.5px solid #ccc; - border-radius: 4px; - box-sizing: border-box; - margin-top: 3px; - margin-bottom: 3px; - resize: vertical; -} - .tempestclassForm input[type=text], select, textarea { - width: 40%; - padding: 3px; - border: 0.5px solid #ccc; - border-radius: 4px; - box-sizing: border-box; - margin-top: 3px; - margin-bottom: 3px; - resize: vertical; -} -.hardwareForm input[type=text], select, textarea { - width: 40%; - padding: 3px; - border: 0.5px solid #ccc; - border-radius: 4px; - box-sizing: border-box; - margin-top: 3px; - margin-bottom: 3px; - resize: vertical; -} -.podForm input[type=text], select, textarea { - width: 40%; - padding: 3px; - border: 0.5px solid #ccc; - border-radius: 4px; - box-sizing: border-box; - margin-top: 3px; - margin-bottom: 3px; - resize: vertical; -} -.uploadForm input[type=text], select, textarea { - width: 40%; - padding: 3px; - border: 0.5px solid #ccc; - border-radius: 4px; - box-sizing: border-box; - margin-top: 3px; - margin-bottom: 3px; - resize: vertical; -} -.vnfForm input[type=text], select, textarea { - width: 40%; - padding: 3px; - border: 0.5px solid #ccc; - border-radius: 4px; - box-sizing: border-box; - margin-top: 3px; - margin-bottom: 3px; - resize: vertical; -} -.siteForm input[type=text], select, textarea { - width: 40%; - padding: 3px; - border: 0.5px solid #ccc; - border-radius: 4px; - box-sizing: border-box; - margin-top: 3px; - margin-bottom: 3px; - resize: vertical; -} -.siteForm li input[type=text], select, textarea { - width: 40%; - padding: 3px; - border: 0.5px solid #ccc; - border-radius: 4px; - box-sizing: border-box; - margin-top: 3px; - margin-bottom: 3px; - resize: vertical; -} - - label { - font-weight: normal !important; -} -.ngdialog-custom{ - background: #e6e6e6; -} -#footerlogo{ - position:absolute; - display:inline-block; - bottom:0; - width: 250px; -} -.borderFrame{ - margin-top:2px; - border:2px solid #cdcdcd; - /*border-radius: 0.1px; - /*-moz-border-radius: 0.1px; - -webkit-border-radius:0.1px;*/ -} diff --git a/ui/src/main/webapp/resources/images/logo_akraino_edge_stack.png b/ui/src/main/webapp/resources/images/logo_akraino_edge_stack.png deleted file mode 100755 index c81bb533756abf717466f7999ad5b8223dcfd81f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22245 zcmZsDc_7r?_y3H+$eK#_rJ+z{XY9$?DkRAsvhT*4eI{jJ9#0|}yKLEaAybMHGeXEZ zlEzM1v;OY%e7^tv-hXQ5eeXT@oY#4s*Ev(%Z37)9dMK=e==cOT+brh;02I81f_@*Z=vTco@3H1>w~bq?5Nv)ku1pbW8jkD|Xb z+(@6MS-d&H6dx}c&jbzEy3dV3eBiQ2oxW}KcFbt8V`cL=)!ZswRrQm%v|nUZLV_x} zPlebKO33^qVF+XW|30a2NapZ=-p-O24=@Mu0*C6$VhGPP)Hhk%P+N8q8(s;|NOC24 z<16tBSmK8%g62I%E!2yDQQrpf%GhRz1bl@0JS+!7F9558yg47FY-m1zj-ZQ**kA%2d=hf6@`Y7N5}lEA0dl17q)*N`57i6&w3RsP|r8SoVQr z%?dK-H@9tP%S3DKh%EvkXNPmsHzX`K;{EumOJ-9Mm!kM8G0(xR@MEJ7~7Wp%FQFv>R%B{rZMbq@^>x# z9b*sQ-Ij?zJ!w&LMG9`O^Il>u;G_pV8tap?w3yfHhPUg-C3!okAs+b zN=&NPj}LaN-zq!bhHic;D7e%wG|qrzeK>nAtBoP{yBB#}v}tJcUy%vM=a%;D2k)l{ z>+T+rD7`ds&DNqZC6lMc#_Kbcb)(%vz4w{g*~d;j)G%31Ch3xL_0sxj)kdPj*@3}% zVzGsoXNhxWp<;1$hA?4ZlyE^+7mhUx-K0a6aJl)P;tUCgDpM7UDu|=YadiRzinQT; zH4Dq*H)%S~w&ZMg`{ZWoMf0>ZqF6DpP$Nh}sMBPnO1@)G z{IpfK3i><(qZ);J9|`qV(N@vCd(mcjcF*aIBfGGX{1>@Z1QA5kXVH=?k(^`0lD+A8 zLts6kWLGTkCu&_$Z-d_YN(05u&LvvmMl`Q)X;CN2-#B(tH(b7|i`u_)#_`Hlao!Ph zEM-YYTc@7Q$M}q+&h|*a4gMPiE0H2WYZ z7IZypk+g1dKo6rjz)}%ip=KEvc@up8jLchMV zxsAR0^gDUc7cV;Za3M1yhj~>5%a|+F>vYK|P-y;=mX2*R?ZZV|w~5M∈J)Ntl1H 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 DH0UEW diff --git a/ui/src/main/webapp/resources/js/AECCommittedSubmissionsController.js b/ui/src/main/webapp/resources/js/AECCommittedSubmissionsController.js deleted file mode 100644 index 9690793..0000000 --- a/ui/src/main/webapp/resources/js/AECCommittedSubmissionsController.js +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -var AECBlueprintValidationUIApp = angular - .module('BlueprintValidationUIManagement'); - -AECBlueprintValidationUIApp.controller('AECCommittedSubmissionsController', - function($scope, restAPISvc, $interval, refreshPeriod) { - - $scope.submissionIdList = []; - - restAPISvc.getRestAPI("/api/submission/", function(data) { - $scope.submissions = data; - }); - - $scope.refreshCommittedSubmissions = function() { - restAPISvc.getRestAPI("/api/submission/", function(data) { - $scope.submissions = data; - }); - } - - $scope.modifySubmissionIdList = function(id) { - if ($scope.submissionIdList.indexOf(id) === -1) { - $scope.submissionIdList.push(id); - } else { - $scope.submissionIdList.splice($scope.submissionIdList - .indexOf(id), 1); - } - } - - $scope.deleteSubmissions = function() { - var confirmation = confirm("Are you sure?"); - if (confirmation == true) { - angular.forEach($scope.submissionIdList, function(id) { - var submission = { - "submissionId" : id - }; - restAPISvc - .deleteRestAPI("/api/submission/", submission); - }); - } - } - - $interval(function() { - $scope.refreshCommittedSubmissions(); - }, refreshPeriod); - - }); diff --git a/ui/src/main/webapp/resources/js/AECFindBySubmissionIdController.js b/ui/src/main/webapp/resources/js/AECFindBySubmissionIdController.js deleted file mode 100644 index 2d1a99c..0000000 --- a/ui/src/main/webapp/resources/js/AECFindBySubmissionIdController.js +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -var AECBlueprintValidationUIApp = angular - .module('BlueprintValidationUIManagement'); - -AECBlueprintValidationUIApp - .controller( - 'AECFindBySubmissionIdController', - function($scope, restAPISvc) { - - initialize(); - - function initialize() { - $scope.results = []; - restAPISvc - .getRestAPI( - "/api/submission/", - function(data) { - $scope.submissions = data; - $scope.submissionsForDisplay = []; - angular - .forEach( - $scope.submissions, - function( - submissionData) { - var temp = "id: " - + submissionData.submissionId - + " blueprint: " - + submissionData.blueprintInstance.blueprint.blueprintName - + " version: " - + submissionData.blueprintInstance.version - + " layer: " - + submissionData.blueprintInstance.layer - + " lab: " - + submissionData.blueprintInstance.timeslot.lab - + " Start date and time: " - + submissionData.blueprintInstance.timeslot.startDateTime - + " duration: " - + submissionData.blueprintInstance.timeslot.duration; - $scope.submissionsForDisplay - .push(temp); - }); - }); - } - $scope.selectedSubmissionChange = function( - selectedSubmission) { - $scope.results = []; - var id = selectedSubmission.substring( - selectedSubmission.indexOf("id:") + 4, - selectedSubmission.indexOf("blueprint") - 1); - restAPISvc.getRestAPI( - "/api/results/findBySubmissionId/" + id, - function(data) { - $scope.results = data; - }); - } - - }); \ No newline at end of file diff --git a/ui/src/main/webapp/resources/js/App.js b/ui/src/main/webapp/resources/js/App.js deleted file mode 100755 index 1bc514c..0000000 --- a/ui/src/main/webapp/resources/js/App.js +++ /dev/null @@ -1,147 +0,0 @@ -/* - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -var AECBlueprintValidationUIApp = angular.module('BlueprintValidationUIManagement', ['ngDialog', 'ui.router', 'base64','App.config','ngStorage','ui.bootstrap', 'ngResource','ngFileUpload','ngMaterial']); - -AECBlueprintValidationUIApp.config(function($stateProvider, $urlRouterProvider) { - $urlRouterProvider.otherwise('/login') - $stateProvider - .state('common', { - templateUrl: 'views/indexMain.html', - abstract: true - }) - .state('login', { - url: "/login", - controller: 'Login', - templateUrl: 'views/login.html' - }) - .state('newSubmission', { - url: "/newSubmission", - parent: "common", - views: { - "main": { - controller: 'AECNewSubmissionController', - templateUrl: 'views/newSubmission.html' - } - } - }) - .state('committedSubmissions', { - url: "/committedSubmissions", - parent: "common", - views: { - "main": { - controller: 'AECCommittedSubmissionsController', - templateUrl: 'views/committedSubmissions.html' - } - } - }) - .state('findBySubmissionId', { - url: "/findBySubmissionId", - parent: "common", - views: { - "main": { - controller: 'AECFindBySubmissionIdController', - templateUrl: 'views/findBySubmissionId.html' - } - } - }) -}); - -AECBlueprintValidationUIApp.controller('Login',function($scope, $http, $filter, filterFilter, $state, $base64,$rootScope,$controller,appContext) { - $rootScope.tokenId =""; - $scope.usernameVal = ''; - $scope.passwordVal = ''; - $rootScope.message = "Please enter credentials"; - $scope.$state = $state; - - var baseURL = window.location.protocol + '//' + window.location.host; - /* eslint-disable no-console */ - console.log('Base URL for current frame is: ' + baseURL); - /* eslint-enable no-console */ - $scope.goLogin = function() { - var arr = $scope.passwordVal; - if ($scope.usernameVal == '' && $scope.passwordVal == '') { - $scope.userMessage = 'Please enter a username.'; - $scope.passwordMessage = 'Please enter a password.'; - } else if ($scope.usernameVal == '') { - $scope.userMessage = 'Please enter a username.'; - $scope.passwordMessage = ''; - } else if ($scope.passwordVal == '') { - $scope.passwordMessage = 'Please enter a password.'; - $scope.userMessage = ''; - } else if (arr.length < 6) { - $scope.passwordMessage = 'Please enter a valid password.'; - $scope.userMessage = ''; - } - else { - $scope.passwordMessage = ''; - $scope.userMessage =''; - // var userPwd = $scope.usernameVal + ":" + $scope.passwordVal; - // var auth = $base64.encode(userPwd); - /* - * $http({ method: 'POST', url: appContext+'/login', //url: - * 'http://'+hostUrl+'/AECPortalMgmt/login', headers: { - * 'Authorization': "Basic " + auth, 'Content-Type': - * "application/json", 'Accept': "application/json" }, data: { } }). - * then(function(response) { if (response.data.statusCode == 200) { - * $rootScope.tokenId = response.data.tokenId; - * localStorage.setItem("tokenId",response.data.tokenId); - * $state.transitionTo('sites'); } else if (response.data.statusCode == - * 401){ $scope.passwordVal= null; $scope.passwordMessage = 'Invalid - * Credentials, please try again...'; - * - * localStorage.removeItem("tokenId"); } }, function(error) { if - * (error.status == 401) { $scope.passwordMessage = 'Invalid - * Credentials, please try again...'; $scope.passwordVal =""; - * localStorage.removeItem("tokenId"); } else if (error.status == - * 400) { $scope.passwordMessage = 'Session Invalid, please login - * again...'; $scope.passwordVal =""; - * localStorage.removeItem("tokenId"); } else if (error.status == - * 307) { $scope.passwordMessage = 'Session expired,Please try - * again...'; $scope.passwordVal =""; - * localStorage.removeItem("tokenId"); } }); - */ - $state.transitionTo('committedSubmissions'); - } - } - $scope.goLogout = function() { - $http({ - method: 'POST', - url: appContext+'/logout', - headers: { - 'Content-Type': "application/json", - 'Accept': "application/json", - 'tokenId' : $rootScope.tokenId - }, - data:{ - } - /* - * data: { 'username': $scope.usernameVal, 'passowrd': - * $scope.passwordVal } - */ - }).then(function(response) { - if (response.data.statusCode == 200) { - $rootScope.tokenId =""; - localStorage.removeItem("tokenId"); - $state.transitionTo('login'); - $rootScope.message = 'User logged out, please login again...'; - } - }, function(response) { - $scope.message = 'Unknown error,Try again later' + response.status; - }); - } -}); - diff --git a/ui/src/main/webapp/resources/js/CommonController.js b/ui/src/main/webapp/resources/js/CommonController.js deleted file mode 100644 index dda7718..0000000 --- a/ui/src/main/webapp/resources/js/CommonController.js +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -var AECBlueprintValidationUIApp = angular - .module('BlueprintValidationUIManagement'); - -AECBlueprintValidationUIApp.controller('CommonController', function($scope, - $http, $sce, ngDialog, $filter, $rootScope, $state, $templateCache) { - $scope.errorHandle = function(error) { - if (error.status == 400) { - localStorage.removeItem("tokenId"); - $state.transitionTo('login'); - localStorage.removeItem("tokenId"); - $rootScope.message = 'Session Invalid, please login again...'; - } else if (error.status == 401) { - localStorage.removeItem("tokenId"); - $state.transitionTo('login'); - $rootScope.message = 'Invalid Credentials, please try again...'; - } else if (error.status == 307) { - localStorage.removeItem("tokenId"); - $state.transitionTo('login'); - $rootScope.message = 'Session expired,Please try again...'; - } - } - - $scope.$on('onBeforeUnload', function(e, confirmation) { - var e2 = e || window.event; - if (e2) { - confirmation.message = "All data willl be lost."; - e2.preventDefault(); - } - }); - $scope.$on('onUnload', function() { - $templateCache.removeAll(); - }); - - $scope.cmp = function(x, y) { - return x > y ? 1 : x < y ? -1 : 0; - }; - -}); \ No newline at end of file diff --git a/ui/src/main/webapp/reusable_chart.js b/ui/src/main/webapp/reusable_chart.js deleted file mode 100644 index 01ab32d..0000000 --- a/ui/src/main/webapp/reusable_chart.js +++ /dev/null @@ -1,127 +0,0 @@ -d3.custom = {}; - -d3.custom.barChart = function module() { - var margin = { - top : 20, - right : 20, - bottom : 40, - left : 40 - }, width = 500, height = 500, gap = 0, ease = 'cubic-in-out'; - var svg, duration = 500; - - var dispatch = d3.dispatch('customHover'); - function exports(_selection) { - _selection - .each(function(_data) { - - var chartW = width - margin.left - margin.right, chartH = height - - margin.top - margin.bottom; - - var x1 = d3.scale.ordinal().domain( - _data.map(function(d, i) { - return i; - })).rangeRoundBands([ 0, chartW ], .1); - - var y1 = d3.scale.linear().domain( - [ 0, d3.max(_data, function(d, i) { - return d; - }) ]).range([ chartH, 0 ]); - - var xAxis = d3.svg.axis().scale(x1).orient('bottom'); - - var yAxis = d3.svg.axis().scale(y1).orient('left'); - - var barW = chartW / _data.length; - - if (!svg) { - svg = d3.select(this).append('svg').classed('chart', - true); - var container = svg.append('g').classed( - 'container-group', true); - container.append('g').classed('chart-group', true); - container.append('g') - .classed('x-axis-group axis', true); - container.append('g') - .classed('y-axis-group axis', true); - } - - svg.transition().duration(duration).attr({ - width : width, - height : height - }) - svg.select('.container-group').attr( - { - transform : 'translate(' + margin.left + ',' - + margin.top + ')' - }); - - svg.select('.x-axis-group.axis').transition().duration( - duration).ease(ease).attr({ - transform : 'translate(0,' + (chartH) + ')' - }).call(xAxis); - - svg.select('.y-axis-group.axis').transition().duration( - duration).ease(ease).call(yAxis); - - var gapSize = x1.rangeBand() / 100 * gap; - var barW = x1.rangeBand() - gapSize; - var bars = svg.select('.chart-group').selectAll('.bar') - .data(_data); - bars.enter().append('rect').classed('bar', true).attr({ - x : chartW, - width : barW, - y : function(d, i) { - return y1(d); - }, - height : function(d, i) { - return chartH - y1(d); - } - }).on('mouseover', dispatch.customHover); - bars.transition().duration(duration).ease(ease).attr({ - width : barW, - x : function(d, i) { - return x1(i) + gapSize / 2; - }, - y : function(d, i) { - return y1(d); - }, - height : function(d, i) { - return chartH - y1(d); - } - }); - bars.exit().transition().style({ - opacity : 0 - }).remove(); - - duration = 500; - - }); - } - exports.width = function(_x) { - if (!arguments.length) - return width; - width = parseInt(_x); - return this; - }; - exports.height = function(_x) { - if (!arguments.length) - return height; - height = parseInt(_x); - duration = 0; - return this; - }; - exports.gap = function(_x) { - if (!arguments.length) - return gap; - gap = _x; - return this; - }; - exports.ease = function(_x) { - if (!arguments.length) - return ease; - ease = _x; - return this; - }; - d3.rebind(exports, dispatch, 'on'); - return exports; -}; \ No newline at end of file diff --git a/ui/src/main/webapp/static/fusion/css/att_angular_gridster/sandbox-gridster.css b/ui/src/main/webapp/static/fusion/css/att_angular_gridster/sandbox-gridster.css new file mode 100644 index 0000000..1b256ba --- /dev/null +++ b/ui/src/main/webapp/static/fusion/css/att_angular_gridster/sandbox-gridster.css @@ -0,0 +1,175 @@ +.gridster { + position: relative; + margin: auto; + /* height: 0 + */ +} + +.gridster>ul { + margin: 0; + list-style: none; + padding: 0 +} + +.gridster-item { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + list-style: none; + z-index: 2; + position: absolute; + display: none +} + +.gridster-loaded { + -webkit-transition: height .3s; + -moz-transition: height .3s; + -o-transition: height .3s; + transition: height .3s +} + +.gridster-loaded .gridster-item { + display: block; + position: absolute; + -webkit-transition: opacity .3s, left .3s, top .3s, width .3s, height + .3s; + -moz-transition: opacity .3s, left .3s, top .3s, width .3s, height .3s; + -o-transition: opacity .3s, left .3s, top .3s, width .3s, height .3s; + transition: opacity .3s, left .3s, top .3s, width .3s, height .3s; + -webkit-transition-delay: 50ms; + -moz-transition-delay: 50ms; + -o-transition-delay: 50ms; + transition-delay: 50ms +} + +.gridster-loaded .gridster-preview-holder { + display: none; + z-index: 1; + position: absolute; + background-color: #067ab4; + /* + background-color: rgb(6, 122, 180); + -ms-filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#067ab4', endColorstr='#067ab4'); IE + opacity: 0.2; + */ + border-color: #fff; + -webkit-transition: width .2s, height .3s; + -moz-transition: width .2s, height .3s; + -o-transition: width .2s, height .3s; + transition: width .2s, height .3s; + -webkit-transition-delay: 50ms; + -moz-transition-delay: 50ms; + -o-transition-delay: 50ms; + transition-delay: 50ms +} + +.gridster-loaded .gridster-item.gridster-item-moving { + -webkit-transition: none; + -moz-transition: none; + -o-transition: none; + transition: none; + opacity: 0.9; +} + +.gridster-mobile { + height: auto !important +} + +.gridster-mobile .gridster-item { + height: auto; + position: static; + float: none +} + +.gridster-item.ng-leave.ng-leave-active { + opacity: 0 +} + +.gridster-item.ng-enter { + opacity: 1 +} + +.gridster-item-moving { + z-index: 3 +} + +.gridster-item-resizable-handler { + position: absolute; + font-size: 1px; + display: block +} + +.handle-se { + cursor: se-resize; + width: 0; + height: 0; + right: 1px; + bottom: 1px; + border-style: solid; + border-width: 0 0 12px 12px; + border-color: transparent +} + +.handle-ne { + cursor: ne-resize; + width: 12px; + height: 12px; + right: 1px; + top: 1px +} + +.handle-nw { + cursor: nw-resize; + width: 12px; + height: 12px; + left: 1px; + top: 1px +} + +.handle-sw { + cursor: sw-resize; + width: 12px; + height: 12px; + left: 1px; + bottom: 1px +} + +.handle-e { + cursor: e-resize; + width: 12px; + bottom: 0; + right: 1px; + top: 0 +} + +.handle-s { + cursor: s-resize; + height: 12px; + right: 0; + bottom: 1px; + left: 0 +} + +.handle-n { + cursor: n-resize; + height: 12px; + right: 0; + top: 1px; + left: 0 +} + +.handle-w { + cursor: w-resize; + width: 12px; + left: 1px; + top: 0; + bottom: 0 +} + +.gridster .gridster-item:hover .gridster-box { + border: 1.5px solid #B3B2B3 +} + +.gridster .gridster-item:hover .handle-se { + border-color: transparent transparent #ccc +} \ No newline at end of file diff --git a/ui/src/main/webapp/static/fusion/css/att_angular_gridster/ui-gridster.css b/ui/src/main/webapp/static/fusion/css/att_angular_gridster/ui-gridster.css new file mode 100644 index 0000000..54bbd89 --- /dev/null +++ b/ui/src/main/webapp/static/fusion/css/att_angular_gridster/ui-gridster.css @@ -0,0 +1,143 @@ +/* ui-gridster.css */ +.gridster-container { + background-color: #EFEFEF; + color: #fff; + border: 1px dashed; + overflow-y: auto; + overflow-x: hidden; +} + +/* app css for attGridtser */ +.gridster-item-container { + background-color: #FFFFFF; + position: relative; + margin-left: auto; + margin-right: auto; + min-height: 79px; + height: 100%; +} + +.gridster-item-container .gridster-item-header { + /* gridster-item Header */ + position: relative; + height: 50px !important; + border: 1px solid #d3d3d3; + border-bottom: 0; + background-color: #E5E5E5; + white-space: nowrap; + text-overflow: ellipsis; + z-index: 1; + -webkit-border-radius: 2px 2px 0 0; + -moz-border-radius: 2px 2px 0 0; + -ms-border-radius: 2px 2px 0 0; + -o-border-radius: 2px 2px 0 0; + border-radius: 2px 2px 0 0; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + overflow: hidden; + /* IE6-8 */ +} + +.gridster-item-container .gridster-item-header .gridster-item-handle { + cursor: move; + margin: 12px; + position: absolute; + top: 0; + left: 0; + border: 0; + vertical-align: middle; + -ms-interpolation-mode: bicubic; + display: block; +} + +.gridster-item-container .gridster-item-header .gridster-item-header-content + { + line-height: 44px; + margin-left: 26px; + font-family: "Omnes-ECOMP-W02", Arial; + font-size: 18px; + color: #444444; + float: left; +} + +.gridster-item-container .gridster-item-header .gridster-item-sub-header-content + { + position: absolute; + top: 29.5px; + left: 26px; + font-family: "Omnes-ECOMP-W02", Arial; + font-size: 12px; + color: #444444; +} + +.gridster-item-container .gridster-item-header .gridster-item-header-buttons-container + { + position: absolute; + right: 10px; + top: 10px; + overflow: hidden; + text-align: right; + height: 30px; + color: #444444; +} + +.gridster-item-container .gridster-item-body { + /* gridster-item Body */ + position: absolute; + width: 100%; + top: 50px; + left: 0; + right: 0; + bottom: 29px; + border: 1px solid #d3d3d3; + box-sizing: border-box; + overflow: auto; + color: #444444; + /* text-align: center; */ +} + +.gridster-item-container .gridster-item-footer { + /* gridster-item Footer */ + position: absolute; + bottom: 0; + width: 100%; + height: 29px !important; + text-align: left; + cursor: pointer; + border: 1px solid #d3d3d3; + border-top: 0; + background-color: #F2F2F2; + -webkit-border-radius: 0 0 2px 2px; + -moz-border-radius: 0 0 2px 2px; + -ms-border-radius: 0 0 2px 2px; + -o-border-radius: 0 0 2px 2px; + border-radius: 0 0 2px 2px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + text-decoration: none; + /* IE6-8 */ +} + +.gridster-item-container .gridster-item-footer:hover { + background-color: #E5E5E5; + color: #565656; + text-decoration: underline; +} + +.gridster-item-container .gridster-item-footer .gridster-item-footer-content + { + line-height: 30px; + font-family: "Omnes-ECOMP-W02", Arial; + font-size: 12px; + color: #565656; + margin: 20px; + text-decoration: none; +} + +.gridster-item-container .gridster-item-footer .gridster-item-footer-content:hover + { + color: #199ddf; + text-decoration: underline; +} \ No newline at end of file diff --git a/ui/src/main/webapp/static/fusion/css/fusion-sunny.css b/ui/src/main/webapp/static/fusion/css/fusion-sunny.css new file mode 100644 index 0000000..243a7e7 --- /dev/null +++ b/ui/src/main/webapp/static/fusion/css/fusion-sunny.css @@ -0,0 +1,399 @@ +input, textarea, select, div { + font-family: Arial; + font-size: 11px; + font-weight: normal; +} + +form { + margin-top: 5px; +} + +.applicationWindow { + border-width: 0px 0px 1px 0px; + border-style: solid; + border-color: #959595; + box-shadow: inset 0 0 10px #000000; + margin-top: 10px; + margin-bottom: 10px; + margin-left: 10px; + margin-right: 10px; +} + +.feedbackMessage { + width: 99%; + font-family: Arial; + font-size: 11px; + color: #1f1f1f; + padding: 3px; + border: 1px #eeb420 solid; + margin: 3px; + background: #fff9e5; +} + +.menubar { + border-width: 0px 0px 0px 1px; + border-style: solid; + border-color: #959595; +} + +.footer { + /*clear: both;*/ + border-width: 0px 1px 0px 1px; + border-style: solid; + border-color: #959595; + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 9px; + padding: 10px 10px 30px 10px; + background: white; +} + +.pageTitle { + font-family: Arial; + font-size: 18px; + font-weight: bold; + margin-top: 5px; +} + +.content { + border-width: 0px 1px 0px 1px; + border-style: solid; + border-color: #959595; + font-family: Arial; + font-size: 11px; + padding: 5px; + background: white; + /*height: 600px;*/ +} + +.popupContent { + font-family: Arial; + font-size: 11px; + padding: 3px; +} + +.logo { + border-width: 0px 1px 0px 1px; + border-style: solid; + border-color: #959595; + text-align: right; +} + +.sep { + border: 1px solid black +} + +.logo { /*position: relative;*/ + float: left; + padding-top: 25px; + padding-left: 25px; +} + +.applicationLogo { + float: right; + padding-top: 25px; + padding-right: 25px; +} + +.applinkWhite { + font-family: Arial; + font-size: 13px; + font-weight: 900; + color: #FFFFFF; + text-decoration: none; +} + +.terms { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 9px; +} + +.broadcastMessage { + color: red; +} + +.broadcastMessageList { + color: red; +} + +.button { + margin: 5px 1px 5px 1px; + padding: 3px; +} + +.toolbarbutton:hover { + color: #005491; +} + +.headerText { + font-family: Arial; + font-size: 15px; + font-weight: 700; + color: #000000; +} + +.headerBackground { + background: #336699; +} + +.errorMessageText { + font-family: Arial; + font-size: 11px; + font-weight: bold; + color: red; +} + +.normalText { + font-family: Arial; + font-size: 11px; + color: #000000; +} + +.normalTextRed { + font-family: Arial; + font-size: 11px; + color: red; +} + +.smallNormalText { + font-family: Arial; + font-size: 9px; + color: #000000; +} + +.tableBorder { + border: 1px outset teal +} + +.validationError { + background: #b9eaff; +} + +.templatebody { + background: url(../images/body_graphic.jpg) repeat-x; + /*margin: 40px 80px 40px 80px;*/ +} + +/*--------------------- General Content ------------------------------------*/ +.relative { + position: relative; +} + +.clear { + clear: both; +} + +.left { + float: left; +} + +.leftCentered { + float: left; + text-align: center; +} + +.right { + float: right; +} + +.rightAligned { + text-align: right; +} + +.centered { + text-align: center; + align: center; +} + +.noWrap { + white-space: nowrap; +} + +.disabled { + color: gray; + cursor: hand; +} + +/*--------------------- Tab styles -------------------------------------*/ +.current { + font-weight: bold; + border-width: 1px 1px 1px 1px; + border-color: silver; + border-style: solid; +} + +.subTab { + font-weight: bold; + font-family: Arial; + font-size: 11px; + color: #0F3B82; +} + +/*--------------------- Grid styles ------------------------------------*/ + +/* Grid navigation and header styles */ +.gridFilterLabel { + font-size: 7pt; + font-align: justify; + font-weight: bold; + display: block; +} + +.gridFilterText { + height: 17px; + font-size: 8pt; + width: 60%; + font-align: justify; +} + +.gridNavigationBar { + font-family: Arial, Verdana; + font-size: 11px; + font-weight: normal; + color: #000; + margin: 0px; + width: 100%; + vertical-align: middle; +} + +.gridNavigationBar .navLinks { + float: left; + margin-right: 15px; + padding-top: 2px; + height: 19px; + line-height: 19px; +} + +.gridNavigationBar .pageControls { + float: left; + margin-right: 15px; + height: 19px; + line-height: 19px; +} + +.gridNavigationBar .pageControls input { + font-size: 8pt; + height: 17px; + vertical-align: middle; +} + +.gridNavigationBar .pageInfo { + float: right; + vertical-align: middle; + height: 19px; + line-height: 19px; +} + +.gridNavigationBar .pageInfo input { + font-size: 8pt; + height: 17px; + vertical-align: middle; +} + +.gridNavigationBar span { + padding: 3px; +} + +.gridNavigationBar a { + text-decoration: underline; + color: #000; + font-weight: normal; +} + +.gridNavigationBar img { + vertical-align: middle; +} + +.gridBulkUpdateRow { + height: 35px; + line-height: 35px; +} + +.gridBulkUpdateRow input { + vertical-align: middle; +} + +/* dummy class used to lock the form elements of a grid - ex. bulk transaction processing */ +.alwaysEnabled { + +} + +.hidden { + display: none; +} + +.selectedPage { + background-color: #C4DFFB; + color: white; + border-style: solid; + border-width: 1px; + border-color: gray; + padding-left: 3px; + padding-right: 3px; + vertical-align: middle; +} + +.selectedRow { + /*background-color:#C4DFFB;*/ + +} + +/* Action Item styles */ +.actionList { + margin-left: -20px; + margin-right: -10px; + padding-left: 5px; +} + +.actionList li { + float: left; + padding-left: 3px; + padding-right: 3px; +} + +.actionList li a { + text-decoration: none; + color: #000; +} + +/* Filter Operator List styles */ +.filterList { + margin: 0px; +} + +.filterList li { + list-style-type: none; + padding: 3px 3px 3px 2px; + cursor: hand; + font-size: 11px; +} + +.filterList li:hover { + background: #404040; +} + +.filterList li a { + color: #000; + text-decoration: none; +} + +.filterList li:hover a { + color: white; +} + +.filterList li a:hover { + text-decoration: none; + color: white; +} + +.filterListItem a { + text-decoration: none; + padding: 3px 2px 3px 2px; +} + +/*---------------------- Customized ZK Styles ------------------------------*/ +.z-datebox input, .z-timebox input { + font-family: Arial; + font-size: 11px; + height: 15px; + margin-top: 1px; +} \ No newline at end of file diff --git a/ui/src/main/webapp/static/fusion/images/att_angular_gridster/grips.png b/ui/src/main/webapp/static/fusion/images/att_angular_gridster/grips.png new file mode 100644 index 0000000000000000000000000000000000000000..29b92cc572cd7523c7756a228ba12f4df3f2b945 GIT binary patch literal 951 zcmaJ=O^ee&7)}vH78bqQ(~$Mxg87(sn>Mj=iAn1QO{s0b9yd*%kh5%*@O4Jn!c`Xt!=`ZWK2dhS@atj1FDT z(yw?f`#<@}J*CS<(&&*c9+0UMBS!OZ9|1FPhNy!aZ+7=Bsx!=)OTOJBJ?oa@;(&KD z44(!OWiw2DH;o*3j0otXp&zR3@yk~%@I95iQ?W!V($UD@o5!d-Z`tmA?8+Xydkxf6 zg$e|SI3NuU!bC|`cA=}#eP$L|uz--U%AN$(v)Vw%F#;97%()_jK$3X4Q;{Ti1(ZZs z5=8n+9NbYVl2WRI<-<~Mu{TgUMsw+lo>X>3NTdkDbUNjyWgf>v0m`zRX_QJFMR3V1 zBu>hO$yTmlpu~;+i1;`JnWEFj6QZ&-(vuW|XeApa%QDe|38@nakQcL*a-e1X9~uNJ zbV54lG~Ry-C-y8tLI)*y61%io z4K6*bMjwTA-eWr0@ay4CdMUO|L$lLQ{U1k1zuq&2hwb9KVgGfZ_t-9h?{5y>507qN d{rS0YVV^mEcK+LoFTdIBDw&Oz@%;M!{Xa}^Dpmjh literal 0 HcmV?d00001 diff --git a/ui/src/main/webapp/static/fusion/images/logo_akraino_edge_stack.png b/ui/src/main/webapp/static/fusion/images/logo_akraino_edge_stack.png new file mode 100644 index 0000000000000000000000000000000000000000..af81b3114e4486542ab25373cd6bad38f593411b GIT binary patch literal 6783 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 literal 0 HcmV?d00001 diff --git a/ui/src/main/webapp/static/fusion/images/logo_akraino_edge_stack2.png b/ui/src/main/webapp/static/fusion/images/logo_akraino_edge_stack2.png new file mode 100644 index 0000000000000000000000000000000000000000..b8e36889df30227a1142879070cdc975d9421f9c GIT binary patch literal 5337 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 r$_RT~MMbIiY!r2e#l6A0mR4 or + // undefined(indicating the use of another browser). + { + var isIE10 = (eval("/*@cc_on!@*/false") && document.documentMode === 10); + if (isIE10) { + return 10; + } + var v = 3, + div = document.createElement('div'), + all = div.getElementsByTagName('i'); + do { + div.innerHTML = ''; + } while (all[0]); + return v > 4 ? v : undefined; + }; + + var browserVersion = getInternetExplorerVersion(); + + if (browserVersion && browserVersion < 9) { + ie8 = true; + } + + // This returned angular module 'gridster' is what is exported. + return angular.module('attGridsterLib', []) + + .constant('gridsterConfig', { + columns: 6, // number of columns in the grid + pushing: true, // whether to push other items out of the way + floating: true, // whether to automatically float items up so they stack + swapping: true, // whether or not to have items switch places instead of + // push down if they are the same size + width: 'auto', // width of the grid. "auto" will expand the grid to its + // parent container + colWidth: 'auto', // width of grid columns. "auto" will divide the + // width of the grid evenly among the columns + rowHeight: 'match', // height of grid rows. 'match' will make it the + // same as the column width, a numeric value will be + // interpreted as pixels, '/2' is half the column + // width, '*5' is five times the column width, etc. + margins: [10, 10], // margins in between grid items + outerMargin: false, + isMobile: false, // toggle mobile view + mobileBreakPoint: 100, // width threshold to toggle mobile mode + mobileModeEnabled: true, // whether or not to toggle mobile mode when + // screen width is less than + // mobileBreakPoint + minColumns: 1, // minimum amount of columns the grid can scale down to + minRows: 1, // minimum amount of rows to show if the grid is empty + maxRows: 100, // maximum amount of rows in the grid + defaultSizeX: 1, // default width of an item in columns + defaultSizeY: 1, // default height of an item in rows + minSizeX: 1, // minimum column width of an item + maxSizeX: null, // maximum column width of an item + minSizeY: 1, // minumum row height of an item + maxSizeY: null, // maximum row height of an item + saveGridItemCalculatedHeightInMobile: false, // grid item height in + // mobile display. true- + // to use the calculated + // height by sizeY given + resizable: { // options to pass to resizable handler + enabled: false, + handles: ['s', 'e', 'n', 'w', 'se', 'ne', 'sw', 'nw'] + }, + draggable: { // options to pass to draggable handler + enabled: true, + scrollSensitivity: 20, // Distance in pixels from the edge of the + // viewport after which the viewport should + // scroll, relative to pointer + scrollSpeed: 15 // Speed at which the window should scroll once the + // mouse pointer gets within scrollSensitivity + // distance + } + }) + + .controller('GridsterCtrl', ['gridsterConfig', '$timeout', + function(gridsterConfig, $timeout) { + + var gridster = this; + + /** + * Create options from gridsterConfig constant + */ + angular.extend(this, gridsterConfig); + + this.resizable = angular.extend({}, gridsterConfig.resizable || {}); + this.draggable = angular.extend({}, gridsterConfig.draggable || {}); + + var flag = false; + this.layoutChanged = function() { + if (flag) { + return; + } + flag = true; + $timeout(function() { + flag = false; + if (gridster.loaded) { + gridster.floatItemsUp(); + } + gridster.updateHeight(gridster.movingItem ? gridster.movingItem.sizeY : 0); + }, 30); + }; + + /** + * A positional array of the items in the grid + */ + this.grid = []; + + /** + * Clean up after yourself + */ + this.destroy = function() { + // empty the grid to cut back on the possibility + // of circular references + if (this.grid) { + this.grid = []; + } + this.$element = null; + }; + + /** + * Overrides default options + * + * @param {Object} + * options The options to override + */ + this.setOptions = function(options) { + if (!options) { + return; + } + + options = angular.extend({}, options); + + // all this to avoid using jQuery... + if (options.draggable) { + angular.extend(this.draggable, options.draggable); + delete(options.draggable); + } + if (options.resizable) { + angular.extend(this.resizable, options.resizable); + delete(options.resizable); + } + + angular.extend(this, options); + + if (!this.margins || this.margins.length !== 2) { + this.margins = [0, 0]; + } else { + for (var x = 0, l = this.margins.length; x < l; ++x) { + this.margins[x] = parseInt(this.margins[x], 10); + if (isNaN(this.margins[x])) { + this.margins[x] = 0; + } + } + } + }; + + /** + * Check if item can occupy a specified position in the grid + * + * @param {Object} + * item The item in question + * @param {Number} + * row The row index + * @param {Number} + * column The column index + * @returns {Boolean} True if if item fits + */ + this.canItemOccupy = function(item, row, column) { + return row > -1 && column > -1 && item.sizeX + column <= this.columns && item.sizeY + row <= this.maxRows; + }; + + /** + * Set the item in the first suitable position + * + * @param {Object} + * item The item to insert + */ + this.autoSetItemPosition = function(item) { + // walk through each row and column looking for a place it will + // fit + for (var rowIndex = 0; rowIndex < this.maxRows; ++rowIndex) { + for (var colIndex = 0; colIndex < this.columns; ++colIndex) { + // only insert if position is not already taken and it + // can fit + var items = this.getItems(rowIndex, colIndex, item.sizeX, item.sizeY, item); + if (items.length === 0 && this.canItemOccupy(item, rowIndex, colIndex)) { + this.putItem(item, rowIndex, colIndex); + return; + } + } + } + throw new Error('Unable to place item!'); + }; + + /** + * Gets items at a specific coordinate + * + * @param {Number} + * row + * @param {Number} + * column + * @param {Number} + * sizeX + * @param {Number} + * sizeY + * @param {Array} + * excludeItems An array of items to exclude from + * selection + * @returns {Array} Items that match the criteria + */ + this.getItems = function(row, column, sizeX, sizeY, excludeItems) { + var items = []; + if (!sizeX || !sizeY) { + sizeX = sizeY = 1; + } + if (excludeItems && !(excludeItems instanceof Array)) { + excludeItems = [excludeItems]; + } + for (var h = 0; h < sizeY; ++h) { + for (var w = 0; w < sizeX; ++w) { + var item = this.getItem(row + h, column + w, excludeItems); + if (item && (!excludeItems || excludeItems.indexOf(item) === -1) && items.indexOf(item) === -1) { + items.push(item); + } + } + } + return items; + }; + + /** + * @param {Array} + * items + * @returns {Object} An item that represents the bounding box of the + * items + */ + this.getBoundingBox = function(items) { + + if (items.length === 0) { + return null; + } + if (items.length === 1) { + return { + row: items[0].row, + col: items[0].col, + sizeY: items[0].sizeY, + sizeX: items[0].sizeX + }; + } + + var maxRow = 0; + var maxCol = 0; + var minRow = 9999; + var minCol = 9999; + + for (var i = 0, l = items.length; i < l; ++i) { + var item = items[i]; + minRow = Math.min(item.row, minRow); + minCol = Math.min(item.col, minCol); + maxRow = Math.max(item.row + item.sizeY, maxRow); + maxCol = Math.max(item.col + item.sizeX, maxCol); + } + + return { + row: minRow, + col: minCol, + sizeY: maxRow - minRow, + sizeX: maxCol - minCol + }; + }; + + + /** + * Removes an item from the grid + * + * @param {Object} + * item + */ + this.removeItem = function(item) { + for (var rowIndex = 0, l = this.grid.length; rowIndex < l; ++rowIndex) { + var columns = this.grid[rowIndex]; + if (!columns) { + continue; + } + var index = columns.indexOf(item); + if (index !== -1) { + columns[index] = null; + break; + } + } + this.layoutChanged(); + }; + + /** + * Returns the item at a specified coordinate + * + * @param {Number} + * row + * @param {Number} + * column + * @param {Array} + * excludeItems Items to exclude from selection + * @returns {Object} The matched item or null + */ + this.getItem = function(row, column, excludeItems) { + if (excludeItems && !(excludeItems instanceof Array)) { + excludeItems = [excludeItems]; + } + var sizeY = 1; + while (row > -1) { + var sizeX = 1, + col = column; + while (col > -1) { + var items = this.grid[row]; + if (items) { + var item = items[col]; + if (item && (!excludeItems || excludeItems.indexOf(item) === -1) && item.sizeX >= sizeX && item.sizeY >= sizeY) { + return item; + } + } + ++sizeX; + --col; + } + --row; + ++sizeY; + } + return null; + }; + + /** + * Insert an array of items into the grid + * + * @param {Array} + * items An array of items to insert + */ + this.putItems = function(items) { + for (var i = 0, l = items.length; i < l; ++i) { + this.putItem(items[i]); + } + }; + + /** + * Insert a single item into the grid + * + * @param {Object} + * item The item to insert + * @param {Number} + * row (Optional) Specifies the items row index + * @param {Number} + * column (Optional) Specifies the items column index + * @param {Array} + * ignoreItems + */ + this.putItem = function(item, row, column, ignoreItems) { + // auto place item if no row specified + if (typeof row === 'undefined' || row === null) { + row = item.row; + column = item.col; + if (typeof row === 'undefined' || row === null) { + this.autoSetItemPosition(item); + return; + } + } + + // keep item within allowed bounds + if (!this.canItemOccupy(item, row, column)) { + column = Math.min(this.columns - item.sizeX, Math.max(0, column)); + row = Math.min(this.maxRows - item.sizeY, Math.max(0, row)); + } + + // check if item is already in grid + if (item.oldRow !== null && typeof item.oldRow !== 'undefined') { + var samePosition = item.oldRow === row && item.oldColumn === column; + var inGrid = this.grid[row] && this.grid[row][column] === item; + if (samePosition && inGrid) { + item.row = row; + item.col = column; + return; + } else { + // remove from old position + var oldRow = this.grid[item.oldRow]; + if (oldRow && oldRow[item.oldColumn] === item) { + delete oldRow[item.oldColumn]; + } + } + } + + item.oldRow = item.row = row; + item.oldColumn = item.col = column; + + this.moveOverlappingItems(item, ignoreItems); + + if (!this.grid[row]) { + this.grid[row] = []; + } + this.grid[row][column] = item; + + if (this.movingItem === item) { + this.floatItemUp(item); + } + this.layoutChanged(); + }; + + /** + * Trade row and column if item1 with item2 + * + * @param {Object} + * item1 + * @param {Object} + * item2 + */ + this.swapItems = function(item1, item2) { + this.grid[item1.row][item1.col] = item2; + this.grid[item2.row][item2.col] = item1; + + var item1Row = item1.row; + var item1Col = item1.col; + item1.row = item2.row; + item1.col = item2.col; + item2.row = item1Row; + item2.col = item1Col; + }; + + /** + * Prevents items from being overlapped + * + * @param {Object} + * item The item that should remain + * @param {Array} + * ignoreItems + */ + this.moveOverlappingItems = function(item, ignoreItems) { + // don't move item, so ignore it + if (!ignoreItems) { + ignoreItems = [item]; + } else if (ignoreItems.indexOf(item) === -1) { + ignoreItems = ignoreItems.slice(0); + ignoreItems.push(item); + } + + // get the items in the space occupied by the item's coordinates + var overlappingItems = this.getItems( + item.row, + item.col, + item.sizeX, + item.sizeY, + ignoreItems + ); + this.moveItemsDown(overlappingItems, item.row + item.sizeY, ignoreItems); + }; + + /** + * Moves an array of items to a specified row + * + * @param {Array} + * items The items to move + * @param {Number} + * newRow The target row + * @param {Array} + * ignoreItems + */ + this.moveItemsDown = function(items, newRow, ignoreItems) { + if (!items || items.length === 0) { + return; + } + items.sort(function(a, b) { + return a.row - b.row; + }); + + ignoreItems = ignoreItems ? ignoreItems.slice(0) : []; + var topRows = {}, + item, i, l; + + // calculate the top rows in each column + for (i = 0, l = items.length; i < l; ++i) { + item = items[i]; + var topRow = topRows[item.col]; + if (typeof topRow === 'undefined' || item.row < topRow) { + topRows[item.col] = item.row; + } + } + + // move each item down from the top row in its column to the row + for (i = 0, l = items.length; i < l; ++i) { + item = items[i]; + var rowsToMove = newRow - topRows[item.col]; + this.moveItemDown(item, item.row + rowsToMove, ignoreItems); + ignoreItems.push(item); + } + }; + + /** + * Moves an item down to a specified row + * + * @param {Object} + * item The item to move + * @param {Number} + * newRow The target row + * @param {Array} + * ignoreItems + */ + this.moveItemDown = function(item, newRow, ignoreItems) { + if (item.row >= newRow) { + return; + } + while (item.row < newRow) { + ++item.row; + this.moveOverlappingItems(item, ignoreItems); + } + this.putItem(item, item.row, item.col, ignoreItems); + }; + + /** + * Moves all items up as much as possible + */ + this.floatItemsUp = function() { + if (this.floating === false) { + return; + } + for (var rowIndex = 0, l = this.grid.length; rowIndex < l; ++rowIndex) { + var columns = this.grid[rowIndex]; + if (!columns) { + continue; + } + for (var colIndex = 0, len = columns.length; colIndex < len; ++colIndex) { + var item = columns[colIndex]; + if (item) { + this.floatItemUp(item); + } + } + } + }; + + /** + * Float an item up to the most suitable row + * + * @param {Object} + * item The item to move + */ + this.floatItemUp = function(item) { + if (this.floating === false) { + return; + } + var colIndex = item.col, + sizeY = item.sizeY, + sizeX = item.sizeX, + bestRow = null, + bestColumn = null, + rowIndex = item.row - 1; + + while (rowIndex > -1) { + var items = this.getItems(rowIndex, colIndex, sizeX, sizeY, item); + if (items.length !== 0) { + break; + } + bestRow = rowIndex; + bestColumn = colIndex; + --rowIndex; + } + if (bestRow !== null) { + this.putItem(item, bestRow, bestColumn); + } + }; + + /** + * Update gridsters height + * + * @param {Number} + * plus (Optional) Additional height to add + */ + this.updateHeight = function(plus) { + var maxHeight = this.minRows; + plus = plus || 0; + for (var rowIndex = this.grid.length; rowIndex >= 0; --rowIndex) { + var columns = this.grid[rowIndex]; + if (!columns) { + continue; + } + for (var colIndex = 0, len = columns.length; colIndex < len; ++colIndex) { + if (columns[colIndex]) { + maxHeight = Math.max(maxHeight, rowIndex + plus + columns[colIndex].sizeY); + } + } + } + this.gridHeight = this.maxRows - maxHeight > 0 ? Math.min(this.maxRows, maxHeight) : Math.max(this.maxRows, maxHeight); + }; + + /** + * Returns the number of rows that will fit in given amount of + * pixels + * + * @param {Number} + * pixels + * @param {Boolean} + * ceilOrFloor (Optional) Determines rounding method + */ + this.pixelsToRows = function(pixels, ceilOrFloor) { + if (ceilOrFloor === true) { + return Math.ceil(pixels / this.curRowHeight); + } else if (ceilOrFloor === false) { + return Math.floor(pixels / this.curRowHeight); + } + + return Math.round(pixels / this.curRowHeight); + }; + + /** + * Returns the number of columns that will fit in a given amount of + * pixels + * + * @param {Number} + * pixels + * @param {Boolean} + * ceilOrFloor (Optional) Determines rounding method + * @returns {Number} The number of columns + */ + this.pixelsToColumns = function(pixels, ceilOrFloor) { + if (ceilOrFloor === true) { + return Math.ceil(pixels / this.curColWidth); + } else if (ceilOrFloor === false) { + return Math.floor(pixels / this.curColWidth); + } + + return Math.round(pixels / this.curColWidth); + }; + } + ]) + + .directive('gridsterPreview', function() { + return { + replace: true, + scope: true, + require: '^gridster', + template: '
    ', + link: function(scope, $el, attrs, gridster) { + + /** + * @returns {Object} style object for preview element + */ + scope.previewStyle = function() { + + if (!gridster.movingItem) { + return { + display: 'none' + }; + } + + return { + display: 'block', + height: (gridster.movingItem.sizeY * gridster.curRowHeight - gridster.margins[0]) + 'px', + width: (gridster.movingItem.sizeX * gridster.curColWidth - gridster.margins[1]) + 'px', + top: (gridster.movingItem.row * gridster.curRowHeight + (gridster.outerMargin ? gridster.margins[0] : 0)) + 'px', + left: (gridster.movingItem.col * gridster.curColWidth + (gridster.outerMargin ? gridster.margins[1] : 0)) + 'px' + }; + }; + } + }; + }) + + /** + * The gridster directive + * + * @param {Function} + * $timeout + * @param {Object} + * $window + * @param {Object} + * $rootScope + * @param {Function} + * gridsterDebounce + */ + .directive('gridster', ['$timeout', '$window', '$rootScope', 'gridsterDebounce', + function($timeout, $window, $rootScope, gridsterDebounce) { + return { + scope: true, + restrict: 'EAC', + controller: 'GridsterCtrl', + controllerAs: 'gridster', + compile: function($tplElem) { + + $tplElem.prepend('
    '); + + return function(scope, $elem, attrs, gridster) { + gridster.loaded = false; + + gridster.$element = $elem; + + scope.gridster = gridster; + + $elem.addClass('gridster'); + + var isVisible = function(ele) { + return ele.style.visibility !== 'hidden' && ele.style.display !== 'none'; + }; + + function refresh(config) { + gridster.setOptions(config); + + if (!isVisible($elem[0])) { + return; + } + + // resolve "auto" & "match" values + if (gridster.width === 'auto') { + gridster.curWidth = $elem[0].offsetWidth || parseInt($elem.css('width'), 10); + } else { + gridster.curWidth = gridster.width; + } + + if (gridster.colWidth === 'auto') { + gridster.curColWidth = (gridster.curWidth + (gridster.outerMargin ? -gridster.margins[1] : gridster.margins[1])) / gridster.columns; + } else { + gridster.curColWidth = gridster.colWidth; + } + + gridster.curRowHeight = gridster.rowHeight; + if (typeof gridster.rowHeight === 'string') { + if (gridster.rowHeight === 'match') { + gridster.curRowHeight = Math.round(gridster.curColWidth); + } else if (gridster.rowHeight.indexOf('*') !== -1) { + gridster.curRowHeight = Math.round(gridster.curColWidth * gridster.rowHeight.replace('*', '').replace(' ', '')); + } else if (gridster.rowHeight.indexOf('/') !== -1) { + gridster.curRowHeight = Math.round(gridster.curColWidth / gridster.rowHeight.replace('/', '').replace(' ', '')); + } + } + + gridster.isMobile = gridster.mobileModeEnabled && gridster.curWidth <= gridster.mobileBreakPoint; + + // loop through all items and reset their CSS + for (var rowIndex = 0, l = gridster.grid.length; rowIndex < l; ++rowIndex) { + var columns = gridster.grid[rowIndex]; + if (!columns) { + continue; + } + + for (var colIndex = 0, len = columns.length; colIndex < len; ++colIndex) { + if (columns[colIndex]) { + var item = columns[colIndex]; + item.setElementPosition(); + item.setElementSizeY(); + item.setElementSizeX(); + } + } + } + + updateHeight(); + } + + var optionsKey = attrs.gridster; + if (optionsKey) { + scope.$parent.$watch(optionsKey, function(newConfig) { + refresh(newConfig); + }, true); + } else { + refresh({}); + } + + scope.$watch(function() { + return gridster.loaded; + }, function() { + if (gridster.loaded) { + $elem.addClass('gridster-loaded'); + } else { + $elem.removeClass('gridster-loaded'); + } + }); + + scope.$watch(function() { + return gridster.isMobile; + }, function() { + if (gridster.isMobile) { + $elem.addClass('gridster-mobile').removeClass('gridster-desktop'); + } else { + $elem.removeClass('gridster-mobile').addClass('gridster-desktop'); + } + $rootScope.$broadcast('gridster-mobile-changed', gridster); + }); + + scope.$watch(function() { + return gridster.draggable; + }, function() { + $rootScope.$broadcast('gridster-draggable-changed', gridster); + }, true); + + scope.$watch(function() { + return gridster.resizable; + }, function() { + $rootScope.$broadcast('gridster-resizable-changed', gridster); + }, true); + + function updateHeight() { + if(gridster.gridHeight){ // need + // to + // put + // this + // check, + // otherwise + // fail + // in + // IE8 + $elem.css('height', (gridster.gridHeight * gridster.curRowHeight) + (gridster.outerMargin ? gridster.margins[0] : -gridster.margins[0]) + 'px'); + } + } + + scope.$watch(function() { + return gridster.gridHeight; + }, updateHeight); + + scope.$watch(function() { + return gridster.movingItem; + }, function() { + gridster.updateHeight(gridster.movingItem ? gridster.movingItem.sizeY : 0); + }); + + var prevWidth = $elem[0].offsetWidth || parseInt($elem.css('width'), 10); + + var resize = function() { + var width = $elem[0].offsetWidth || parseInt($elem.css('width'), 10); + + if (!width || width === prevWidth || gridster.movingItem) { + return; + } + prevWidth = width; + + if (gridster.loaded) { + $elem.removeClass('gridster-loaded'); + } + + refresh(); + + if (gridster.loaded) { + $elem.addClass('gridster-loaded'); + } + + $rootScope.$broadcast('gridster-resized', [width, $elem[0].offsetHeight], gridster); + }; + + // track element width changes any way we can + var onResize = gridsterDebounce(function onResize() { + resize(); + $timeout(function() { + scope.$apply(); + }); + }, 100); + + scope.$watch(function() { + return isVisible($elem[0]); + }, onResize); + + // see + // https://github.com/sdecima/javascript-detect-element-resize + if (typeof window.addResizeListener === 'function') { + window.addResizeListener($elem[0], onResize); + } else { + scope.$watch(function() { + return $elem[0].offsetWidth || parseInt($elem.css('width'), 10); + }, resize); + } + var $win = angular.element($window); + $win.on('resize', onResize); + + // be sure to cleanup + scope.$on('$destroy', function() { + gridster.destroy(); + $win.off('resize', onResize); + if (typeof window.removeResizeListener === 'function') { + window.removeResizeListener($elem[0], onResize); + } + }); + + // allow a little time to place items before floating up + $timeout(function() { + scope.$watch('gridster.floating', function() { + gridster.floatItemsUp(); + }); + gridster.loaded = true; + }, 100); + }; + } + }; + } + ]) + + .controller('GridsterItemCtrl', function() { + this.$element = null; + this.gridster = null; + this.row = null; + this.col = null; + this.sizeX = null; + this.sizeY = null; + this.minSizeX = 0; + this.minSizeY = 0; + this.maxSizeX = null; + this.maxSizeY = null; + + this.init = function($element, gridster) { + this.$element = $element; + this.gridster = gridster; + this.sizeX = gridster.defaultSizeX; + this.sizeY = gridster.defaultSizeY; + }; + + this.destroy = function() { + // set these to null to avoid the possibility of circular references + this.gridster = null; + this.$element = null; + }; + + /** + * Returns the items most important attributes + */ + this.toJSON = function() { + return { + row: this.row, + col: this.col, + sizeY: this.sizeY, + sizeX: this.sizeX + }; + }; + + this.isMoving = function() { + return this.gridster.movingItem === this; + }; + + /** + * Set the items position + * + * @param {Number} + * row + * @param {Number} + * column + */ + this.setPosition = function(row, column) { + this.gridster.putItem(this, row, column); + + if (!this.isMoving()) { + this.setElementPosition(); + } + }; + + /** + * Sets a specified size property + * + * @param {String} + * key Can be either "x" or "y" + * @param {Number} + * value The size amount + * @param {Boolean} + * preventMove + */ + this.setSize = function(key, value, preventMove) { + key = key.toUpperCase(); + var camelCase = 'size' + key, + titleCase = 'Size' + key; + if (value === '') { + return; + } + value = parseInt(value, 10); + if (isNaN(value) || value === 0) { + value = this.gridster['default' + titleCase]; + } + var max = key === 'X' ? this.gridster.columns : this.gridster.maxRows; + if (this['max' + titleCase]) { + max = Math.min(this['max' + titleCase], max); + } + if (this.gridster['max' + titleCase]) { + max = Math.min(this.gridster['max' + titleCase], max); + } + if (key === 'X' && this.cols) { + max -= this.cols; + } else if (key === 'Y' && this.rows) { + max -= this.rows; + } + + var min = 0; + if (this['min' + titleCase]) { + min = Math.max(this['min' + titleCase], min); + } + if (this.gridster['min' + titleCase]) { + min = Math.max(this.gridster['min' + titleCase], min); + } + + value = Math.max(Math.min(value, max), min); + + var changed = (this[camelCase] !== value || (this['old' + titleCase] && this['old' + titleCase] !== value)); + this['old' + titleCase] = this[camelCase] = value; + + if (!this.isMoving()) { + this['setElement' + titleCase](); + } + if (!preventMove && changed) { + this.gridster.moveOverlappingItems(this); + this.gridster.layoutChanged(); + } + + return changed; + }; + + /** + * Sets the items sizeY property + * + * @param {Number} + * rows + * @param {Boolean} + * preventMove + */ + this.setSizeY = function(rows, preventMove) { + return this.setSize('Y', rows, preventMove); + }; + + /** + * Sets the items sizeX property + * + * @param {Number} + * columns + * @param {Boolean} + * preventMove + */ + this.setSizeX = function(columns, preventMove) { + return this.setSize('X', columns, preventMove); + }; + + /** + * Sets an elements position on the page + */ + this.setElementPosition = function() { + if (this.gridster.isMobile) { + this.$element.css({ + marginLeft: this.gridster.margins[0] + 'px', + marginRight: this.gridster.margins[0] + 'px', + marginTop: this.gridster.margins[1] + 'px', + marginBottom: this.gridster.margins[1] + 'px', + top: '', + left: '' + }); + } else { + this.$element.css({ + margin: 0, + top: (this.row * this.gridster.curRowHeight + (this.gridster.outerMargin ? this.gridster.margins[0] : 0)) + 'px', + left: (this.col * this.gridster.curColWidth + (this.gridster.outerMargin ? this.gridster.margins[1] : 0)) + 'px' + }); + } + }; + + /** + * Sets an elements height + */ + this.setElementSizeY = function() { + if (this.gridster.isMobile && !this.gridster.saveGridItemCalculatedHeightInMobile) { + this.$element.css('height', ''); + } else { + var computedHeight = (this.sizeY * this.gridster.curRowHeight - this.gridster.margins[0]) + 'px'; + // this.$element.css('height', computedHeight); + this.$element.attr('style', this.$element.attr('style') + '; ' + 'height: '+computedHeight+' !important;'); + } + }; + + /** + * Sets an elements width + */ + this.setElementSizeX = function() { + if (this.gridster.isMobile) { + this.$element.css('width', ''); + } else { + this.$element.css('width', (this.sizeX * this.gridster.curColWidth - this.gridster.margins[1]) + 'px'); + } + }; + + /** + * Gets an element's width + */ + this.getElementSizeX = function() { + return (this.sizeX * this.gridster.curColWidth - this.gridster.margins[1]); + }; + + /** + * Gets an element's height + */ + this.getElementSizeY = function() { + return (this.sizeY * this.gridster.curRowHeight - this.gridster.margins[0]); + }; + + }) + + .factory('GridsterTouch', [function() { + return function GridsterTouch(target, startEvent, moveEvent, endEvent) { + var lastXYById = {}; + + // Opera doesn't have Object.keys so we use this wrapper + var numberOfKeys = function(theObject) { + if (Object.keys) { + return Object.keys(theObject).length; + } + + var n = 0, + key; + for (key in theObject) { + ++n; + } + + return n; + }; + + // this calculates the delta needed to convert pageX/Y to offsetX/Y + // because offsetX/Y don't exist in the TouchEvent object or in + // Firefox's MouseEvent object + var computeDocumentToElementDelta = function(theElement) { + var elementLeft = 0; + var elementTop = 0; + var oldIEUserAgent = navigator.userAgent.match(/\bMSIE\b/); + + for (var offsetElement = theElement; offsetElement != null; offsetElement = offsetElement.offsetParent) { + // the following is a major hack for versions of IE less + // than 8 to avoid an apparent problem on the IEBlog with + // double-counting the offsets + // this may not be a general solution to IE7's problem with + // offsetLeft/offsetParent + if (oldIEUserAgent && + (!document.documentMode || document.documentMode < 8) && + offsetElement.currentStyle.position === 'relative' && offsetElement.offsetParent && offsetElement.offsetParent.currentStyle.position === 'relative' && offsetElement.offsetLeft === offsetElement.offsetParent.offsetLeft) { + // add only the top + elementTop += offsetElement.offsetTop; + } else { + elementLeft += offsetElement.offsetLeft; + elementTop += offsetElement.offsetTop; + } + } + + return { + x: elementLeft, + y: elementTop + }; + }; + + // cache the delta from the document to our event target + // (reinitialized each mousedown/MSPointerDown/touchstart) + var documentToTargetDelta = computeDocumentToElementDelta(target); + + // common event handler for the mouse/pointer/touch models and their + // down/start, move, up/end, and cancel events + var doEvent = function(theEvtObj) { + + if (theEvtObj.type === 'mousemove' && numberOfKeys(lastXYById) === 0) { + return; + } + + var prevent = true; + + var pointerList = theEvtObj.changedTouches ? theEvtObj.changedTouches : [theEvtObj]; + + for (var i = 0; i < pointerList.length; ++i) { + var pointerObj = pointerList[i]; + var pointerId = (typeof pointerObj.identifier !== 'undefined') ? pointerObj.identifier : (typeof pointerObj.pointerId !== 'undefined') ? pointerObj.pointerId : 1; + + // use the pageX/Y coordinates to + // compute target-relative coordinates + // when we have them (in ie < 9, we need + // to do a little work to put them + // there) + if (typeof pointerObj.pageX === 'undefined') { + + // initialize assuming our + // source element is our target + if(!ie8){ + pointerObj.pageX = pointerObj.offsetX + documentToTargetDelta.x; + pointerObj.pageY = pointerObj.offsetY + documentToTargetDelta.y; + } + else{ + pointerObj.pageX = pointerObj.clientX; + pointerObj.pageY = pointerObj.clientY; + } + + if (pointerObj.srcElement.offsetParent === target && document.documentMode && document.documentMode === 8 && pointerObj.type === 'mousedown') { + // source element is a child piece of VML, we're in + // IE8, and we've not called setCapture yet - add + // the origin of the source element + pointerObj.pageX += pointerObj.srcElement.offsetLeft; + pointerObj.pageY += pointerObj.srcElement.offsetTop; + } else if (pointerObj.srcElement !== target && !document.documentMode || document.documentMode < 8) { + // source element isn't the target (most likely it's + // a child piece of VML) and we're in a version of + // IE before IE8 - + // the offsetX/Y values are unpredictable so use the + // clientX/Y values and adjust by the scroll offsets + // of its parents + // to get the document-relative coordinates (the + // same as pageX/Y) + var sx = -2, + sy = -2; // adjust for old IE's 2-pixel + // border + for (var scrollElement = pointerObj.srcElement; scrollElement !== null; scrollElement = scrollElement.parentNode) { + sx += scrollElement.scrollLeft ? scrollElement.scrollLeft : 0; + sy += scrollElement.scrollTop ? scrollElement.scrollTop : 0; + } + + pointerObj.pageX = pointerObj.clientX + sx; + pointerObj.pageY = pointerObj.clientY + sy; + } + } + + + var pageX = pointerObj.pageX; + var pageY = pointerObj.pageY; + + if (theEvtObj.type.match(/(start|down)$/i)) { + // clause for processing MSPointerDown, touchstart, and + // mousedown + + // refresh the document-to-target delta on start in case + // the target has moved relative to document + documentToTargetDelta = computeDocumentToElementDelta(target); + + // protect against failing to get an up or end on this + // pointerId + if (lastXYById[pointerId]) { + if (endEvent) { + endEvent({ + target: theEvtObj.target, + which: theEvtObj.which, + pointerId: pointerId, + pageX: pageX, + pageY: pageY + }); + } + + delete lastXYById[pointerId]; + } + + if (startEvent) { + if (prevent) { + prevent = startEvent({ + target: theEvtObj.target, + which: theEvtObj.which, + pointerId: pointerId, + pageX: pageX, + pageY: pageY + }); + } + } + + // init last page positions for this pointer + lastXYById[pointerId] = { + x: pageX, + y: pageY + }; + + // IE pointer model + if (target.msSetPointerCapture) { + target.msSetPointerCapture(pointerId); + } else if (theEvtObj.type === 'mousedown' && numberOfKeys(lastXYById) === 1) { + if (useSetReleaseCapture) { + target.setCapture(true); + } else { + document.addEventListener('mousemove', doEvent, false); + document.addEventListener('mouseup', doEvent, false); + } + } + } else if (theEvtObj.type.match(/move$/i)) { + // clause handles mousemove, MSPointerMove, and + // touchmove + + if (lastXYById[pointerId] && !(lastXYById[pointerId].x === pageX && lastXYById[pointerId].y === pageY)) { + // only extend if the pointer is down and it's not + // the same as the last point + + if (moveEvent && prevent) { + prevent = moveEvent({ + target: theEvtObj.target, + which: theEvtObj.which, + pointerId: pointerId, + pageX: pageX, + pageY: pageY + }); + } + + // update last page positions for this pointer + lastXYById[pointerId].x = pageX; + lastXYById[pointerId].y = pageY; + } + } else if (lastXYById[pointerId] && theEvtObj.type.match(/(up|end|cancel)$/i)) { + // clause handles up/end/cancel + + if (endEvent && prevent) { + prevent = endEvent({ + target: theEvtObj.target, + which: theEvtObj.which, + pointerId: pointerId, + pageX: pageX, + pageY: pageY + }); + } + + // delete last page positions for this pointer + delete lastXYById[pointerId]; + + // in the Microsoft pointer model, release the capture + // for this pointer + // in the mouse model, release the capture or remove + // document-level event handlers if there are no down + // points + // nothing is required for the iOS touch model because + // capture is implied on touchstart + if (target.msReleasePointerCapture) { + target.msReleasePointerCapture(pointerId); + } else if (theEvtObj.type === 'mouseup' && numberOfKeys(lastXYById) === 0) { + if (useSetReleaseCapture) { + target.releaseCapture(); + } else { + document.removeEventListener('mousemove', doEvent, false); + document.removeEventListener('mouseup', doEvent, false); + } + } + } + } + + if (prevent) { + if (theEvtObj.preventDefault) { + theEvtObj.preventDefault(); + } + + if (theEvtObj.preventManipulation) { + theEvtObj.preventManipulation(); + } + + if (theEvtObj.preventMouseEvent) { + theEvtObj.preventMouseEvent(); + } + } + }; + + var useSetReleaseCapture = false; + // saving the settings for contentZooming and touchaction before + // activation + var contentZooming, msTouchAction; + + this.enable = function() { + + if (window.navigator.msPointerEnabled) { + // Microsoft pointer model + target.addEventListener('MSPointerDown', doEvent, false); + target.addEventListener('MSPointerMove', doEvent, false); + target.addEventListener('MSPointerUp', doEvent, false); + target.addEventListener('MSPointerCancel', doEvent, false); + + // css way to prevent panning in our target area + if (typeof target.style.msContentZooming !== 'undefined') { + contentZooming = target.style.msContentZooming; + target.style.msContentZooming = 'none'; + } + + // new in Windows Consumer Preview: css way to prevent all + // built-in touch actions on our target + // without this, you cannot touch draw on the element + // because IE will intercept the touch events + if (typeof target.style.msTouchAction !== 'undefined') { + msTouchAction = target.style.msTouchAction; + target.style.msTouchAction = 'none'; + } + } else if (target.addEventListener) { + // iOS touch model + target.addEventListener('touchstart', doEvent, false); + target.addEventListener('touchmove', doEvent, false); + target.addEventListener('touchend', doEvent, false); + target.addEventListener('touchcancel', doEvent, false); + + // mouse model + target.addEventListener('mousedown', doEvent, false); + + // mouse model with capture + // rejecting gecko because, unlike ie, firefox does not send + // events to target when the mouse is outside target + if (target.setCapture && !window.navigator.userAgent.match(/\bGecko\b/)) { + useSetReleaseCapture = true; + + target.addEventListener('mousemove', doEvent, false); + target.addEventListener('mouseup', doEvent, false); + } + } else if (target.attachEvent && target.setCapture) { + // legacy IE mode - mouse with capture + useSetReleaseCapture = true; + target.attachEvent('onmousedown', function() { + doEvent(window.event); + window.event.returnValue = false; + return false; + }); + target.attachEvent('onmousemove', function() { + doEvent(window.event); + window.event.returnValue = false; + return false; + }); + target.attachEvent('onmouseup', function() { + doEvent(window.event); + window.event.returnValue = false; + return false; + }); + } + }; + + this.disable = function() { + if (window.navigator.msPointerEnabled) { + // Microsoft pointer model + target.removeEventListener('MSPointerDown', doEvent, false); + target.removeEventListener('MSPointerMove', doEvent, false); + target.removeEventListener('MSPointerUp', doEvent, false); + target.removeEventListener('MSPointerCancel', doEvent, false); + + // reset zooming to saved value + if (contentZooming) { + target.style.msContentZooming = contentZooming; + } + + // reset touch action setting + if (msTouchAction) { + target.style.msTouchAction = msTouchAction; + } + } else if (target.removeEventListener) { + // iOS touch model + target.removeEventListener('touchstart', doEvent, false); + target.removeEventListener('touchmove', doEvent, false); + target.removeEventListener('touchend', doEvent, false); + target.removeEventListener('touchcancel', doEvent, false); + + // mouse model + target.removeEventListener('mousedown', doEvent, false); + + // mouse model with capture + // rejecting gecko because, unlike ie, firefox does not send + // events to target when the mouse is outside target + if (target.setCapture && !window.navigator.userAgent.match(/\bGecko\b/)) { + useSetReleaseCapture = true; + + target.removeEventListener('mousemove', doEvent, false); + target.removeEventListener('mouseup', doEvent, false); + } + } else if (target.detachEvent && target.setCapture) { + // legacy IE mode - mouse with capture + useSetReleaseCapture = true; + target.detachEvent('onmousedown'); + target.detachEvent('onmousemove'); + target.detachEvent('onmouseup'); + } + }; + + return this; + }; + }]) + + .factory('GridsterDraggable', ['$document', '$timeout', '$window', 'GridsterTouch', + function($document, $timeout, $window, GridsterTouch) { + function GridsterDraggable($el, scope, gridster, item, itemOptions) { + + var elmX, elmY, elmW, elmH, + + mouseX = 0, + mouseY = 0, + lastMouseX = 0, + lastMouseY = 0, + mOffX = 0, + mOffY = 0, + + minTop = 0, + maxTop = 9999, + minLeft = 0, + realdocument = $document[0]; + + var originalCol, originalRow; + var inputTags = ['select', 'input', 'textarea', 'button']; + + var gridsterItemDragElement = $el[0].querySelector('[gridster-item-drag]'); + // console.log(gridsterItemDragElement); + var isDraggableAreaDefined = gridsterItemDragElement?true:false; + // console.log(isDraggableAreaDefined); + + function mouseDown(e) { + + if(ie8){ + e.target = window.event.srcElement; + e.which = window.event.button; + } + + if(isDraggableAreaDefined && (!gridsterItemDragElement.contains(e.target))){ + return false; + } + + if (inputTags.indexOf(e.target.nodeName.toLowerCase()) !== -1) { + return false; + } + + var $target = angular.element(e.target); + + // exit, if a resize handle was hit + if ($target.hasClass('gridster-item-resizable-handler')) { + return false; + } + + // exit, if the target has it's own click event + if ($target.attr('onclick') || $target.attr('ng-click')) { + return false; + } + + // only works if you have jQuery + if ($target.closest && $target.closest('.gridster-no-drag').length) { + return false; + } + + switch (e.which) { + case 1: + // left mouse button + break; + case 2: + case 3: + // right or middle mouse button + return; + } + + lastMouseX = e.pageX; + lastMouseY = e.pageY; + + elmX = parseInt($el.css('left'), 10); + elmY = parseInt($el.css('top'), 10); + elmW = $el[0].offsetWidth; + elmH = $el[0].offsetHeight; + + originalCol = item.col; + originalRow = item.row; + + dragStart(e); + + return true; + } + + function mouseMove(e) { + if (!$el.hasClass('gridster-item-moving') || $el.hasClass('gridster-item-resizing')) { + return false; + } + + var maxLeft = gridster.curWidth - 1; + + // Get the current mouse position. + mouseX = e.pageX; + mouseY = e.pageY; + + // Get the deltas + var diffX = mouseX - lastMouseX + mOffX; + var diffY = mouseY - lastMouseY + mOffY; + mOffX = mOffY = 0; + + // Update last processed mouse positions. + lastMouseX = mouseX; + lastMouseY = mouseY; + + var dX = diffX, + dY = diffY; + if (elmX + dX < minLeft) { + diffX = minLeft - elmX; + mOffX = dX - diffX; + } else if (elmX + elmW + dX > maxLeft) { + diffX = maxLeft - elmX - elmW; + mOffX = dX - diffX; + } + + if (elmY + dY < minTop) { + diffY = minTop - elmY; + mOffY = dY - diffY; + } else if (elmY + elmH + dY > maxTop) { + diffY = maxTop - elmY - elmH; + mOffY = dY - diffY; + } + elmX += diffX; + elmY += diffY; + + // set new position + $el.css({ + 'top': elmY + 'px', + 'left': elmX + 'px' + }); + + drag(e); + + return true; + } + + function mouseUp(e) { + if (!$el.hasClass('gridster-item-moving') || $el.hasClass('gridster-item-resizing')) { + return false; + } + + mOffX = mOffY = 0; + + dragStop(e); + + return true; + } + + function dragStart(event) { + $el.addClass('gridster-item-moving'); + gridster.movingItem = item; + + gridster.updateHeight(item.sizeY); + scope.$apply(function() { + if (gridster.draggable && gridster.draggable.start) { + gridster.draggable.start(event, $el, itemOptions); + } + }); + } + + function drag(event) { + var oldRow = item.row, + oldCol = item.col, + hasCallback = gridster.draggable && gridster.draggable.drag, + scrollSensitivity = gridster.draggable.scrollSensitivity, + scrollSpeed = gridster.draggable.scrollSpeed; + + var row = gridster.pixelsToRows(elmY); + var col = gridster.pixelsToColumns(elmX); + + var itemsInTheWay = gridster.getItems(row, col, item.sizeX, item.sizeY, item); + var hasItemsInTheWay = itemsInTheWay.length !== 0; + + if (gridster.swapping === true && hasItemsInTheWay) { + var boundingBoxItem = gridster.getBoundingBox(itemsInTheWay), + sameSize = boundingBoxItem.sizeX === item.sizeX && boundingBoxItem.sizeY === item.sizeY, + sameRow = boundingBoxItem.row === oldRow, + sameCol = boundingBoxItem.col === oldCol, + samePosition = boundingBoxItem.row === row && boundingBoxItem.col === col, + inline = sameRow || sameCol; + + if (sameSize && itemsInTheWay.length === 1) { + if (samePosition) { + gridster.swapItems(item, itemsInTheWay[0]); + } else if (inline) { + return; + } + } else if (boundingBoxItem.sizeX <= item.sizeX && boundingBoxItem.sizeY <= item.sizeY && inline) { + var emptyRow = item.row <= row ? item.row : row + item.sizeY, + emptyCol = item.col <= col ? item.col : col + item.sizeX, + rowOffset = emptyRow - boundingBoxItem.row, + colOffset = emptyCol - boundingBoxItem.col; + + for (var i = 0, l = itemsInTheWay.length; i < l; ++i) { + var itemInTheWay = itemsInTheWay[i]; + + var itemsInFreeSpace = gridster.getItems( + itemInTheWay.row + rowOffset, + itemInTheWay.col + colOffset, + itemInTheWay.sizeX, + itemInTheWay.sizeY, + item + ); + + if (itemsInFreeSpace.length === 0) { + gridster.putItem(itemInTheWay, itemInTheWay.row + rowOffset, itemInTheWay.col + colOffset); + } + } + } + } + + if (gridster.pushing !== false || !hasItemsInTheWay) { + item.row = row; + item.col = col; + } + + if(($window.navigator.appName === 'Microsoft Internet Explorer' && !ie8) || $window.navigator.userAgent.indexOf("Firefox")!==-1){ + if (event.pageY - realdocument.documentElement.scrollTop < scrollSensitivity) { + realdocument.documentElement.scrollTop = realdocument.documentElement.scrollTop - scrollSpeed; + } else if ($window.innerHeight - (event.pageY - realdocument.documentElement.scrollTop) < scrollSensitivity) { + realdocument.documentElement.scrollTop = realdocument.documentElement.scrollTop + scrollSpeed; + } + } + else{ + if (event.pageY - realdocument.body.scrollTop < scrollSensitivity) { + realdocument.body.scrollTop = realdocument.body.scrollTop - scrollSpeed; + } else if ($window.innerHeight - (event.pageY - realdocument.body.scrollTop) < scrollSensitivity) { + realdocument.body.scrollTop = realdocument.body.scrollTop + scrollSpeed; + } + } + + + + if (event.pageX - realdocument.body.scrollLeft < scrollSensitivity) { + realdocument.body.scrollLeft = realdocument.body.scrollLeft - scrollSpeed; + } else if ($window.innerWidth - (event.pageX - realdocument.body.scrollLeft) < scrollSensitivity) { + realdocument.body.scrollLeft = realdocument.body.scrollLeft + scrollSpeed; + } + + if (hasCallback || oldRow !== item.row || oldCol !== item.col) { + scope.$apply(function() { + if (hasCallback) { + gridster.draggable.drag(event, $el, itemOptions); + } + }); + } + } + + function dragStop(event) { + $el.removeClass('gridster-item-moving'); + var row = gridster.pixelsToRows(elmY); + var col = gridster.pixelsToColumns(elmX); + if (gridster.pushing !== false || gridster.getItems(row, col, item.sizeX, item.sizeY, item).length === 0) { + item.row = row; + item.col = col; + } + gridster.movingItem = null; + item.setPosition(item.row, item.col); + + scope.$apply(function() { + if (gridster.draggable && gridster.draggable.stop) { + gridster.draggable.stop(event, $el, itemOptions); + } + }); + } + + var enabled = null; + var $dragHandles = null; + var unifiedInputs = []; + + this.enable = function() { + if (enabled === true) { + return; + } + + // disable and timeout required for some template rendering + $timeout(function() { + // disable any existing draghandles + for (var u = 0, ul = unifiedInputs.length; u < ul; ++u) { + unifiedInputs[u].disable(); + } + unifiedInputs = []; + + if (gridster.draggable && gridster.draggable.handle) { + $dragHandles = angular.element($el[0].querySelectorAll(gridster.draggable.handle)); + if ($dragHandles.length === 0) { + // fall back to element if handle not found... + $dragHandles = $el; + } + } else { + $dragHandles = $el; + } + + for (var h = 0, hl = $dragHandles.length; h < hl; ++h) { + unifiedInputs[h] = new GridsterTouch($dragHandles[h], mouseDown, mouseMove, mouseUp); + unifiedInputs[h].enable(); + } + + enabled = true; + }); + }; + + this.disable = function() { + if (enabled === false) { + return; + } + + // timeout to avoid race contition with the enable timeout + $timeout(function() { + + for (var u = 0, ul = unifiedInputs.length; u < ul; ++u) { + unifiedInputs[u].disable(); + } + + unifiedInputs = []; + enabled = false; + }); + }; + + this.toggle = function(enabled) { + if (enabled) { + this.enable(); + } else { + this.disable(); + } + }; + + this.destroy = function() { + this.disable(); + }; + } + + return GridsterDraggable; + } + ]) + + .factory('GridsterResizable', ['GridsterTouch', function(GridsterTouch) { + function GridsterResizable($el, scope, gridster, item, itemOptions) { + + function ResizeHandle(handleClass) { + + var hClass = handleClass; + + var elmX, elmY, elmW, elmH, + + mouseX = 0, + mouseY = 0, + lastMouseX = 0, + lastMouseY = 0, + mOffX = 0, + mOffY = 0, + + minTop = 0, + maxTop = 9999, + minLeft = 0; + + var getMinHeight = function() { + return (item.minSizeY ? item.minSizeY : 1) * gridster.curRowHeight - gridster.margins[0]; + }; + var getMinWidth = function() { + return (item.minSizeX ? item.minSizeX : 1) * gridster.curColWidth - gridster.margins[1]; + }; + + var originalWidth, originalHeight; + var savedDraggable; + + function mouseDown(e) { + switch (e.which) { + case 1: + // left mouse button + break; + case 2: + case 3: + // right or middle mouse button + return; + } + + // save the draggable setting to restore after resize + savedDraggable = gridster.draggable.enabled; + if (savedDraggable) { + gridster.draggable.enabled = false; + scope.$broadcast('gridster-draggable-changed', gridster); + } + + // Get the current mouse position. + lastMouseX = e.pageX; + lastMouseY = e.pageY; + + // Record current widget dimensions + elmX = parseInt($el.css('left'), 10); + elmY = parseInt($el.css('top'), 10); + elmW = $el[0].offsetWidth; + elmH = $el[0].offsetHeight; + + originalWidth = item.sizeX; + originalHeight = item.sizeY; + + resizeStart(e); + + return true; + } + + function resizeStart(e) { + $el.addClass('gridster-item-moving'); + $el.addClass('gridster-item-resizing'); + + gridster.movingItem = item; + + item.setElementSizeX(); + item.setElementSizeY(); + item.setElementPosition(); + gridster.updateHeight(1); + + scope.$apply(function() { + // callback + if (gridster.resizable && gridster.resizable.start) { + gridster.resizable.start(e, $el, itemOptions); // options + // is + // the + // item + // model + } + }); + } + + function mouseMove(e) { + var maxLeft = gridster.curWidth - 1; + + // Get the current mouse position. + mouseX = e.pageX; + mouseY = e.pageY; + + // Get the deltas + var diffX = mouseX - lastMouseX + mOffX; + var diffY = mouseY - lastMouseY + mOffY; + mOffX = mOffY = 0; + + // Update last processed mouse positions. + lastMouseX = mouseX; + lastMouseY = mouseY; + + var dY = diffY, + dX = diffX; + + if (hClass.indexOf('n') >= 0) { + if (elmH - dY < getMinHeight()) { + diffY = elmH - getMinHeight(); + mOffY = dY - diffY; + } else if (elmY + dY < minTop) { + diffY = minTop - elmY; + mOffY = dY - diffY; + } + elmY += diffY; + elmH -= diffY; + } + if (hClass.indexOf('s') >= 0) { + if (elmH + dY < getMinHeight()) { + diffY = getMinHeight() - elmH; + mOffY = dY - diffY; + } else if (elmY + elmH + dY > maxTop) { + diffY = maxTop - elmY - elmH; + mOffY = dY - diffY; + } + elmH += diffY; + } + if (hClass.indexOf('w') >= 0) { + if (elmW - dX < getMinWidth()) { + diffX = elmW - getMinWidth(); + mOffX = dX - diffX; + } else if (elmX + dX < minLeft) { + diffX = minLeft - elmX; + mOffX = dX - diffX; + } + elmX += diffX; + elmW -= diffX; + } + if (hClass.indexOf('e') >= 0) { + if (elmW + dX < getMinWidth()) { + diffX = getMinWidth() - elmW; + mOffX = dX - diffX; + } else if (elmX + elmW + dX > maxLeft) { + diffX = maxLeft - elmX - elmW; + mOffX = dX - diffX; + } + elmW += diffX; + } + + // set new position + $el.css({ + 'top': elmY + 'px', + 'left': elmX + 'px', + 'width': elmW + 'px', + 'height': elmH + 'px' + }); + + resize(e); + + return true; + } + + function mouseUp(e) { + // restore draggable setting to its original state + if (gridster.draggable.enabled !== savedDraggable) { + gridster.draggable.enabled = savedDraggable; + scope.$broadcast('gridster-draggable-changed', gridster); + } + + mOffX = mOffY = 0; + + resizeStop(e); + + return true; + } + + function resize(e) { + var oldRow = item.row, + oldCol = item.col, + oldSizeX = item.sizeX, + oldSizeY = item.sizeY, + hasCallback = gridster.resizable && gridster.resizable.resize; + + var col = item.col; + // only change column if grabbing left edge + if (['w', 'nw', 'sw'].indexOf(handleClass) !== -1) { + col = gridster.pixelsToColumns(elmX, false); + } + + var row = item.row; + // only change row if grabbing top edge + if (['n', 'ne', 'nw'].indexOf(handleClass) !== -1) { + row = gridster.pixelsToRows(elmY, false); + } + + var sizeX = item.sizeX; + // only change row if grabbing left or right edge + if (['n', 's'].indexOf(handleClass) === -1) { + sizeX = gridster.pixelsToColumns(elmW, true); + } + + var sizeY = item.sizeY; + // only change row if grabbing top or bottom edge + if (['e', 'w'].indexOf(handleClass) === -1) { + sizeY = gridster.pixelsToRows(elmH, true); + } + + if (gridster.pushing !== false || gridster.getItems(row, col, sizeX, sizeY, item).length === 0) { + item.row = row; + item.col = col; + item.sizeX = sizeX; + item.sizeY = sizeY; + } + var isChanged = item.row !== oldRow || item.col !== oldCol || item.sizeX !== oldSizeX || item.sizeY !== oldSizeY; + + if (hasCallback || isChanged) { + scope.$apply(function() { + if (hasCallback) { + gridster.resizable.resize(e, $el, itemOptions); // options + // is + // the + // item + // model + } + }); + } + } + + function resizeStop(e) { + $el.removeClass('gridster-item-moving'); + $el.removeClass('gridster-item-resizing'); + + gridster.movingItem = null; + + item.setPosition(item.row, item.col); + item.setSizeY(item.sizeY); + item.setSizeX(item.sizeX); + + scope.$apply(function() { + if (gridster.resizable && gridster.resizable.stop) { + gridster.resizable.stop(e, $el, itemOptions); // options + // is + // the + // item + // model + } + }); + } + + var $dragHandle = null; + var unifiedInput; + + this.enable = function() { + if (!$dragHandle) { + $dragHandle = angular.element('
    '); + $el.append($dragHandle); + } + + unifiedInput = new GridsterTouch($dragHandle[0], mouseDown, mouseMove, mouseUp); + unifiedInput.enable(); + }; + + this.disable = function() { + if ($dragHandle) { + $dragHandle.remove(); + $dragHandle = null; + } + + unifiedInput.disable(); + unifiedInput = undefined; + }; + + this.destroy = function() { + this.disable(); + }; + } + + var handles = []; + var handlesOpts = gridster.resizable.handles; + if (typeof handlesOpts === 'string') { + handlesOpts = gridster.resizable.handles.split(','); + } + var enabled = false; + + for (var c = 0, l = handlesOpts.length; c < l; c++) { + handles.push(new ResizeHandle(handlesOpts[c])); + } + + this.enable = function() { + if (enabled) { + return; + } + for (var c = 0, l = handles.length; c < l; c++) { + handles[c].enable(); + } + enabled = true; + }; + + this.disable = function() { + if (!enabled) { + return; + } + for (var c = 0, l = handles.length; c < l; c++) { + handles[c].disable(); + } + enabled = false; + }; + + this.toggle = function(enabled) { + if (enabled) { + this.enable(); + } else { + this.disable(); + } + }; + + this.destroy = function() { + for (var c = 0, l = handles.length; c < l; c++) { + handles[c].destroy(); + } + }; + } + return GridsterResizable; + }]) + + .factory('gridsterDebounce', function() { + return function gridsterDebounce(func, wait, immediate) { + var timeout; + return function() { + var context = this, + args = arguments; + var later = function() { + timeout = null; + if (!immediate) { + func.apply(context, args); + } + }; + var callNow = immediate && !timeout; + clearTimeout(timeout); + timeout = setTimeout(later, wait); + if (callNow) { + func.apply(context, args); + } + }; + }; + }) + + /** + * GridsterItem directive + * + * @param $parse + * @param GridsterDraggable + * @param GridsterResizable + * @param gridsterDebounce + */ + .directive('gridsterItem', ['$parse', 'GridsterDraggable', 'GridsterResizable', 'gridsterDebounce', + function($parse, GridsterDraggable, GridsterResizable, gridsterDebounce) { + return { + scope: true, + restrict: 'EA', + controller: 'GridsterItemCtrl', + controllerAs: 'gridsterItem', + require: ['^gridster', 'gridsterItem'], + link: function(scope, $el, attrs, controllers) { + var optionsKey = attrs.gridsterItem, + options; + + var gridster = controllers[0], + item = controllers[1]; + + scope.gridster = gridster; + + + // bind the item's position properties + // options can be an object specified by + // gridster-item="object" + // or the options can be the element html attributes object + if (optionsKey) { + var $optionsGetter = $parse(optionsKey); + options = $optionsGetter(scope) || {}; + if (!options && $optionsGetter.assign) { + options = { + row: item.row, + col: item.col, + sizeX: item.sizeX, + sizeY: item.sizeY, + minSizeX: 0, + minSizeY: 0, + maxSizeX: null, + maxSizeY: null + }; + $optionsGetter.assign(scope, options); + } + } else { + options = attrs; + } + + item.init($el, gridster); + + $el.addClass('gridster-item'); + + var aspects = ['minSizeX', 'maxSizeX', 'minSizeY', 'maxSizeY', 'sizeX', 'sizeY', 'row', 'col'], + $getters = {}; + + var expressions = []; + var aspectFn = function(aspect) { + var expression; + if (typeof options[aspect] === 'string') { + // watch the expression in the scope + expression = options[aspect]; + } else if (typeof options[aspect.toLowerCase()] === 'string') { + // watch the expression in the scope + expression = options[aspect.toLowerCase()]; + } else if (optionsKey) { + // watch the expression on the options object in the + // scope + expression = optionsKey + '.' + aspect; + } else { + return; + } + expressions.push('"' + aspect + '":' + expression); + $getters[aspect] = $parse(expression); + + // initial set + var val = $getters[aspect](scope); + if (typeof val === 'number') { + item[aspect] = val; + } + }; + + for (var i = 0, l = aspects.length; i < l; ++i) { + aspectFn(aspects[i]); + } + + var watchExpressions = '{' + expressions.join(',') + '}'; + + // when the value changes externally, update the internal + // item object + scope.$watchCollection(watchExpressions, function(newVals, oldVals) { + for (var aspect in newVals) { + var newVal = newVals[aspect]; + var oldVal = oldVals[aspect]; + if (oldVal === newVal) { + continue; + } + newVal = parseInt(newVal, 10); + if (!isNaN(newVal)) { + item[aspect] = newVal; + } + } + }); + + function positionChanged() { + // call setPosition so the element and gridster + // controller are updated + item.setPosition(item.row, item.col); + + // when internal item position changes, update + // externally bound values + if ($getters.row && $getters.row.assign) { + $getters.row.assign(scope, item.row); + } + if ($getters.col && $getters.col.assign) { + $getters.col.assign(scope, item.col); + } + } + scope.$watch(function() { + return item.row + ',' + item.col; + }, positionChanged); + + function sizeChanged() { + var changedX = item.setSizeX(item.sizeX, true); + if (changedX && $getters.sizeX && $getters.sizeX.assign) { + $getters.sizeX.assign(scope, item.sizeX); + } + var changedY = item.setSizeY(item.sizeY, true); + if (changedY && $getters.sizeY && $getters.sizeY.assign) { + $getters.sizeY.assign(scope, item.sizeY); + } + + if (changedX || changedY) { + item.gridster.moveOverlappingItems(item); + gridster.layoutChanged(); + scope.$broadcast('gridster-item-resized', item); + } + } + + scope.$watch(function() { + return item.sizeY + ',' + item.sizeX + ',' + item.minSizeX + ',' + item.maxSizeX + ',' + item.minSizeY + ',' + item.maxSizeY; + }, sizeChanged); + + var draggable = new GridsterDraggable($el, scope, gridster, item, options); + var resizable = new GridsterResizable($el, scope, gridster, item, options); + + var updateResizable = function() { + resizable.toggle(!gridster.isMobile && gridster.resizable && gridster.resizable.enabled); + }; + updateResizable(); + + var updateDraggable = function() { + draggable.toggle(!gridster.isMobile && gridster.draggable && gridster.draggable.enabled); + }; + updateDraggable(); + + scope.$on('gridster-draggable-changed', updateDraggable); + scope.$on('gridster-resizable-changed', updateResizable); + scope.$on('gridster-resized', updateResizable); + scope.$on('gridster-mobile-changed', function() { + updateResizable(); + updateDraggable(); + }); + + function whichTransitionEvent() { + var el = document.createElement('div'); + var transitions = { + 'transition': 'transitionend', + 'OTransition': 'oTransitionEnd', + 'MozTransition': 'transitionend', + 'WebkitTransition': 'webkitTransitionEnd' + }; + for (var t in transitions) { + if (el.style[t] !== undefined) { + return transitions[t]; + } + } + } + + var debouncedTransitionEndPublisher = gridsterDebounce(function() { + scope.$apply(function() { + scope.$broadcast('gridster-item-transition-end', item); + }); + }, 50); + + if(whichTransitionEvent()){ // check for IE8, as it + // evaluates to null + $el.on(whichTransitionEvent(), debouncedTransitionEndPublisher); + } + + scope.$broadcast('gridster-item-initialized', item); + + return scope.$on('$destroy', function() { + try { + resizable.destroy(); + draggable.destroy(); + } catch (e) {} + + try { + gridster.removeItem(item); + } catch (e) {} + + try { + item.destroy(); + } catch (e) {} + }); + } + }; + } + ]) + + .directive('gridsterNoDrag', function() { + return { + restrict: 'A', + link: function(scope, $element) { + $element.addClass('gridster-no-drag'); + } + }; + }) + + ; + +})); diff --git a/ui/src/main/webapp/static/fusion/js/att_angular_gridster/ui-gridster-tpls.js b/ui/src/main/webapp/static/fusion/js/att_angular_gridster/ui-gridster-tpls.js new file mode 100644 index 0000000..3ca3db7 --- /dev/null +++ b/ui/src/main/webapp/static/fusion/js/att_angular_gridster/ui-gridster-tpls.js @@ -0,0 +1,168 @@ +/** +* FileName ui-gridster +* Version 0.0.1 +* Build number ad58c6f4f8f8fd7f04ac457f95d76f09 +* Date 08/17/2015 +*/ + + +(function(angular, window){ +angular.module("att.gridster", ["att.gridster.tpls", "att.gridster.utilities","att.gridster.gridster"]); +angular.module("att.gridster.tpls", ["template/gridster/gridster.html","template/gridster/gridsterItem.html","template/gridster/gridsterItemBody.html","template/gridster/gridsterItemFooter.html","template/gridster/gridsterItemHeader.html"]); +angular.module('att.gridster.utilities', []) + .factory('$extendObj', [function() { + var _extendDeep = function(dst) { + angular.forEach(arguments, function(obj) { + if (obj !== dst) { + angular.forEach(obj, function(value, key) { + if (dst[key] && dst[key].constructor && dst[key].constructor === Object) { + _extendDeep(dst[key], value); + } else { + dst[key] = value; + } + }); + } + }); + return dst; + }; + return { + extendDeep: _extendDeep + }; + }]); + +angular.module('att.gridster.gridster', ['attGridsterLib', 'att.gridster.utilities']) + .config(['$compileProvider', function($compileProvider) { + $compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|javascript):/); + }]) + .constant('attGridsterConfig', + { + columns: 3, + margins: [10, 10], + outerMargin: true, + pushing: true, + floating: true, + swapping: true, + draggable: { + enabled: true + } + }) + .directive('attGridster', ['attGridsterConfig', '$extendObj', function(attGridsterConfig, $extendObj) { + return { + restrict: 'EA', + scope: { + attGridsterOptions: '=?' + }, + templateUrl: 'template/gridster/gridster.html', + replace: false, + transclude: true, + controller: [function() {}], + link: function(scope) { + if (angular.isDefined(scope.attGridsterOptions)) { + attGridsterConfig = $extendObj.extendDeep(attGridsterConfig, scope.attGridsterOptions); + } + scope.attGridsterConfig = attGridsterConfig; + } + }; + }]) + .directive('attGridsterItem', ['$timeout', function($timeout) { + return { + restrict: 'EA', + require: ['^attGridster'], + scope: { + attGridsterItem: '=' + }, + templateUrl: 'template/gridster/gridsterItem.html', + replace: false, + transclude: true, + controller: [function() {}] + }; + }]) + .directive('attGridsterItemHeader', [function() { + return { + restrict: 'EA', + require: ['^attGridsterItem'], + scope: { + headerText: '@', + subHeaderText: '@?' + }, + templateUrl: 'template/gridster/gridsterItemHeader.html', + replace: true, + transclude: true, + link: function(scope, element) { + if (angular.isDefined(scope.subHeaderText) && scope.subHeaderText) { + angular.element(element[0].querySelector('span.gridster-item-sub-header-content')).attr("tabindex", "0"); + angular.element(element[0].querySelector('span.gridster-item-sub-header-content')).attr("aria-label", scope.subHeaderText); + } + } + }; + }]) + .directive('attGridsterItemBody', [function() { + return { + restrict: 'EA', + require: ['^attGridsterItem'], + scope: {}, + templateUrl: 'template/gridster/gridsterItemBody.html', + replace: true, + transclude: true + }; + }]) + .directive('attGridsterItemFooter', ['$location', function($location) { + return { + restrict: 'EA', + require: ['^attGridsterItem'], + scope: { + attGridsterItemFooterLink: '@?' + }, + templateUrl: 'template/gridster/gridsterItemFooter.html', + replace: true, + transclude: true, + controller: ['$scope', function($scope) { + $scope.clickOnFooterLink = function(evt) { + evt.preventDefault(); + evt.stopPropagation(); + if ($scope.attGridsterItemFooterLink) { + $location.url($scope.attGridsterItemFooterLink); + } + }; + }], + link: function(scope, element) { + if (angular.isDefined(scope.attGridsterItemFooterLink) && scope.attGridsterItemFooterLink) { + element.attr("role", "link"); + } + } + }; + }]); +angular.module("template/gridster/gridster.html", []).run(["$templateCache", function($templateCache) { + $templateCache.put("template/gridster/gridster.html", + "
    "); +}]); + +angular.module("template/gridster/gridsterItem.html", []).run(["$templateCache", function($templateCache) { + $templateCache.put("template/gridster/gridsterItem.html", + "
    "); +}]); + +angular.module("template/gridster/gridsterItemBody.html", []).run(["$templateCache", function($templateCache) { + $templateCache.put("template/gridster/gridsterItemBody.html", + "
    "); +}]); + +angular.module("template/gridster/gridsterItemFooter.html", []).run(["$templateCache", function($templateCache) { + $templateCache.put("template/gridster/gridsterItemFooter.html", + "
    \n" + + " \n" + + "
    "); +}]); + +angular.module("template/gridster/gridsterItemHeader.html", []).run(["$templateCache", function($templateCache) { + $templateCache.put("template/gridster/gridsterItemHeader.html", + "
    \n" + + " \"||\"\n" + + " {{headerText}}\n" + + " {{subHeaderText}}\n" + + "
    \n" + + "
    "); +}]); + +return {} +})(angular, window); \ No newline at end of file diff --git a/ui/src/main/webapp/static/fusion/sample/css/images/blank.gif b/ui/src/main/webapp/static/fusion/sample/css/images/blank.gif new file mode 100644 index 0000000000000000000000000000000000000000..75b945d2553848b8b6f41fe5e24599c0687b8472 GIT binary patch literal 49 zcmZ?wbhEHbWMp7unE0RJ|Ns9C3=9Vj8~~DvKUo+V7?>DzfNY>Fh|Ltj$Y2csQN9XW literal 0 HcmV?d00001 diff --git a/ui/src/main/webapp/static/fusion/sample/css/scribble.css b/ui/src/main/webapp/static/fusion/sample/css/scribble.css new file mode 100644 index 0000000..c6ab19b --- /dev/null +++ b/ui/src/main/webapp/static/fusion/sample/css/scribble.css @@ -0,0 +1,41 @@ +#scribble-pad { + /* margin-left:auto; + margin-right:auto; + height: 475px; + width: 475px;*/ + background: + url(https://www.ibm.com/developerworks/mydeveloperworks/blogs/bobleah/resource/stickynote.jpg) + no-repeat center center; + background-size: 110% 110%; +} + +#scribble { + white-space: pre-wrap; /* css-3 */ + white-space: -moz-pre-wrap; /* Mozilla, since 1999 */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + word-wrap: break-word; /* Internet Explorer 5.5+ */ + max-width: 300px; + padding: 120px 100px 100px 75px; + color: #486891; + border-color: #ff0000 #0000ff; + border-color: transparent; + background-color: rgba(0, 0, 0, 0); + font-family: Arial, sans-serif; + font-size: 120%; + font-style: italic; + font-weight: bold; + line-height: 1.5em; +} + +#scribble:focus { + outline-width: 0; +} + +.c-link { + color: #486891; + font-family: Arial, sans-serif; + font-size: 95%; + font-weight: bold; + text-decoration: none; +} \ No newline at end of file diff --git a/ui/src/main/webapp/static/fusion/sample/css/slider.css b/ui/src/main/webapp/static/fusion/sample/css/slider.css new file mode 100644 index 0000000..0bbb790 --- /dev/null +++ b/ui/src/main/webapp/static/fusion/sample/css/slider.css @@ -0,0 +1,143 @@ +div, span, p { + margin: 0; + padding: 0; + border: 0; + outline: 0; + font-weight: inherit; + font-style: inherit; + font-size: 100%; + font-family: inherit; + vertical-align: baseline; +} + +#container { + width: 580px; + padding: 10px; + margin: 0 auto; + position: relative; + z-index: 0; +} + +#example { + width: 600px; + height: 350px; + position: relative; +} + +#ribbon { + position: absolute; + top: -3px; + left: -15px; + z-index: 500; +} + +#frame { + position: absolute; + z-index: 0; + width: 739px; + height: 341px; + top: -3px; + left: -80px; +} + +/* + Slideshow +*/ +#slides { + position: absolute; + top: 15px; + left: 4px; + z-index: 100; +} + +/* + Slides container + Important: + Set the width of your slides container + Set to display none, prevents content flash +*/ +.slides_container { + width: 570px; + overflow: hidden; + position: relative; + display: none; +} + +/* + Each slide + Important: + Set the width of your slides + If height not specified height will be set by the slide content + Set to display block +*/ +.slides_container div.slide { + width: 570px; + height: 270px; + display: block; +} + +/* + Next/prev buttons +*/ +#slides .next, #slides .prev { + position: absolute; + top: 107px; + left: -39px; + width: 24px; + height: 43px; + display: block; + z-index: 101; +} + +#slides .next { + left: 585px; +} + +/* + Pagination +*/ +.pagination { + margin: 26px auto 0; + width: 100px; +} + +.pagination li { + float: left; + margin: 0 1px; + list-style: none; +} + +.pagination li a { + display: block; + width: 12px; + height: 0; + padding-top: 12px; + background-image: url(../images/pagination.png); + background-position: 0 0; + float: left; + overflow: hidden; +} + +.pagination li.current a { + background-position: 0 -12px; +} + +/* + Caption +*/ +.caption { + z-index: 500; + position: absolute; + bottom: -35px; + left: 0; + height: 30px; + padding: 5px 20px 0 20px; + background: #000; + background: rgba(0, 0, 0, .5); + width: 540px; + font-size: 1.3em; + line-height: 1.33; + color: #fff; + border-top: 1px solid #000; + text-shadow: none; +} \ No newline at end of file diff --git a/ui/src/main/webapp/static/fusion/sample/css/spacegallery.css b/ui/src/main/webapp/static/fusion/sample/css/spacegallery.css new file mode 100644 index 0000000..8423221 --- /dev/null +++ b/ui/src/main/webapp/static/fusion/sample/css/spacegallery.css @@ -0,0 +1,20 @@ +.spacegallery { + position: relative; + overflow: hidden; +} + +.spacegallery img { + position: absolute; + left: 50%; +} + +.spacegallery a { + position: absolute; + z-index: 1000; + display: block; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: url(images/blank.gif); +} \ No newline at end of file diff --git a/ui/src/main/webapp/static/fusion/sample/css/welcome.css b/ui/src/main/webapp/static/fusion/sample/css/welcome.css new file mode 100644 index 0000000..f970ecf --- /dev/null +++ b/ui/src/main/webapp/static/fusion/sample/css/welcome.css @@ -0,0 +1,173 @@ +/* Area Chart */ +#areaChart { + overflow: hidden; +} + +#lineChart { + overflow: hidden; +} + +#areaChart svg { + height: 200px; + width: 380px; + min-width: 100px; + min-height: 100px; +} + +#lineChart svg { + height: 200px; + width: 380px; + min-width: 100px; + min-height: 100px; +} + +#areaChart tr.z-row-over>td.z-row-inner, tr.z-row-over>.z-cell { + background-color: rgb(255, 255, 255); +} + +#lineChart tr.z-row-over>td.z-row-inner, tr.z-row-over>.z-cell { + background-color: rgb(255, 255, 255); +} + +#areaChart .nodatadiv { + display: table-cell; + width: 700px; + height: 370px; + text-align: center; + vertical-align: middle; +} + +#lineChart .nodatadiv { + display: table-cell; + width: 700px; + height: 370px; + text-align: center; + vertical-align: middle; +} + +#areaChart .nodatainner { + padding: 10px; +} + +#lineChart .nodatainner { + padding: 10px; +} + +/* Area Chart END */ +.button--small, [class*=bg-] .button--small { + font-size: 14px; +} + +; + +/* Gridster (EBIZ) */ +.gridster-item-container .gridster-item-body { + bottom: 0px; +} + +.gridster-item-container { + min-height: 50px; +} + +.att-accordion { + border-width: 0px; +} + +/* End Gridster */ +#myGallery { + width: 100%; + height: 400px; +} + +#myGallery img { + border: 2px solid #52697E; +} + +a.loading { + background: #fff url(../images/ajax_small.gif) no-repeat center; +} + +.center { + margin-left: auto; + margin-right: auto; +} + +#selectedTrafficDay ul { + list-style: none; + padding: 0; + margin: 0; +} + +#selectedTrafficDay li { + float: left; + border: 1px solid #000; + border-bottom-width: 0; + margin: 3px 3px 3px 3px; + padding: 5px 5px 5px 5px; + background-color: #F2F2F2; + color: #696969; +} + +#SelectedTrafficeDayView { + padding: 0 1em; +} + +#selectedTrafficDay .active1 { + background-color: #FFF; + color: #000; +} + +#BusyHourTraffic ul { + list-style: none; + padding: 0; + margin: 0; +} + +#BusyHourTraffic li { + float: left; + border: 1px solid #000; + border-bottom-width: 0; + margin: 3px 3px 3px 3px; + padding: 5px 5px 5px 5px; + background-color: #F2F2F2; + color: #696969; +} + +#BusyHourTrafficView { + padding: 0 1em; +} + +#BusyHourTraffic .active2 { + background-color: #FFF; + color: #000; +} + +#slider { + width: 600px; + margin: 0 auto; + clear: left; +} + +@media only screen and (device-width: 768px) { + #slider { + width: 400px; + } +} + +#container { + +} + +#title { + float: left; + width: 100%; + height: 30px; + margin:; + color: #222222; + text-shadow: 1px 1px 2px #A0A0A0; +} + +.content { + margin-right: -230px; + top: 50px; +} \ No newline at end of file diff --git a/ui/src/main/webapp/static/fusion/sample/html/area_chart.html b/ui/src/main/webapp/static/fusion/sample/html/area_chart.html new file mode 100644 index 0000000..47df293 --- /dev/null +++ b/ui/src/main/webapp/static/fusion/sample/html/area_chart.html @@ -0,0 +1,63 @@ + + + + + + + +
    +

    +
    +
    + +
    + + + + + + + \ No newline at end of file diff --git a/ui/src/main/webapp/static/fusion/sample/html/bar_chart.html b/ui/src/main/webapp/static/fusion/sample/html/bar_chart.html new file mode 100644 index 0000000..b69ebed --- /dev/null +++ b/ui/src/main/webapp/static/fusion/sample/html/bar_chart.html @@ -0,0 +1,110 @@ + + + + + + + +
    +

    +
    +
    + +
    + + + + + + + + + \ No newline at end of file diff --git a/ui/src/main/webapp/static/fusion/sample/html/d3_gauges_demo.html b/ui/src/main/webapp/static/fusion/sample/html/d3_gauges_demo.html new file mode 100644 index 0000000..cb318cd --- /dev/null +++ b/ui/src/main/webapp/static/fusion/sample/html/d3_gauges_demo.html @@ -0,0 +1,36 @@ + + + + +d3.js gauges + + + + + + + + + + + + + + +
    + + + + + \ No newline at end of file diff --git a/ui/src/main/webapp/static/fusion/sample/html/data/speedometer2.csv b/ui/src/main/webapp/static/fusion/sample/html/data/speedometer2.csv new file mode 100644 index 0000000..406143e --- /dev/null +++ b/ui/src/main/webapp/static/fusion/sample/html/data/speedometer2.csv @@ -0,0 +1,16 @@ +"YEARMONTH","Bedminster","Piscataway","Middletown","Paramus" +"201401",8.27,4.89,2.36,2.17 +"201402",10.02,4.57,3.15,3.01 +"201403",11.16,5.00,4.27,4.06 +"201404",13.31,5.00,5.35,5.11 +"201405",12.82,5.00,5.01,4.74 +"201406",14.01,6.09,9.17,8.98 +"201407",14.66,7.00,8.84,8.41 +"201408",16.95,7.02,12.22,11.84 +"201409",21.56,8.12,16.09,15.50 +"201410",25.35,9.00,19.04,18.37 +"201411",21.93,9.00,17.61,17.13 +"201412",24.00,9.00,19.00,18.00 +"201501",25.14,2.01,15.19,12.13 +"201502",26.30,2.67,16.95,13.47 +"201503",26.5833333333333,45.63333333333333,16.1166666666667,12.40 diff --git a/ui/src/main/webapp/static/fusion/sample/html/data/speedometer3.csv b/ui/src/main/webapp/static/fusion/sample/html/data/speedometer3.csv new file mode 100644 index 0000000..046383e --- /dev/null +++ b/ui/src/main/webapp/static/fusion/sample/html/data/speedometer3.csv @@ -0,0 +1,2 @@ +"YEARMONTH","Bedminster","Piscataway","Middletown","Paramus" +"201401",8.27,4.89,2.36,2.17 \ No newline at end of file diff --git a/ui/src/main/webapp/static/fusion/sample/html/data/worddata.csv b/ui/src/main/webapp/static/fusion/sample/html/data/worddata.csv new file mode 100644 index 0000000..13f0d02 --- /dev/null +++ b/ui/src/main/webapp/static/fusion/sample/html/data/worddata.csv @@ -0,0 +1,127 @@ +text,frequency +service,98 +portal,70 +management,70 +virtual,56 +design,56 +studio,42 +operations,42 +inventory,42 +router,28 +restart,28 +process,28 +platform,28 +manage,28 +loop,28 +licensing,28 +license,28 +integrated,28 +flow-through,28 +enable,28 +data,28 +controller,28 +control,28 +configure,28 +component,28 +common,28 +asset,28 +application,28 +ECOMP,28 +workflow,14 +waterfall,14 +visual,14 +view,14 +workflow,14 +waterfall,14 +visual,14 +view,14 +utilization,14 +user,14 +usage,14 +troubleshoot,14 +transformation,14 +track,14 +topolgies,14 +topics,14 +time,14 +tickets,14 +thresholds,14 +templates,14 +structures,14 +standards-based,14 +software,14 +reuse,14 +repository,14 +reports,14 +release,14 +recipes,14 +real-time,14 +provisioning,14 +properties,14 +project-based,14 +processes,14 +physical,14 +oversight,14 +openl-loop,14 +network,14 +monitor,14 +modeling,14 +model-driven,14 +model,14 +message,14 +maximize,14 +manually,14 +machine,14 +layer,14 +interact,14 +instances,14 +initiate,14 +increase,14 +imported,14 +impacts,14 +host,14 +function,14 +feeds,14 +features,14 +faults,14 +extended,14 +engines,14 +engine,14 +dynamic,14 +document-driven,14 +determine,14 +dashboard,14 +current,14 +creation,14 +created,14 +create,14 +configuration,14 +composer,14 +components,14 +collective,14 +certification,14 +bus,14 +basis,14 +available,14 +automation,14 +automated,14 +associated,14 +assignment,14 +appropriate,14 +against,14 +aervice,14 +adminstrators,14 +activation,14 +action,14 +VMs,14 +VM,14 +VLAN,14 +SDK,14 +SBG,14 +SAM,14 +RUBY,14 +Policy,14 +PODS,14 +Ops,14 +GFP,14 +F5FW,14 diff --git a/ui/src/main/webapp/static/fusion/sample/html/donut_d3.html b/ui/src/main/webapp/static/fusion/sample/html/donut_d3.html new file mode 100644 index 0000000..9967849 --- /dev/null +++ b/ui/src/main/webapp/static/fusion/sample/html/donut_d3.html @@ -0,0 +1,42 @@ + + + + + + + + \ No newline at end of file diff --git a/ui/src/main/webapp/static/fusion/sample/html/js/area_chart.min.js b/ui/src/main/webapp/static/fusion/sample/html/js/area_chart.min.js new file mode 100644 index 0000000..9b3decb --- /dev/null +++ b/ui/src/main/webapp/static/fusion/sample/html/js/area_chart.min.js @@ -0,0 +1 @@ +function redrawAreaChart(){d3.select("#areaChart svg").datum(historicalBarChart).call(area_chart)}var area_chart;nv.addGraph(function(){return area_chart=nv.models.stackedAreaChart().showControls(!1).margin({top:30,right:60,bottom:50,left:100}).showLegend(!1).yAxisTooltipFormat(d3.format(",.1f")).x(function(a){return a.x}).y(function(a){return a.y}).color(d3.scale.category10().range()),area_chart.xAxis.axisLabel("").staggerLabels(!1).showMaxMin(!1).rotateLabels(90).tickFormat(function(a){return d3.time.format("%b %y")(new Date(a))}),area_chart.yAxis.axisLabel("").tickFormat(d3.format(",.1f")),d3.select("#areaChart svg").datum(historicalBarChart).call(area_chart),nv.utils.windowResize(area_chart.update),area_chart}),redrawAreaChart(),historicalBarChart.length<=0&&(document.getElementById("areaChart").innerHTML="
    No Data Available
    ",document.getElementById("areaChart").className="nodatadiv",document.getElementById("nodata").className="nodatainner"); \ No newline at end of file diff --git a/ui/src/main/webapp/static/fusion/sample/html/js/donut.min.js b/ui/src/main/webapp/static/fusion/sample/html/js/donut.min.js new file mode 100644 index 0000000..60c4fd4 --- /dev/null +++ b/ui/src/main/webapp/static/fusion/sample/html/js/donut.min.js @@ -0,0 +1 @@ +function angle(t){var e=90*(t.startAngle+t.endAngle)/Math.PI-90;return e>90?e-180:e}function arcTween(t,e){return function(){d3.select(this).transition().delay(e).attrTween("d",function(e){var r=d3.interpolate(e.outerRadius,t);return function(t){return e.outerRadius=r(t),arc(e)}})}}var arc=d3.svg.arc().padRadius(outerRadius).innerRadius(innerRadius),pie=d3.layout.pie().sort(null).padAngle(.02).value(function(t){return t.performance});d3.csv(dataURL,function(t,e){color.domain(d3.keys(e[0]).filter(function(t){return"YEARMONTH"!==t})),e.forEach(function(t){t.performance=color.domain().map(function(e){return{name:e,performance:+t[e]}})});var r=d3.select("body").append("svg").attr("class","legend").attr("width",radius).attr("height",2*radius).selectAll("g").data(color.domain().slice().reverse()).enter().append("g").attr("transform",function(t,e){return"translate(0,"+20*e+")"});r.append("rect").attr("width",18).attr("height",18).style("fill",color),r.append("text").attr("x",24).attr("y",9).attr("dy",".35em").text(function(t){return t});var a=d3.select("body").append("svg").attr("width",width).attr("height",height).data(e).append("g").attr("transform","translate("+radius+","+height/2+")"),n=a.selectAll("g.slice").data(function(t){return pie(t.performance)}).enter().append("g").attr("class","slice");n.append("path").each(function(t){t.outerRadius=outerRadius-10}).attr("class","arc").attr("d",arc).style("fill",function(t){return color(t.data.name)}).on("mouseover",arcTween(outerRadius,0)).on("mouseout",arcTween(outerRadius-10,150)),n.append("text").attr("dy",".35em").attr("transform",function(t){return t.outerRadius=outerRadius,t.innerRadius=outerRadius/2,"translate("+arc.centroid(t)+")rotate("+angle(t)+")"}).attr("text-anchor","middle").style("fill","white").style("font","bold 12px Arial").text(function(t){return t.value}),a.append("text").attr("dy",".35em").style("text-anchor","middle").text(function(t){return t.YEARMONTH})}); \ No newline at end of file diff --git a/ui/src/main/webapp/static/fusion/sample/html/js/gauges.min.js b/ui/src/main/webapp/static/fusion/sample/html/js/gauges.min.js new file mode 100644 index 0000000..c0fd748 --- /dev/null +++ b/ui/src/main/webapp/static/fusion/sample/html/js/gauges.min.js @@ -0,0 +1 @@ +function Gauge(t,i){this.placeholderName=t;var n=this;this.configure=function(t){this.config=t,this.config.size=.9*this.config.size,this.config.raduis=.97*this.config.size/2,this.config.cx=this.config.size/2,this.config.cy=this.config.size/2,this.config.min=void 0!=t.min?t.min:0,this.config.max=void 0!=t.max?t.max:100,this.config.range=this.config.max-this.config.min,this.config.majorTicks=t.majorTicks||5,this.config.minorTicks=t.minorTicks||2,this.config.greenColor=t.greenColor||"#109618",this.config.yellowColor=t.yellowColor||"#FF9900",this.config.redColor=t.redColor||"#DC3912",this.config.transitionDuration=t.transitionDuration||500},this.render=function(){this.body=d3.select("#"+this.placeholderName).append("svg:svg").attr("class","gauge").attr("width",this.config.size).attr("height",this.config.size),this.body.append("svg:circle").attr("cx",this.config.cx).attr("cy",this.config.cy).attr("r",this.config.raduis).style("fill","#ccc").style("stroke","#000").style("stroke-width","0.5px"),this.body.append("svg:circle").attr("cx",this.config.cx).attr("cy",this.config.cy).attr("r",.9*this.config.raduis).style("fill","#fff").style("stroke","#e0e0e0").style("stroke-width","2px");for(var t in this.config.greenZones)this.drawBand(this.config.greenZones[t].from,this.config.greenZones[t].to,n.config.greenColor);for(var t in this.config.yellowZones)this.drawBand(this.config.yellowZones[t].from,this.config.yellowZones[t].to,n.config.yellowColor);for(var t in this.config.redZones)this.drawBand(this.config.redZones[t].from,this.config.redZones[t].to,n.config.redColor);if(void 0!=this.config.label){var i=Math.round(this.config.size/12);this.body.append("svg:text").attr("x",this.config.cx).attr("y",this.config.cy/2+i/2).attr("dy",i/2).attr("text-anchor","middle").text(this.config.label).style("font-size",i+"px").style("fill","#333").style("stroke-width","0px")}for(var i=Math.round(this.config.size/16),e=this.config.range/(this.config.majorTicks-1),o=this.config.min;o<=this.config.max;o+=e){for(var a=e/this.config.minorTicks,r=o+a;r=i-t||this.body.append("svg:path").style("fill",e).attr("d",d3.svg.arc().startAngle(this.valueToRadians(t)).endAngle(this.valueToRadians(i)).innerRadius(.65*this.config.raduis).outerRadius(.85*this.config.raduis)).attr("transform",function(){return"translate("+n.config.cx+", "+n.config.cy+") rotate(270)"})},this.redraw=function(t,i,e){var o=this.body.select(".pointerContainer"),a=o.selectAll("text");y=a.attr("y"),dy=parseFloat(a.attr("dy")),a.selectAll("tspan").remove(),a.append("tspan").attr("x",45).attr("dy",0).text(Math.round(t)),a.append("tspan").attr("x",45).attr("dy",10).text(i),o.selectAll("text").style("fill",function(){var i=n.config.max-n.config.min;return Math.round(t)>.9*i?"#DC3912":Math.round(t)>.5*i&&Math.round(t)<.9*i?"#FF9900":"#000000"});var r=o.selectAll("path");r.transition().duration(void 0!=e?e:this.config.transitionDuration).attrTween("transform",function(){var i=t;t>n.config.max?i=n.config.max+.02*n.config.range:tNo Data Available",document.getElementById("lineChart").className="nodatadiv",document.getElementById("nodata2").className="nodatainner"); \ No newline at end of file diff --git a/ui/src/main/webapp/static/fusion/sample/html/js/pie_chart.min.js b/ui/src/main/webapp/static/fusion/sample/html/js/pie_chart.min.js new file mode 100644 index 0000000..f78eec7 --- /dev/null +++ b/ui/src/main/webapp/static/fusion/sample/html/js/pie_chart.min.js @@ -0,0 +1 @@ +function redraw(){d3.select("#chart423 svg").datum(historicalBarChart).transition().duration(500).call(chart)}var chart;nv.addGraph(function(){return chart=nv.models.pieChart().margin({top:30,right:60,bottom:50,left:100}).x(function(t){return t.key}).y(function(t){return t.y}),chart.showLegend(!1),d3.select("#chart423 svg").datum(historicalBarChart).transition().duration(1200).call(chart),nv.utils.windowResize(chart.update),chart}),setInterval(function(){redraw()},1500),historicalBarChart.length<=0&&(document.getElementById("chart423").innerHTML="
    No Data Available
    ",document.getElementById("chart423").className="nodatadiv",document.getElementById("nodata").className="nodatainner"); \ No newline at end of file diff --git a/ui/src/main/webapp/static/fusion/sample/html/js/worddata.min.js b/ui/src/main/webapp/static/fusion/sample/html/js/worddata.min.js new file mode 100644 index 0000000..6b82746 --- /dev/null +++ b/ui/src/main/webapp/static/fusion/sample/html/js/worddata.min.js @@ -0,0 +1 @@ +function dataViz(t){function e(t){var e=d3.select("svg").append("g").attr("id","wordCloudG").attr("transform","translate(210,175)");e.selectAll("text").data(t).enter().append("text").style("font-size",function(t){return 1*t.size+"px"}).style("fill",function(t){return keywords.indexOf(t.text)>-1?"red":"black"}).style("opacity",.75).attr("text-anchor","middle").attr("transform",function(t){return"translate("+[t.x,t.y]+")rotate("+t.rotate+")"}).text(function(t){return t.text})}d3.layout.cloud().size([420,350]).words(t).rotate(function(t){return t.text.length>5?0:90}).fontSize(function(t){return wordScale(t.frequency)}).on("end",e).start()}d3.csv(dataURL,function(t){dataViz(t)}),wordScale=d3.scale.linear().domain([0,100]).range([0,70]).clamp(!0); \ No newline at end of file diff --git a/ui/src/main/webapp/static/fusion/sample/html/line_chart.html b/ui/src/main/webapp/static/fusion/sample/html/line_chart.html new file mode 100644 index 0000000..393cc9c --- /dev/null +++ b/ui/src/main/webapp/static/fusion/sample/html/line_chart.html @@ -0,0 +1,63 @@ + + + + + + + +
    +

    +
    +
    + +
    + + + + + + + \ No newline at end of file diff --git a/ui/src/main/webapp/static/fusion/sample/html/pie_chart.html b/ui/src/main/webapp/static/fusion/sample/html/pie_chart.html new file mode 100644 index 0000000..180066e --- /dev/null +++ b/ui/src/main/webapp/static/fusion/sample/html/pie_chart.html @@ -0,0 +1,51 @@ + + + + + + + +
    + +
    + + + + + + + + + + \ No newline at end of file diff --git a/ui/src/main/webapp/static/fusion/sample/html/wordcloud.html b/ui/src/main/webapp/static/fusion/sample/html/wordcloud.html new file mode 100644 index 0000000..8619599 --- /dev/null +++ b/ui/src/main/webapp/static/fusion/sample/html/wordcloud.html @@ -0,0 +1,35 @@ + + +Word Cloud Example + + + + + + + + + +
    + + +
    +
    + +
    + + + +
    + + \ No newline at end of file diff --git a/ui/src/main/webapp/static/fusion/sample/images/carousel/slide_b_drive_test_map.png b/ui/src/main/webapp/static/fusion/sample/images/carousel/slide_b_drive_test_map.png new file mode 100644 index 0000000000000000000000000000000000000000..78a8873bbfa7e99dbcd07844e2739beb35736238 GIT binary patch literal 202465 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⁡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 AegFUf literal 0 HcmV?d00001 diff --git a/ui/src/main/webapp/static/fusion/sample/images/carousel/slide_b_eppt_county.png b/ui/src/main/webapp/static/fusion/sample/images/carousel/slide_b_eppt_county.png new file mode 100644 index 0000000000000000000000000000000000000000..df471d7d8591af0fbedb1db3405d5d8e94443f7a GIT binary patch literal 21222 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 literal 0 HcmV?d00001 diff --git a/ui/src/main/webapp/static/fusion/sample/images/carousel/slide_b_eppt_regression.png b/ui/src/main/webapp/static/fusion/sample/images/carousel/slide_b_eppt_regression.png new file mode 100644 index 0000000000000000000000000000000000000000..e59fc189c0ea74340c764c2d356da7bb9487d33c GIT binary patch literal 11536 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 GnEwMu?xSD; literal 0 HcmV?d00001 diff --git a/ui/src/main/webapp/static/fusion/sample/images/carousel/slide_b_lata_map.png b/ui/src/main/webapp/static/fusion/sample/images/carousel/slide_b_lata_map.png new file mode 100644 index 0000000000000000000000000000000000000000..174ef9b8e8b47a2d09b02962270cf1d233acbb97 GIT binary patch literal 192031 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 literal 0 HcmV?d00001 diff --git a/ui/src/main/webapp/static/fusion/sample/images/carousel/slide_b_lata_map_legend.png b/ui/src/main/webapp/static/fusion/sample/images/carousel/slide_b_lata_map_legend.png new file mode 100644 index 0000000000000000000000000000000000000000..f7f2719ae94b0d6440803f985ffd14ef441863b8 GIT binary patch literal 3021 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 literal 0 HcmV?d00001 diff --git a/ui/src/main/webapp/static/fusion/sample/images/carousel/slide_b_nova_sdn_map.png b/ui/src/main/webapp/static/fusion/sample/images/carousel/slide_b_nova_sdn_map.png new file mode 100644 index 0000000000000000000000000000000000000000..ee0ddef913d9203fb1dcd752a9748c25566bf0a6 GIT binary patch literal 179361 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

    &`J;XCF}C}D@|&>9^xqb8BVpoGA;^#WWD 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 V3~|ceSquOG002ovPDHLkV1mEs$szy% literal 0 HcmV?d00001 diff --git a/ui/src/main/webapp/static/fusion/sample/images/tunnels/1_mon.png b/ui/src/main/webapp/static/fusion/sample/images/tunnels/1_mon.png new file mode 100644 index 0000000000000000000000000000000000000000..d46eee50533e46db5ed6c7579f887da1b552f996 GIT binary patch literal 22762 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 IH-CHdZ?zgZz5oCK literal 0 HcmV?d00001 diff --git a/ui/src/main/webapp/static/fusion/sample/images/tunnels/7_sun.png b/ui/src/main/webapp/static/fusion/sample/images/tunnels/7_sun.png new file mode 100644 index 0000000000000000000000000000000000000000..9d579d680b5f1d25f0b6bc6de121e6be6c990fc7 GIT binary patch literal 22845 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 N{HfC6JE={)lc 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 Z@V+X@{$L&s*p0}hf64e_iT3ro{{iM&5-$J% literal 0 HcmV?d00001 diff --git a/ui/src/main/webapp/static/fusion/sample/images/tunnels/BH_Nat_Def.png b/ui/src/main/webapp/static/fusion/sample/images/tunnels/BH_Nat_Def.png new file mode 100644 index 0000000000000000000000000000000000000000..a8b516d9f5ad2034541797b8a165825acded69b4 GIT binary patch literal 8941 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 literal 0 HcmV?d00001 diff --git a/ui/src/main/webapp/static/fusion/sample/images/tunnels/BH_Nat_Priority.png b/ui/src/main/webapp/static/fusion/sample/images/tunnels/BH_Nat_Priority.png new file mode 100644 index 0000000000000000000000000000000000000000..2cf814113ff2e323a0989e5c990eab340a53962c GIT binary patch literal 10590 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 a_WPBf5I#}E3*4Ke(^dyvFT8dq=sy4^qgY`8 literal 0 HcmV?d00001 diff --git a/ui/src/main/webapp/static/fusion/sample/js/FusionCharts.js b/ui/src/main/webapp/static/fusion/sample/js/FusionCharts.js new file mode 100644 index 0000000..f5f60ad --- /dev/null +++ b/ui/src/main/webapp/static/fusion/sample/js/FusionCharts.js @@ -0,0 +1,430 @@ +/** + * FusionCharts: Flash Player detection and Chart embedding. Version 1.2.3F ( 22 + * November 2008) - Specialized for FusionChartsFREE Checking Flash Version >=6 + * and added updateChartXML() for FREE Charts. Version: 1.2.3 (1st September, + * 2008) - Added Fix for % and & characters, scaled dimensions, fixes in to + * properly handling of double quotes and single quotes in setDataXML() + * function. Version: 1.2.2 (10th July, 2008) - Added Fix for % scaled + * dimensions, fixes in setDataXML() and setDataURL() functions Version: 1.2.1 + * (21st December, 2007) - Added setting up Transparent/opaque mode: + * setTransparent() function Version: 1.2 (1st November, 2007) - Added FORM + * fixes for IE Version: 1.1 (29th June, 2007) - Added Player detection, New + * conditional fixes for IE + * + * Morphed from SWFObject (http://blog.deconcept.com/swfobject/) under MIT + * License: http://www.opensource.org/licenses/mit-license.php + * + */ +if (typeof infosoftglobal == "undefined") + var infosoftglobal = new Object(); +if (typeof infosoftglobal.FusionChartsUtil == "undefined") + infosoftglobal.FusionChartsUtil = new Object(); +infosoftglobal.FusionCharts = function(swf, id, w, h, debugMode, + registerWithJS, c, scaleMode, lang, detectFlashVersion, + autoInstallRedirect) { + if (!document.getElementById) { + return; + } + + // Flag to see whether data has been set initially + this.initialDataSet = false; + + // Create container objects + this.params = new Object(); + this.variables = new Object(); + this.attributes = new Array(); + + // Set attributes for the SWF + if (swf) { + this.setAttribute('swf', swf); + } + if (id) { + this.setAttribute('id', id); + } + + w = w.toString().replace(/\%$/, "%25"); + if (w) { + this.setAttribute('width', w); + } + h = h.toString().replace(/\%$/, "%25"); + if (h) { + this.setAttribute('height', h); + } + + // Set background color + if (c) { + this.addParam('bgcolor', c); + } + + // Set Quality + this.addParam('quality', 'high'); + + // Add scripting access parameter + this.addParam('allowScriptAccess', 'always'); + + // Pass width and height to be appended as chartWidth and chartHeight + this.addVariable('chartWidth', w); + this.addVariable('chartHeight', h); + + // Whether in debug mode + debugMode = debugMode ? debugMode : 0; + this.addVariable('debugMode', debugMode); + // Pass DOM ID to Chart + this.addVariable('DOMId', id); + // Whether to registed with JavaScript + registerWithJS = registerWithJS ? registerWithJS : 0; + this.addVariable('registerWithJS', registerWithJS); + + // Scale Mode of chart + scaleMode = scaleMode ? scaleMode : 'noScale'; + this.addVariable('scaleMode', scaleMode); + + // Application Message Language + lang = lang ? lang : 'EN'; + this.addVariable('lang', lang); + + // Whether to auto detect and re-direct to Flash Player installation + this.detectFlashVersion = detectFlashVersion ? detectFlashVersion : 1; + this.autoInstallRedirect = autoInstallRedirect ? autoInstallRedirect : 1; + + // Ger Flash Player version + this.installedVer = infosoftglobal.FusionChartsUtil.getPlayerVersion(); + + if (!window.opera && document.all && this.installedVer.major > 7) { + // Only add the onunload cleanup if the Flash Player version supports + // External Interface and we are in IE + infosoftglobal.FusionCharts.doPrepUnload = true; + } +} + +infosoftglobal.FusionCharts.prototype = { + setAttribute : function(name, value) { + this.attributes[name] = value; + }, + getAttribute : function(name) { + return this.attributes[name]; + }, + addParam : function(name, value) { + this.params[name] = value; + }, + getParams : function() { + return this.params; + }, + addVariable : function(name, value) { + this.variables[name] = value; + }, + getVariable : function(name) { + return this.variables[name]; + }, + getVariables : function() { + return this.variables; + }, + getVariablePairs : function() { + var variablePairs = new Array(); + var key; + var variables = this.getVariables(); + for (key in variables) { + variablePairs.push(key + "=" + variables[key]); + } + return variablePairs; + }, + getSWFHTML : function() { + var swfNode = ""; + if (navigator.plugins && navigator.mimeTypes + && navigator.mimeTypes.length) { + // netscape plugin architecture + swfNode = ' 0) { + swfNode += 'flashvars="' + pairs + '"'; + } + swfNode += '/>'; + } else { // PC IE + swfNode = ''; + swfNode += ''; + var params = this.getParams(); + for ( var key in params) { + swfNode += ''; + } + var pairs = this.getVariablePairs().join("&"); + if (pairs.length > 0) { + swfNode += ''; + } + swfNode += ""; + } + return swfNode; + }, + setDataURL : function(strDataURL) { + // This method sets the data URL for the chart. + // If being set initially + if (this.initialDataSet == false) { + this.addVariable('dataURL', strDataURL); + // Update flag + this.initialDataSet = true; + } else { + // Else, we update the chart data using External Interface + // Get reference to chart object + var chartObj = infosoftglobal.FusionChartsUtil.getChartObject(this + .getAttribute('id')); + + if (!chartObj.setDataURL) { + __flash__addCallback(chartObj, "setDataURL"); + } + + chartObj.setDataURL(strDataURL); + } + }, + // This function : + // fixes the double quoted attributes to single quotes + // Encodes all quotes inside attribute values + // Encodes % to %25 and & to %26; + encodeDataXML : function(strDataXML) { + + var regExpReservedCharacters = [ "\\$", "\\+" ]; + var arrDQAtt = strDataXML.match(/=\s*\".*?\"/g); + if (arrDQAtt) { + for (var i = 0; i < arrDQAtt.length; i++) { + var repStr = arrDQAtt[i].replace(/^=\s*\"|\"$/g, ""); + repStr = repStr.replace(/\'/g, "%26apos;"); + var strTo = strDataXML.indexOf(arrDQAtt[i]); + var repStrr = "='" + repStr + "'"; + var strStart = strDataXML.substring(0, strTo); + var strEnd = strDataXML.substring(strTo + arrDQAtt[i].length); + var strDataXML = strStart + repStrr + strEnd; + } + } + + strDataXML = strDataXML.replace(/\"/g, "%26quot;"); + strDataXML = strDataXML.replace(/%(?![\da-f]{2}|[\da-f]{4})/ig, "%25"); + strDataXML = strDataXML.replace(/\&/g, "%26"); + + return strDataXML; + + }, + setDataXML : function(strDataXML) { + // If being set initially + if (this.initialDataSet == false) { + // This method sets the data XML for the chart INITIALLY. + this.addVariable('dataXML', this.encodeDataXML(strDataXML)); + // Update flag + this.initialDataSet = true; + } else { + // Else, we update the chart data using External Interface + // Get reference to chart object + var chartObj = infosoftglobal.FusionChartsUtil.getChartObject(this + .getAttribute('id')); + chartObj.setDataXML(strDataXML); + } + }, + setTransparent : function(isTransparent) { + // Sets chart to transparent mode when isTransparent is true (default) + // When no parameter is passed, we assume transparent to be true. + if (typeof isTransparent == "undefined") { + isTransparent = true; + } + // Set the property + if (isTransparent) + this.addParam('WMode', 'transparent'); + else + this.addParam('WMode', 'Opaque'); + }, + + render : function(elementId) { + // First check for installed version of Flash Player - we need a minimum + // of 6 + if ((this.detectFlashVersion == 1) && (this.installedVer.major < 6)) { + if (this.autoInstallRedirect == 1) { + // If we can auto redirect to install the player? + var installationConfirm = window + .confirm("You need Adobe Flash Player 6 (or above) to view the charts. It is a free and lightweight installation from Adobe.com. Please click on Ok to install the same."); + if (installationConfirm) { + window.location = "http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash"; + } else { + return false; + } + } else { + // Else, do not take an action. It means the developer has + // specified a message in the DIV (and probably a link). + // So, expect the developers to provide a course of way to their + // end users. + // window.alert("You need Adobe Flash Player 8 (or above) to + // view the charts. It is a free and lightweight installation + // from Adobe.com. "); + return false; + } + } else { + // Render the chart + var n = (typeof elementId == 'string') ? document + .getElementById(elementId) : elementId; + n.innerHTML = this.getSWFHTML(); + + // Added - - - - - - - \ No newline at end of file diff --git a/ui/src/main/webapp/views/findBySubmissionId.html b/ui/src/main/webapp/views/findBySubmissionId.html deleted file mode 100644 index 2900b25..0000000 --- a/ui/src/main/webapp/views/findBySubmissionId.html +++ /dev/null @@ -1,182 +0,0 @@ - - - - - - - - -
    -
    -

    Find results by submission

    -
    - - -
    - -
    - -
    - -

    Test info

    -

    -

    Name: {{result.name}}

    -

    Generated: {{result.robot.generated}}

    -

    Generator: {{result.robot.generator}}

    -

    Errors: {{result.robot.errors}}

    - -

    Test Statistics

    -

    - - - - - - - - - - - - - - - - - - - -
    -

    -
     Total statistics Total Pass Fail Pass / Fail 
    {{ - stat.content }}{{ - (stat.fail * 1) + (stat.pass*1) }}{{ - stat.pass }}{{ - stat.fail}} -
    -
    -
    -
    -
    - - - - - - - - - - - - - - - - - - - - -
    -

    -
     Statistics by Tag Total Pass Fail Pass / Fail 
    {{ - stat.content }}{{ - (stat.fail * 1) + (stat.pass*1) }}{{ - stat.pass }}{{ - stat.fail}} -
    -
    -
    -
    -
    - - - - - - - - - - - - - - - - - - - - -
    -

    -
     Statistics by Suite Total Pass Fail Pass / Fail 
    {{ - stat.content }}{{ - (stat.fail * 1) + (stat.pass*1) }}{{ - stat.pass }}{{ - stat.fail}} -
    -
    -
    -
    -
    - -
    -
    - - - - diff --git a/ui/src/main/webapp/views/indexMain.html b/ui/src/main/webapp/views/indexMain.html deleted file mode 100644 index 758bb3a..0000000 --- a/ui/src/main/webapp/views/indexMain.html +++ /dev/null @@ -1,117 +0,0 @@ - - - diff --git a/ui/src/main/webapp/views/login.html b/ui/src/main/webapp/views/login.html deleted file mode 100644 index daf5454..0000000 --- a/ui/src/main/webapp/views/login.html +++ /dev/null @@ -1,98 +0,0 @@ - ---> - - - - - - - -
    -
    -

    Blueprint - Validation UI

    -

    Sign In Page

    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    - -
    -
    -
    -
    -
    - - \ No newline at end of file diff --git a/ui/src/main/webapp/views/newSubmission.html b/ui/src/main/webapp/views/newSubmission.html deleted file mode 100644 index 11c8afa..0000000 --- a/ui/src/main/webapp/views/newSubmission.html +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - - -
    -
    -

    Submission form

    -
    - - -
    - -
    - - -
    - -
    - - -
    - -
    - - -
    - -
    - -
    - -
    - - - - - - -- 2.16.6
    compatibility + // Check if it's added in Mozilla embed array or if already exits + if (!document.embeds[this.getAttribute('id')] + && !window[this.getAttribute('id')]) + window[this.getAttribute('id')] = document.getElementById(this + .getAttribute('id')); + // or else document.forms[formName/formIndex][chartId] + return true; + } + } +} + +/* ---- detection functions ---- */ +infosoftglobal.FusionChartsUtil.getPlayerVersion = function() { + var PlayerVersion = new infosoftglobal.PlayerVersion([ 0, 0, 0 ]); + if (navigator.plugins && navigator.mimeTypes.length) { + var x = navigator.plugins["Shockwave Flash"]; + if (x && x.description) { + PlayerVersion = new infosoftglobal.PlayerVersion(x.description + .replace(/([a-zA-Z]|\s)+/, "").replace(/(\s+r|\s+b[0-9]+)/, + ".").split(".")); + } + } else if (navigator.userAgent + && navigator.userAgent.indexOf("Windows CE") >= 0) { + // If Windows CE + var axo = 1; + var counter = 3; + while (axo) { + try { + counter++; + axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash." + + counter); + PlayerVersion = new infosoftglobal.PlayerVersion([ counter, 0, + 0 ]); + } catch (e) { + axo = null; + } + } + } else { + // Win IE (non mobile) + // Do minor version lookup in IE, but avoid Flash Player 6 crashing + // issues + try { + var axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7"); + } catch (e) { + try { + var axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6"); + PlayerVersion = new infosoftglobal.PlayerVersion([ 6, 0, 21 ]); + axo.AllowScriptAccess = "always"; // error if player version < + // 6.0.47 (thanks to Michael + // Williams @ Adobe for this + // code) + } catch (e) { + if (PlayerVersion.major == 6) { + return PlayerVersion; + } + } + try { + axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash"); + } catch (e) { + } + } + if (axo != null) { + PlayerVersion = new infosoftglobal.PlayerVersion(axo.GetVariable( + "$version").split(" ")[1].split(",")); + } + } + return PlayerVersion; +} +infosoftglobal.PlayerVersion = function(arrVersion) { + this.major = arrVersion[0] != null ? parseInt(arrVersion[0]) : 0; + this.minor = arrVersion[1] != null ? parseInt(arrVersion[1]) : 0; + this.rev = arrVersion[2] != null ? parseInt(arrVersion[2]) : 0; +} +// ------------ Fix for Out of Memory Bug in IE in FP9 ---------------// +/* Fix for video streaming bug */ +infosoftglobal.FusionChartsUtil.cleanupSWFs = function() { + var objects = document.getElementsByTagName("OBJECT"); + for (var i = objects.length - 1; i >= 0; i--) { + objects[i].style.display = 'none'; + for ( var x in objects[i]) { + if (typeof objects[i][x] == 'function') { + objects[i][x] = function() { + }; + } + } + } +} +// Fixes bug in fp9 +if (infosoftglobal.FusionCharts.doPrepUnload) { + if (!infosoftglobal.unloadSet) { + infosoftglobal.FusionChartsUtil.prepUnload = function() { + __flash_unloadHandler = function() { + }; + __flash_savedUnloadHandler = function() { + }; + window.attachEvent("onunload", + infosoftglobal.FusionChartsUtil.cleanupSWFs); + } + window.attachEvent("onbeforeunload", + infosoftglobal.FusionChartsUtil.prepUnload); + infosoftglobal.unloadSet = true; + } +} +/* Add document.getElementById if needed (mobile IE < 5) */ +if (!document.getElementById && document.all) { + document.getElementById = function(id) { + return document.all[id]; + } +} +/* Add Array.push if needed (ie5) */ +if (Array.prototype.push == null) { + Array.prototype.push = function(item) { + this[this.length] = item; + return this.length; + } +} + +/* Function to return Flash Object from ID */ +infosoftglobal.FusionChartsUtil.getChartObject = function(id) { + var chartRef = null; + if (navigator.appName.indexOf("Microsoft Internet") == -1) { + if (document.embeds && document.embeds[id]) + chartRef = document.embeds[id]; + else + chartRef = window.document[id]; + } else { + chartRef = window[id]; + } + if (!chartRef) + chartRef = document.getElementById(id); + + return chartRef; +} +/* + * Function to update chart's data at client side (FOR FusionCharts vFREE and + * 2.x + */ +infosoftglobal.FusionChartsUtil.updateChartXML = function(chartId, strXML) { + // Get reference to chart object + var chartObj = infosoftglobal.FusionChartsUtil.getChartObject(chartId); + // Set dataURL to null + chartObj.SetVariable("_root.dataURL", ""); + // Set the flag + chartObj.SetVariable("_root.isNewData", "1"); + // Set the actual data + chartObj.SetVariable("_root.newData", strXML); + // Go to the required frame + chartObj.TGotoLabel("/", "JavaScriptHandler"); +} + +/* Aliases for easy usage */ +var getChartFromId = infosoftglobal.FusionChartsUtil.getChartObject; +var updateChartXML = infosoftglobal.FusionChartsUtil.updateChartXML; +var FusionCharts = infosoftglobal.FusionCharts; \ No newline at end of file diff --git a/ui/src/main/webapp/static/fusion/sample/js/charts.js b/ui/src/main/webapp/static/fusion/sample/js/charts.js new file mode 100644 index 0000000..4acb52d --- /dev/null +++ b/ui/src/main/webapp/static/fusion/sample/js/charts.js @@ -0,0 +1,142 @@ +function drawSingleSeriesChart(tabId, chartId, chartWidth, chartHeight, + chartType, chartData, mme, yyyyMo) { + // define, set the data for each chart, and render them (if indicated) + var myChart = new FusionCharts( + "static/fusion/inc/fusionchart/" + chartType, + "myChartId" + chartId, chartWidth, chartHeight); + + var mmeLabel = "";// mme + ""; + + var chartCaptionId = tabId + "-chartdiv" + chartId + "-label"; + + document.getElementById(chartCaptionId).innerHTML = "Hosted Voice Usage in " + + yyyyMo; + + myChart + .setDataXML("" + + chartData + ""); + myChart.setTransparent(true); + myChart.render(tabId + "-" + "chartdiv" + chartId); + +} + +// gauge charts +function drawGaugeChart(chartId, gaugeIndex, value) { + var myChart = new FusionCharts( + "static/fusion/inc/fusionchart/AngularGauge.swf", "myChartId" + + chartId, "300", "300", "0", "0"); + // CPU for NYCMNYBWLT1 on 201301 : 12.63// + var chartData = "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + ""; + + myChart.setDataXML(chartData); + myChart.render("chartdiv" + chartId); +} + +function updateGaugeChart(chartId, gaugeIndex, refreshCount) { + var myChart = getChartFromId("myChartId" + chartId); + var val = 0; + if (gaugeIndex == "10") + val = 12; + else if (gaugeIndex == "20") + val = 15; + else if (gaugeIndex == "30") + val = 52; + else if (gaugeIndex == "40") + val = 42; + myChart.setData(1, val); + myChart.setData(2, val + 20); +} + +function updateGaugeChartWithMMEData(chartId, value) { + var myChart = getChartFromId("myChartId" + chartId); + myChart.setData(1, value); +} + +function updateGaugeChartWithMMEData(chartId, value, yyyyMo, mme) { + var myChart = getChartFromId("myChartId" + chartId); + myChart.setData(1, value); + document.getElementById("cpuYyyyMm").innerHTML = "Hosted Voice Utilization in " + + yyyyMo; + +} + +function drawMultiSeriesChart(tabId, chartId, chartWidth, chartHeight, + chartType) { + var myChart = new FusionCharts( + "static/fusion/inc/fusionchart/" + chartType, + "myChartId" + chartId, chartWidth, chartHeight, "0", "0"); + + myChart.setTransparent(true); + + var chartData = "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + ""; + + myChart.setDataXML(chartData); + myChart.render(tabId + "-" + "chartdiv" + chartId); +} diff --git a/ui/src/main/webapp/static/fusion/sample/js/scribble.js b/ui/src/main/webapp/static/fusion/sample/js/scribble.js new file mode 100644 index 0000000..c255863 --- /dev/null +++ b/ui/src/main/webapp/static/fusion/sample/js/scribble.js @@ -0,0 +1,18 @@ +function storeUserScribble(id) { + var scribble = document.getElementById('scribble').innerHTML; + localStorage.setItem('userScribble', scribble); +} + +function getUserScribble() { + if (localStorage.getItem('userScribble')) { + var scribble = localStorage.getItem('userScribble'); + } else { + var scribble = 'You can scribble directly on this sticky... and I will also remember your message the next time you visit my blog!'; + } + document.getElementById('scribble').innerHTML = scribble; +} + +function clearLocal() { + clear: localStorage.clear(); + return false; +} diff --git a/ui/src/main/webapp/static/fusion/sample/org_chart/css/bootstrap.min.css b/ui/src/main/webapp/static/fusion/sample/org_chart/css/bootstrap.min.css new file mode 100644 index 0000000..734e296 --- /dev/null +++ b/ui/src/main/webapp/static/fusion/sample/org_chart/css/bootstrap.min.css @@ -0,0 +1,2708 @@ +html, body { + margin: 0; + padding: 0; +} + +h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, + cite, code, del, dfn, em, img, q, s, samp, small, strike, strong, + sub, sup, tt, var, dd, dl, dt, li, ol, ul, fieldset, form, label, + legend, button, table, caption, tbody, tfoot, thead, tr, th, td { + margin: 0; + padding: 0; + border: 0; + font-weight: normal; + font-style: normal; + font-size: 100%; + line-height: 1; + font-family: inherit; +} + +ol, ul { + list-style: none; +} + +q:before, q:after, blockquote:before, blockquote:after { + content: ""; +} + +html { + overflow-y: scroll; + font-size: 100%; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} + +a:focus { + outline: thin dotted; +} + +a:hover, a:active { + outline: 0; +} + +article, aside, details, figcaption, figure, footer, header, hgroup, nav, + section { + display: block; +} + +audio, canvas, video { + display: inline-block; + *display: inline; + *zoom: 1; +} + +audio:not ([controls] ){ + display: none; +} + +sub, sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +img { + border: 0; + -ms-interpolation-mode: bicubic; +} + +button, input, select, textarea { + font-size: 100%; + margin: 0; + vertical-align: baseline; + *vertical-align: middle; +} + +button, input { + line-height: normal; + *overflow: visible; +} + +button::-moz-focus-inner, input::-moz-focus-inner { + border: 0; + padding: 0; +} + +button, input[type="button"], input[type="reset"], input[type="submit"] + { + cursor: pointer; + -webkit-appearance: button; +} + +input[type="search"] { + -webkit-appearance: textfield; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} + +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +textarea { + overflow: auto; + vertical-align: top; +} + +body { + background-color: #ffffff; + margin: 0; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 13px; + font-weight: normal; + line-height: 18px; + color: #404040; +} + +.container { + width: 940px; + margin-left: auto; + margin-right: auto; + zoom: 1; +} + +.container:before, .container:after { + display: table; + content: ""; + zoom: 1; +} + +.container:after { + clear: both; +} + +.container-fluid { + position: relative; + min-width: 940px; + padding-left: 20px; + padding-right: 20px; + zoom: 1; +} + +.container-fluid:before, .container-fluid:after { + display: table; + content: ""; + zoom: 1; +} + +.container-fluid:after { + clear: both; +} + +.container-fluid>.sidebar { + position: absolute; + top: 0; + left: 20px; + width: 220px; +} + +.container-fluid>.content { + margin-left: 240px; +} + +a { + color: #0069d6; + text-decoration: none; + line-height: inherit; + font-weight: inherit; +} + +a:hover { + color: #00438a; + text-decoration: underline; +} + +.pull-right { + float: right; +} + +.pull-left { + float: left; +} + +.hide { + display: none; +} + +.show { + display: block; +} + +.row { + zoom: 1; + margin-left: -20px; +} + +.row:before, .row:after { + display: table; + content: ""; + zoom: 1; +} + +.row:after { + clear: both; +} + +.row>[class*="span"] { + display: inline; + float: left; + margin-left: 20px; +} + +.span1 { + width: 40px; +} + +.span2 { + width: 100px; +} + +.span3 { + width: 160px; +} + +.span4 { + width: 220px; +} + +.span5 { + width: 280px; +} + +.span6 { + width: 340px; +} + +.span7 { + width: 400px; +} + +.span8 { + width: 460px; +} + +.span9 { + width: 520px; +} + +.span10 { + width: 580px; +} + +.span11 { + width: 640px; +} + +.span12 { + width: 700px; +} + +.span13 { + width: 760px; +} + +.span14 { + width: 820px; +} + +.span15 { + width: 880px; +} + +.span16 { + width: 940px; +} + +.span17 { + width: 1000px; +} + +.span18 { + width: 1060px; +} + +.span19 { + width: 1120px; +} + +.span20 { + width: 1180px; +} + +.span21 { + width: 1240px; +} + +.span22 { + width: 1300px; +} + +.span23 { + width: 1360px; +} + +.span24 { + width: 1420px; +} + +.row>.offset1 { + margin-left: 80px; +} + +.row>.offset2 { + margin-left: 140px; +} + +.row>.offset3 { + margin-left: 200px; +} + +.row>.offset4 { + margin-left: 260px; +} + +.row>.offset5 { + margin-left: 320px; +} + +.row>.offset6 { + margin-left: 380px; +} + +.row>.offset7 { + margin-left: 440px; +} + +.row>.offset8 { + margin-left: 500px; +} + +.row>.offset9 { + margin-left: 560px; +} + +.row>.offset10 { + margin-left: 620px; +} + +.row>.offset11 { + margin-left: 680px; +} + +.row>.offset12 { + margin-left: 740px; +} + +.span-one-third { + width: 300px; +} + +.span-two-thirds { + width: 620px; +} + +.offset-one-third { + margin-left: 340px; +} + +.offset-two-thirds { + margin-left: 660px; +} + +p { + font-size: 13px; + font-weight: normal; + line-height: 18px; + margin-bottom: 9px; +} + +p small { + font-size: 11px; + color: #bfbfbf; +} + +h1, h2, h3, h4, h5, h6 { + font-weight: bold; + color: #404040; +} + +h1 small, h2 small, h3 small, h4 small, h5 small, h6 small { + color: #bfbfbf; +} + +h1 { + margin-bottom: 18px; + font-size: 30px; + line-height: 36px; +} + +h1 small { + font-size: 18px; +} + +h2 { + font-size: 24px; + line-height: 36px; +} + +h2 small { + font-size: 14px; +} + +h3, h4, h5, h6 { + line-height: 36px; +} + +h3 { + font-size: 18px; +} + +h3 small { + font-size: 14px; +} + +h4 { + font-size: 16px; +} + +h4 small { + font-size: 12px; +} + +h5 { + font-size: 14px; +} + +h6 { + font-size: 13px; + color: #bfbfbf; + text-transform: uppercase; +} + +ul, ol { + margin: 0 0 18px 25px; +} + +ul ul, ul ol, ol ol, ol ul { + margin-bottom: 0; +} + +ul { + list-style: disc; +} + +ol { + list-style: decimal; +} + +li { + line-height: 18px; + color: #808080; +} + +ul.unstyled { + list-style: none; + margin-left: 0; +} + +dl { + margin-bottom: 18px; +} + +dl dt, dl dd { + line-height: 18px; +} + +dl dt { + font-weight: bold; +} + +dl dd { + margin-left: 9px; +} + +hr { + margin: 20px 0 19px; + border: 0; + border-bottom: 1px solid #eee; +} + +strong { + font-style: inherit; + font-weight: bold; +} + +em { + font-style: italic; + font-weight: inherit; + line-height: inherit; +} + +.muted { + color: #bfbfbf; +} + +blockquote { + margin-bottom: 18px; + border-left: 5px solid #eee; + padding-left: 15px; +} + +blockquote p { + font-size: 14px; + font-weight: 300; + line-height: 18px; + margin-bottom: 0; +} + +blockquote small { + display: block; + font-size: 12px; + font-weight: 300; + line-height: 18px; + color: #bfbfbf; +} + +blockquote small:before { + content: '\2014 \00A0'; +} + +address { + display: block; + line-height: 18px; + margin-bottom: 18px; +} + +code, pre { + padding: 0 3px 2px; + font-family: Monaco, Andale Mono, Courier New, monospace; + font-size: 12px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +code { + background-color: #fee9cc; + color: rgba(0, 0, 0, 0.75); + padding: 1px 3px; +} + +pre { + background-color: #f5f5f5; + display: block; + padding: 8.5px; + margin: 0 0 18px; + line-height: 18px; + font-size: 12px; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.15); + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + white-space: pre; + white-space: pre-wrap; + word-wrap: break-word; +} + +form { + margin-bottom: 18px; +} + +fieldset { + margin-bottom: 18px; + padding-top: 18px; +} + +fieldset legend { + display: block; + padding-left: 150px; + font-size: 19.5px; + line-height: 1; + color: #404040; + *padding: 0 0 5px 145px; + *line-height: 1.5; +} + +form .clearfix { + margin-bottom: 18px; + zoom: 1; +} + +form .clearfix:before, form .clearfix:after { + display: table; + content: ""; + zoom: 1; +} + +form .clearfix:after { + clear: both; +} + +label, input, select, textarea { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 13px; + font-weight: normal; + line-height: normal; +} + +label { + padding-top: 6px; + font-size: 13px; + line-height: 18px; + float: left; + width: 130px; + text-align: right; + color: #404040; +} + +form .input { + margin-left: 150px; +} + +input[type=checkbox], input[type=radio] { + cursor: pointer; +} + +input, textarea, select, .uneditable-input { + display: inline-block; + width: 210px; + height: 18px; + padding: 4px; + font-size: 13px; + line-height: 18px; + color: #808080; + border: 1px solid #ccc; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +select { + padding: initial; +} + +input[type=checkbox], input[type=radio] { + width: auto; + height: auto; + padding: 0; + margin: 3px 0; + *margin-top: 0; + line-height: normal; + border: none; +} + +input[type=file] { + background-color: #ffffff; + padding: initial; + border: initial; + line-height: initial; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} + +input[type=button], input[type=reset], input[type=submit] { + width: auto; + height: auto; +} + +select, input[type=file] { + height: 27px; + *height: auto; + line-height: 27px; + *margin-top: 4px; +} + +select[multiple] { + height: inherit; + background-color: #ffffff; +} + +textarea { + height: auto; +} + +.uneditable-input { + background-color: #ffffff; + display: block; + border-color: #eee; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + cursor: not-allowed; +} + +:-moz-placeholder { + color: #bfbfbf; +} + +::-webkit-input-placeholder { + color: #bfbfbf; +} + +input, textarea { + -webkit-transition: border linear 0.2s, box-shadow linear 0.2s; + -moz-transition: border linear 0.2s, box-shadow linear 0.2s; + -ms-transition: border linear 0.2s, box-shadow linear 0.2s; + -o-transition: border linear 0.2s, box-shadow linear 0.2s; + transition: border linear 0.2s, box-shadow linear 0.2s; + -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1); +} + +input:focus, textarea:focus { + outline: 0; + border-color: rgba(82, 168, 236, 0.8); + -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1), 0 0 8px + rgba(82, 168, 236, 0.6); + -moz-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1), 0 0 8px + rgba(82, 168, 236, 0.6); + box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1), 0 0 8px + rgba(82, 168, 236, 0.6); +} + +input[type=file]:focus, input[type=checkbox]:focus, select:focus { + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + outline: 1px dotted #666; +} + +form .clearfix.error>label, form .clearfix.error .help-block, form .clearfix.error .help-inline + { + color: #b94a48; +} + +form .clearfix.error input, form .clearfix.error textarea { + color: #b94a48; + border-color: #ee5f5b; +} + +form .clearfix.error input:focus, form .clearfix.error textarea:focus { + border-color: #e9322d; + -webkit-box-shadow: 0 0 6px #f8b9b7; + -moz-box-shadow: 0 0 6px #f8b9b7; + box-shadow: 0 0 6px #f8b9b7; +} + +form .clearfix.error .input-prepend .add-on, form .clearfix.error .input-append .add-on + { + color: #b94a48; + background-color: #fce6e6; + border-color: #b94a48; +} + +form .clearfix.warning>label, form .clearfix.warning .help-block, form .clearfix.warning .help-inline + { + color: #c09853; +} + +form .clearfix.warning input, form .clearfix.warning textarea { + color: #c09853; + border-color: #ccae64; +} + +form .clearfix.warning input:focus, form .clearfix.warning textarea:focus + { + border-color: #be9a3f; + -webkit-box-shadow: 0 0 6px #e5d6b1; + -moz-box-shadow: 0 0 6px #e5d6b1; + box-shadow: 0 0 6px #e5d6b1; +} + +form .clearfix.warning .input-prepend .add-on, form .clearfix.warning .input-append .add-on + { + color: #c09853; + background-color: #d2b877; + border-color: #c09853; +} + +form .clearfix.success>label, form .clearfix.success .help-block, form .clearfix.success .help-inline + { + color: #468847; +} + +form .clearfix.success input, form .clearfix.success textarea { + color: #468847; + border-color: #57a957; +} + +form .clearfix.success input:focus, form .clearfix.success textarea:focus + { + border-color: #458845; + -webkit-box-shadow: 0 0 6px #9acc9a; + -moz-box-shadow: 0 0 6px #9acc9a; + box-shadow: 0 0 6px #9acc9a; +} + +form .clearfix.success .input-prepend .add-on, form .clearfix.success .input-append .add-on + { + color: #468847; + background-color: #bcddbc; + border-color: #468847; +} + +.input-mini, input.mini, textarea.mini, select.mini { + width: 60px; +} + +.input-small, input.small, textarea.small, select.small { + width: 90px; +} + +.input-medium, input.medium, textarea.medium, select.medium { + width: 150px; +} + +.input-large, input.large, textarea.large, select.large { + width: 210px; +} + +.input-xlarge, input.xlarge, textarea.xlarge, select.xlarge { + width: 270px; +} + +.input-xxlarge, input.xxlarge, textarea.xxlarge, select.xxlarge { + width: 530px; +} + +textarea.xxlarge { + overflow-y: auto; +} + +input.span1, textarea.span1 { + display: inline-block; + float: none; + width: 30px; + margin-left: 0; +} + +input.span2, textarea.span2 { + display: inline-block; + float: none; + width: 90px; + margin-left: 0; +} + +input.span3, textarea.span3 { + display: inline-block; + float: none; + width: 150px; + margin-left: 0; +} + +input.span4, textarea.span4 { + display: inline-block; + float: none; + width: 210px; + margin-left: 0; +} + +input.span5, textarea.span5 { + display: inline-block; + float: none; + width: 270px; + margin-left: 0; +} + +input.span6, textarea.span6 { + display: inline-block; + float: none; + width: 330px; + margin-left: 0; +} + +input.span7, textarea.span7 { + display: inline-block; + float: none; + width: 390px; + margin-left: 0; +} + +input.span8, textarea.span8 { + display: inline-block; + float: none; + width: 450px; + margin-left: 0; +} + +input.span9, textarea.span9 { + display: inline-block; + float: none; + width: 510px; + margin-left: 0; +} + +input.span10, textarea.span10 { + display: inline-block; + float: none; + width: 570px; + margin-left: 0; +} + +input.span11, textarea.span11 { + display: inline-block; + float: none; + width: 630px; + margin-left: 0; +} + +input.span12, textarea.span12 { + display: inline-block; + float: none; + width: 690px; + margin-left: 0; +} + +input.span13, textarea.span13 { + display: inline-block; + float: none; + width: 750px; + margin-left: 0; +} + +input.span14, textarea.span14 { + display: inline-block; + float: none; + width: 810px; + margin-left: 0; +} + +input.span15, textarea.span15 { + display: inline-block; + float: none; + width: 870px; + margin-left: 0; +} + +input.span16, textarea.span16 { + display: inline-block; + float: none; + width: 930px; + margin-left: 0; +} + +input[disabled], select[disabled], textarea[disabled], input[readonly], + select[readonly], textarea[readonly] { + background-color: #f5f5f5; + border-color: #ddd; + cursor: not-allowed; +} + +.actions { + background: #f5f5f5; + margin-top: 18px; + margin-bottom: 18px; + padding: 17px 20px 18px 150px; + border-top: 1px solid #ddd; + -webkit-border-radius: 0 0 3px 3px; + -moz-border-radius: 0 0 3px 3px; + border-radius: 0 0 3px 3px; +} + +.actions .secondary-action { + float: right; +} + +.actions .secondary-action a { + line-height: 30px; +} + +.actions .secondary-action a:hover { + text-decoration: underline; +} + +.help-inline, .help-block { + font-size: 13px; + line-height: 18px; + color: #bfbfbf; +} + +.help-inline { + padding-left: 5px; + *position: relative; + *top: -5px; +} + +.help-block { + display: block; + max-width: 600px; +} + +.inline-inputs { + color: #808080; +} + +.inline-inputs span { + padding: 0 2px 0 1px; +} + +.input-prepend input, .input-append input { + -webkit-border-radius: 0 3px 3px 0; + -moz-border-radius: 0 3px 3px 0; + border-radius: 0 3px 3px 0; +} + +.input-prepend .add-on, .input-append .add-on { + position: relative; + background: #f5f5f5; + border: 1px solid #ccc; + z-index: 2; + float: left; + display: block; + width: auto; + min-width: 16px; + height: 18px; + padding: 4px 4px 4px 5px; + margin-right: -1px; + font-weight: normal; + line-height: 18px; + color: #bfbfbf; + text-align: center; + text-shadow: 0 1px 0 #ffffff; + -webkit-border-radius: 3px 0 0 3px; + -moz-border-radius: 3px 0 0 3px; + border-radius: 3px 0 0 3px; +} + +.input-prepend .active, .input-append .active { + background: #a9dba9; + border-color: #46a546; +} + +.input-prepend .add-on { + *margin-top: 1px; +} + +.input-append input { + float: left; + -webkit-border-radius: 3px 0 0 3px; + -moz-border-radius: 3px 0 0 3px; + border-radius: 3px 0 0 3px; +} + +.input-append .add-on { + -webkit-border-radius: 0 3px 3px 0; + -moz-border-radius: 0 3px 3px 0; + border-radius: 0 3px 3px 0; + margin-right: 0; + margin-left: -1px; +} + +.inputs-list { + margin: 0 0 5px; + width: 100%; +} + +.inputs-list li { + display: block; + padding: 0; + width: 100%; +} + +.inputs-list label { + display: block; + float: none; + width: auto; + padding: 0; + margin-left: 20px; + line-height: 18px; + text-align: left; + white-space: normal; +} + +.inputs-list label strong { + color: #808080; +} + +.inputs-list label small { + font-size: 11px; + font-weight: normal; +} + +.inputs-list .inputs-list { + margin-left: 25px; + margin-bottom: 10px; + padding-top: 0; +} + +.inputs-list:first-child { + padding-top: 6px; +} + +.inputs-list li+li { + padding-top: 2px; +} + +.inputs-list input[type=radio], .inputs-list input[type=checkbox] { + margin-bottom: 0; + margin-left: -20px; + float: left; +} + +.form-stacked { + padding-left: 20px; +} + +.form-stacked fieldset { + padding-top: 9px; +} + +.form-stacked legend { + padding-left: 0; +} + +.form-stacked label { + display: block; + float: none; + width: auto; + font-weight: bold; + text-align: left; + line-height: 20px; + padding-top: 0; +} + +.form-stacked .clearfix { + margin-bottom: 9px; +} + +.form-stacked .clearfix div.input { + margin-left: 0; +} + +.form-stacked .inputs-list { + margin-bottom: 0; +} + +.form-stacked .inputs-list li { + padding-top: 0; +} + +.form-stacked .inputs-list li label { + font-weight: normal; + padding-top: 0; +} + +.form-stacked div.clearfix.error { + padding-top: 10px; + padding-bottom: 10px; + padding-left: 10px; + margin-top: 0; + margin-left: -10px; +} + +.form-stacked .actions { + margin-left: -20px; + padding-left: 20px; +} + +.condensed-table th, .condensed-table td { + padding: 5px 5px 4px; +} + +.bordered-table { + border: 1px solid #ddd; + border-collapse: separate; + *border-collapse: collapse; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.bordered-table th+th, .bordered-table td+td, .bordered-table th+td { + border-left: 1px solid #ddd; +} + +.bordered-table thead tr:first-child th:first-child, .bordered-table tbody tr:first-child td:first-child + { + -webkit-border-radius: 4px 0 0 0; + -moz-border-radius: 4px 0 0 0; + border-radius: 4px 0 0 0; +} + +.bordered-table thead tr:first-child th:last-child, .bordered-table tbody tr:first-child td:last-child + { + -webkit-border-radius: 0 4px 0 0; + -moz-border-radius: 0 4px 0 0; + border-radius: 0 4px 0 0; +} + +.bordered-table tbody tr:last-child td:first-child { + -webkit-border-radius: 0 0 0 4px; + -moz-border-radius: 0 0 0 4px; + border-radius: 0 0 0 4px; +} + +.bordered-table tbody tr:last-child td:last-child { + -webkit-border-radius: 0 0 4px 0; + -moz-border-radius: 0 0 4px 0; + border-radius: 0 0 4px 0; +} + +table .span1 { + width: 20px; +} + +table .span2 { + width: 60px; +} + +table .span3 { + width: 100px; +} + +table .span4 { + width: 140px; +} + +table .span5 { + width: 180px; +} + +table .span6 { + width: 220px; +} + +table .span7 { + width: 260px; +} + +table .span8 { + width: 300px; +} + +table .span9 { + width: 340px; +} + +table .span10 { + width: 380px; +} + +table .span11 { + width: 420px; +} + +table .span12 { + width: 460px; +} + +table .span13 { + width: 500px; +} + +table .span14 { + width: 540px; +} + +table .span15 { + width: 580px; +} + +table .span16 { + width: 620px; +} + +.zebra-striped tbody tr:nth-child(odd) td, .zebra-striped tbody tr:nth-child(odd) th + { + background-color: #f9f9f9; +} + +.zebra-striped tbody tr:hover td, .zebra-striped tbody tr:hover th { + background-color: #f5f5f5; +} + +table .header { + cursor: pointer; +} + +table .header:after { + content: ""; + float: right; + margin-top: 7px; + border-width: 0 4px 4px; + border-style: solid; + border-color: #000 transparent; + visibility: hidden; +} + +table .headerSortUp, table .headerSortDown { + background-color: rgba(141, 192, 219, 0.25); + text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); +} + +table .header:hover:after { + visibility: visible; +} + +table .headerSortDown:after, table .headerSortDown:hover:after { + visibility: visible; + filter: alpha(opacity = 60); + -khtml-opacity: 0.6; + -moz-opacity: 0.6; + opacity: 0.6; +} + +table .headerSortUp:after { + border-bottom: none; + border-left: 4px solid transparent; + border-right: 4px solid transparent; + border-top: 4px solid #000; + visibility: visible; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + filter: alpha(opacity = 60); + -khtml-opacity: 0.6; + -moz-opacity: 0.6; + opacity: 0.6; +} + +table .blue { + color: #049cdb; + border-bottom-color: #049cdb; +} + +table .headerSortUp.blue, table .headerSortDown.blue { + background-color: #ade6fe; +} + +table .green { + color: #46a546; + border-bottom-color: #46a546; +} + +table .headerSortUp.green, table .headerSortDown.green { + background-color: #cdeacd; +} + +table .red { + color: #9d261d; + border-bottom-color: #9d261d; +} + +table .headerSortUp.red, table .headerSortDown.red { + background-color: #f4c8c5; +} + +table .yellow { + color: #ffc40d; + border-bottom-color: #ffc40d; +} + +table .headerSortUp.yellow, table .headerSortDown.yellow { + background-color: #fff6d9; +} + +table .orange { + color: #f89406; + border-bottom-color: #f89406; +} + +table .headerSortUp.orange, table .headerSortDown.orange { + background-color: #fee9cc; +} + +table .purple { + color: #7a43b6; + border-bottom-color: #7a43b6; +} + +table .headerSortUp.purple, table .headerSortDown.purple { + background-color: #e2d5f0; +} + +.topbar { + height: 40px; + position: fixed; + top: 0; + left: 0; + right: 0; + z-index: 10000; + overflow: visible; +} + +.topbar a { + color: #bfbfbf; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} + +.topbar h3 a:hover, .topbar .brand:hover, .topbar ul .active>a { + background-color: #333; + background-color: rgba(255, 255, 255, 0.05); + color: #ffffff; + text-decoration: none; +} + +.topbar h3 { + position: relative; +} + +.topbar h3 a, .topbar .brand { + float: left; + display: block; + padding: 8px 20px 12px; + margin-left: -20px; + color: #ffffff; + font-size: 20px; + font-weight: 200; + line-height: 1; +} + +.topbar p { + margin: 0; + line-height: 40px; +} + +.topbar p a:hover { + background-color: transparent; + color: #ffffff; +} + +.topbar form { + float: left; + margin: 5px 0 0 0; + position: relative; + filter: alpha(opacity = 100); + -khtml-opacity: 1; + -moz-opacity: 1; + opacity: 1; +} + +.topbar form.pull-right { + float: right; +} + +.topbar input { + background-color: #444; + background-color: rgba(255, 255, 255, 0.3); + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: normal; + font-weight: 13px; + line-height: 1; + padding: 4px 9px; + color: #ffffff; + color: rgba(255, 255, 255, 0.75); + border: 1px solid #111; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0px + rgba(255, 255, 255, 0.25); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0px + rgba(255, 255, 255, 0.25); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0px + rgba(255, 255, 255, 0.25); + -webkit-transition: none; + -moz-transition: none; + -ms-transition: none; + -o-transition: none; + transition: none; +} + +.topbar input:-moz-placeholder { + color: #e6e6e6; +} + +.topbar input::-webkit-input-placeholder { + color: #e6e6e6; +} + +.topbar input:hover { + background-color: #bfbfbf; + background-color: rgba(255, 255, 255, 0.5); + color: #ffffff; +} + +.topbar input:focus, .topbar input.focused { + outline: 0; + background-color: #ffffff; + color: #404040; + text-shadow: 0 1px 0 #ffffff; + border: 0; + padding: 5px 10px; + -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); +} + +.topbar-inner, .topbar .fill { + background-color: #222; + background-color: #222222; + background-repeat: repeat-x; + background-image: -khtml-gradient(linear, left top, left bottom, from(#333333), + to(#222222)); + background-image: -moz-linear-gradient(top, #333333, #222222); + background-image: -ms-linear-gradient(top, #333333, #222222); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #333333), + color-stop(100%, #222222)); + background-image: -webkit-linear-gradient(top, #333333, #222222); + background-image: -o-linear-gradient(top, #333333, #222222); + background-image: linear-gradient(top, #333333, #222222); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', + endColorstr='#222222', GradientType=0); + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 + rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 + rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 + rgba(0, 0, 0, 0.1); +} + +.topbar div>ul, .nav { + display: block; + float: left; + margin: 0 10px 0 0; + position: relative; + left: 0; +} + +.topbar div>ul>li, .nav>li { + display: block; + float: left; +} + +.topbar div>ul a, .nav a { + display: block; + float: none; + padding: 10px 10px 11px; + line-height: 19px; + text-decoration: none; +} + +.topbar div>ul a:hover, .nav a:hover { + color: #ffffff; + text-decoration: none; +} + +.topbar div>ul .active>a, .nav .active>a { + background-color: #222; + background-color: rgba(0, 0, 0, 0.5); +} + +.topbar div>ul.secondary-nav, .nav.secondary-nav { + float: right; + margin-left: 10px; + margin-right: 0; +} + +.topbar div>ul.secondary-nav .menu-dropdown, .nav.secondary-nav .menu-dropdown, + .topbar div>ul.secondary-nav .dropdown-menu, .nav.secondary-nav .dropdown-menu + { + right: 0; + border: 0; +} + +.topbar div>ul a.menu:hover, .nav a.menu:hover, .topbar div>ul li.open .menu, + .nav li.open .menu, .topbar div>ul .dropdown-toggle:hover, .nav .dropdown-toggle:hover, + .topbar div>ul .dropdown.open .dropdown-toggle, .nav .dropdown.open .dropdown-toggle + { + background: #444; + background: rgba(255, 255, 255, 0.05); +} + +.topbar div>ul .menu-dropdown, .nav .menu-dropdown, .topbar div>ul .dropdown-menu, + .nav .dropdown-menu { + background-color: #333; +} + +.topbar div>ul .menu-dropdown a.menu, .nav .menu-dropdown a.menu, + .topbar div>ul .dropdown-menu a.menu, .nav .dropdown-menu a.menu, + .topbar div>ul .menu-dropdown .dropdown-toggle, .nav .menu-dropdown .dropdown-toggle, + .topbar div>ul .dropdown-menu .dropdown-toggle, .nav .dropdown-menu .dropdown-toggle + { + color: #ffffff; +} + +.topbar div>ul .menu-dropdown a.menu.open, .nav .menu-dropdown a.menu.open, + .topbar div>ul .dropdown-menu a.menu.open, .nav .dropdown-menu a.menu.open, + .topbar div>ul .menu-dropdown .dropdown-toggle.open, .nav .menu-dropdown .dropdown-toggle.open, + .topbar div>ul .dropdown-menu .dropdown-toggle.open, .nav .dropdown-menu .dropdown-toggle.open + { + background: #444; + background: rgba(255, 255, 255, 0.05); +} + +.topbar div>ul .menu-dropdown li a, .nav .menu-dropdown li a, .topbar div>ul .dropdown-menu li a, + .nav .dropdown-menu li a { + color: #999; + text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5); +} + +.topbar div>ul .menu-dropdown li a:hover, .nav .menu-dropdown li a:hover, + .topbar div>ul .dropdown-menu li a:hover, .nav .dropdown-menu li a:hover + { + background-color: #191919; + background-repeat: repeat-x; + background-image: -khtml-gradient(linear, left top, left bottom, from(#292929), + to(#191919)); + background-image: -moz-linear-gradient(top, #292929, #191919); + background-image: -ms-linear-gradient(top, #292929, #191919); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #292929), + color-stop(100%, #191919)); + background-image: -webkit-linear-gradient(top, #292929, #191919); + background-image: -o-linear-gradient(top, #292929, #191919); + background-image: linear-gradient(top, #292929, #191919); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#292929', + endColorstr='#191919', GradientType=0); + color: #ffffff; +} + +.topbar div>ul .menu-dropdown .active a, .nav .menu-dropdown .active a, + .topbar div>ul .dropdown-menu .active a, .nav .dropdown-menu .active a + { + color: #ffffff; +} + +.topbar div>ul .menu-dropdown .divider, .nav .menu-dropdown .divider, + .topbar div>ul .dropdown-menu .divider, .nav .dropdown-menu .divider + { + background-color: #222; + border-color: #444; +} + +.topbar ul .menu-dropdown li a, .topbar ul .dropdown-menu li a { + padding: 4px 15px; +} + +li.menu, .dropdown { + position: relative; +} + +a.menu:after, .dropdown-toggle:after { + width: 0; + height: 0; + display: inline-block; + content: "↓"; + text-indent: -99999px; + vertical-align: top; + margin-top: 8px; + margin-left: 4px; + border-left: 4px solid transparent; + border-right: 4px solid transparent; + border-top: 4px solid #ffffff; + filter: alpha(opacity = 50); + -khtml-opacity: 0.5; + -moz-opacity: 0.5; + opacity: 0.5; +} + +.menu-dropdown, .dropdown-menu { + background-color: #ffffff; + float: left; + display: none; + position: absolute; + top: 40px; + z-index: 900; + min-width: 160px; + max-width: 220px; + _width: 160px; + margin-left: 0; + margin-right: 0; + padding: 6px 0; + zoom: 1; + border-color: #999; + border-color: rgba(0, 0, 0, 0.2); + border-style: solid; + border-width: 0 1px 1px; + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; + -webkit-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + -webkit-background-clip: padding-box; + -moz-background-clip: padding-box; + background-clip: padding-box; +} + +.menu-dropdown li, .dropdown-menu li { + float: none; + display: block; + background-color: none; +} + +.menu-dropdown .divider, .dropdown-menu .divider { + height: 1px; + margin: 5px 0; + overflow: hidden; + background-color: #eee; + border-bottom: 1px solid #ffffff; +} + +.topbar .dropdown-menu a, .dropdown-menu a { + display: block; + padding: 4px 15px; + clear: both; + font-weight: normal; + line-height: 18px; + color: #808080; + text-shadow: 0 1px 0 #ffffff; +} + +.topbar .dropdown-menu a:hover, .dropdown-menu a:hover, .topbar .dropdown-menu a.hover, + .dropdown-menu a.hover { + background-color: #dddddd; + background-repeat: repeat-x; + background-image: -khtml-gradient(linear, left top, left bottom, from(#eeeeee), + to(#dddddd)); + background-image: -moz-linear-gradient(top, #eeeeee, #dddddd); + background-image: -ms-linear-gradient(top, #eeeeee, #dddddd); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #eeeeee), + color-stop(100%, #dddddd)); + background-image: -webkit-linear-gradient(top, #eeeeee, #dddddd); + background-image: -o-linear-gradient(top, #eeeeee, #dddddd); + background-image: linear-gradient(top, #eeeeee, #dddddd); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', + endColorstr='#dddddd', GradientType=0); + color: #404040; + text-decoration: none; + -webkit-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.025), inset 0 -1px + rgba(0, 0, 0, 0.025); + -moz-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.025), inset 0 -1px + rgba(0, 0, 0, 0.025); + box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.025), inset 0 -1px + rgba(0, 0, 0, 0.025); +} + +.open .menu, .dropdown.open .menu, .open .dropdown-toggle, .dropdown.open .dropdown-toggle + { + color: #ffffff; + background: #ccc; + background: rgba(0, 0, 0, 0.3); +} + +.open .menu-dropdown, .dropdown.open .menu-dropdown, .open .dropdown-menu, + .dropdown.open .dropdown-menu { + display: block; +} + +.tabs, .pills { + margin: 0 0 18px; + padding: 0; + list-style: none; + zoom: 1; +} + +.tabs:before, .pills:before, .tabs:after, .pills:after { + display: table; + content: ""; + zoom: 1; +} + +.tabs:after, .pills:after { + clear: both; +} + +.tabs>li, .pills>li { + float: left; +} + +.tabs>li>a, .pills>li>a { + display: block; +} + +.tabs { + border-color: #ddd; + border-style: solid; + border-width: 0 0 1px; +} + +.tabs>li { + position: relative; + margin-bottom: -1px; +} + +.tabs>li>a { + padding: 0 15px; + margin-right: 2px; + line-height: 34px; + border: 1px solid transparent; + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} + +.tabs>li>a:hover { + text-decoration: none; + background-color: #eee; + border-color: #eee #eee #ddd; +} + +.tabs .active>a, .tabs .active>a:hover { + color: #808080; + background-color: #ffffff; + border: 1px solid #ddd; + border-bottom-color: transparent; + cursor: default; +} + +.tabs .menu-dropdown, .tabs .dropdown-menu { + top: 35px; + border-width: 1px; + -webkit-border-radius: 0 6px 6px 6px; + -moz-border-radius: 0 6px 6px 6px; + border-radius: 0 6px 6px 6px; +} + +.tabs a.menu:after, .tabs .dropdown-toggle:after { + border-top-color: #999; + margin-top: 15px; + margin-left: 5px; +} + +.tabs li.open.menu .menu, .tabs .open.dropdown .dropdown-toggle { + border-color: #999; +} + +.tabs li.open a.menu:after, .tabs .dropdown.open .dropdown-toggle:after + { + border-top-color: #555; +} + +.pills a { + margin: 5px 3px 5px 0; + padding: 0 15px; + line-height: 30px; + text-shadow: 0 1px 1px #ffffff; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +.pills a:hover { + color: #ffffff; + text-decoration: none; + text-shadow: 0 1px 1px rgba(0, 0, 0, 0.25); + background-color: #00438a; +} + +.pills .active a { + color: #ffffff; + text-shadow: 0 1px 1px rgba(0, 0, 0, 0.25); + background-color: #0069d6; +} + +.pills-vertical>li { + float: none; +} + +.tab-content>.tab-pane, .pill-content>.pill-pane, .tab-content>div, + .pill-content>div { + display: none; +} + +.tab-content>.active, .pill-content>.active { + display: block; +} + +.breadcrumb { + padding: 7px 14px; + margin: 0 0 18px; + background-color: #f5f5f5; + background-repeat: repeat-x; + background-image: -khtml-gradient(linear, left top, left bottom, from(#ffffff), + to(#f5f5f5)); + background-image: -moz-linear-gradient(top, #ffffff, #f5f5f5); + background-image: -ms-linear-gradient(top, #ffffff, #f5f5f5); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ffffff), + color-stop(100%, #f5f5f5)); + background-image: -webkit-linear-gradient(top, #ffffff, #f5f5f5); + background-image: -o-linear-gradient(top, #ffffff, #f5f5f5); + background-image: linear-gradient(top, #ffffff, #f5f5f5); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', + endColorstr='#f5f5f5', GradientType=0); + border: 1px solid #ddd; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + -webkit-box-shadow: inset 0 1px 0 #ffffff; + -moz-box-shadow: inset 0 1px 0 #ffffff; + box-shadow: inset 0 1px 0 #ffffff; +} + +.breadcrumb li { + display: inline; + text-shadow: 0 1px 0 #ffffff; +} + +.breadcrumb .divider { + padding: 0 5px; + color: #bfbfbf; +} + +.breadcrumb .active a { + color: #404040; +} + +.hero-unit { + background-color: #f5f5f5; + margin-bottom: 30px; + padding: 60px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.hero-unit h1 { + margin-bottom: 0; + font-size: 60px; + line-height: 1; + letter-spacing: -1px; +} + +.hero-unit p { + font-size: 18px; + font-weight: 200; + line-height: 27px; +} + +footer { + margin-top: 17px; + padding-top: 17px; + border-top: 1px solid #eee; +} + +.page-header { + margin-bottom: 17px; + border-bottom: 1px solid #ddd; + -webkit-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + -moz-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + box-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); +} + +.page-header h1 { + margin-bottom: 8px; +} + +.btn.danger, .alert-message.danger, .btn.danger:hover, .alert-message.danger:hover, + .btn.error, .alert-message.error, .btn.error:hover, .alert-message.error:hover, + .btn.success, .alert-message.success, .btn.success:hover, + .alert-message.success:hover, .btn.info, .alert-message.info, .btn.info:hover, + .alert-message.info:hover { + color: #ffffff; +} + +.btn .close, .alert-message .close { + font-family: Arial, sans-serif; + line-height: 18px; +} + +.btn.danger, .alert-message.danger, .btn.error, .alert-message.error { + background-color: #c43c35; + background-repeat: repeat-x; + background-image: -khtml-gradient(linear, left top, left bottom, from(#ee5f5b), + to(#c43c35)); + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ee5f5b), + color-stop(100%, #c43c35)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); + background-image: linear-gradient(top, #ee5f5b, #c43c35); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', + endColorstr='#c43c35', GradientType=0); + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + border-color: #c43c35 #c43c35 #882a25; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); +} + +.btn.success, .alert-message.success { + background-color: #57a957; + background-repeat: repeat-x; + background-image: -khtml-gradient(linear, left top, left bottom, from(#62c462), + to(#57a957)); + background-image: -moz-linear-gradient(top, #62c462, #57a957); + background-image: -ms-linear-gradient(top, #62c462, #57a957); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #62c462), + color-stop(100%, #57a957)); + background-image: -webkit-linear-gradient(top, #62c462, #57a957); + background-image: -o-linear-gradient(top, #62c462, #57a957); + background-image: linear-gradient(top, #62c462, #57a957); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', + endColorstr='#57a957', GradientType=0); + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + border-color: #57a957 #57a957 #3d773d; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); +} + +.btn.info, .alert-message.info { + background-color: #339bb9; + background-repeat: repeat-x; + background-image: -khtml-gradient(linear, left top, left bottom, from(#5bc0de), + to(#339bb9)); + background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); + background-image: -ms-linear-gradient(top, #5bc0de, #339bb9); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #5bc0de), + color-stop(100%, #339bb9)); + background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); + background-image: -o-linear-gradient(top, #5bc0de, #339bb9); + background-image: linear-gradient(top, #5bc0de, #339bb9); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', + endColorstr='#339bb9', GradientType=0); + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + border-color: #339bb9 #339bb9 #22697d; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); +} + +.btn { + cursor: pointer; + display: inline-block; + background-color: #e6e6e6; + background-repeat: no-repeat; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), + color-stop(25%, #ffffff), to(#e6e6e6)); + background-image: -webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); + background-image: -moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6); + background-image: -ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); + background-image: -o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); + background-image: linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', + endColorstr='#e6e6e6', GradientType=0); + padding: 5px 14px 6px; + text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); + color: #333; + font-size: 13px; + line-height: normal; + border: 1px solid #ccc; + border-bottom-color: #bbb; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px + rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px + rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px + rgba(0, 0, 0, 0.05); + -webkit-transition: 0.1s linear all; + -moz-transition: 0.1s linear all; + -ms-transition: 0.1s linear all; + -o-transition: 0.1s linear all; + transition: 0.1s linear all; +} + +.btn:hover { + background-position: 0 -15px; + color: #333; + text-decoration: none; +} + +.btn:focus { + outline: 1px dotted #666; +} + +.btn.primary { + color: #ffffff; + background-color: #0064cd; + background-repeat: repeat-x; + background-image: -khtml-gradient(linear, left top, left bottom, from(#049cdb), + to(#0064cd)); + background-image: -moz-linear-gradient(top, #049cdb, #0064cd); + background-image: -ms-linear-gradient(top, #049cdb, #0064cd); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #049cdb), + color-stop(100%, #0064cd)); + background-image: -webkit-linear-gradient(top, #049cdb, #0064cd); + background-image: -o-linear-gradient(top, #049cdb, #0064cd); + background-image: linear-gradient(top, #049cdb, #0064cd); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#049cdb', + endColorstr='#0064cd', GradientType=0); + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + border-color: #0064cd #0064cd #003f81; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); +} + +.btn.active, .btn :active { + -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.25), 0 1px 2px + rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.25), 0 1px 2px + rgba(0, 0, 0, 0.05); + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.25), 0 1px 2px + rgba(0, 0, 0, 0.05); +} + +.btn.disabled { + cursor: default; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled= false); + filter: alpha(opacity = 65); + -khtml-opacity: 0.65; + -moz-opacity: 0.65; + opacity: 0.65; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} + +.btn[disabled] { + cursor: default; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled= false); + filter: alpha(opacity = 65); + -khtml-opacity: 0.65; + -moz-opacity: 0.65; + opacity: 0.65; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} + +.btn.large { + font-size: 15px; + line-height: normal; + padding: 9px 14px 9px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.btn.small { + padding: 7px 9px 7px; + font-size: 11px; +} + +:root .alert-message, :root .btn { + border-radius: 0 \0; +} + +button.btn::-moz-focus-inner, input[type=submit].btn::-moz-focus-inner { + padding: 0; + border: 0; +} + +.close { + float: right; + color: #000000; + font-size: 20px; + font-weight: bold; + line-height: 13.5px; + text-shadow: 0 1px 0 #ffffff; + filter: alpha(opacity = 25); + -khtml-opacity: 0.25; + -moz-opacity: 0.25; + opacity: 0.25; +} + +.close:hover { + color: #000000; + text-decoration: none; + filter: alpha(opacity = 40); + -khtml-opacity: 0.4; + -moz-opacity: 0.4; + opacity: 0.4; +} + +.alert-message { + position: relative; + padding: 7px 15px; + margin-bottom: 18px; + color: #404040; + background-color: #eedc94; + background-repeat: repeat-x; + background-image: -khtml-gradient(linear, left top, left bottom, from(#fceec1), + to(#eedc94)); + background-image: -moz-linear-gradient(top, #fceec1, #eedc94); + background-image: -ms-linear-gradient(top, #fceec1, #eedc94); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #fceec1), + color-stop(100%, #eedc94)); + background-image: -webkit-linear-gradient(top, #fceec1, #eedc94); + background-image: -o-linear-gradient(top, #fceec1, #eedc94); + background-image: linear-gradient(top, #fceec1, #eedc94); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fceec1', + endColorstr='#eedc94', GradientType=0); + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + border-color: #eedc94 #eedc94 #e4c652; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + border-width: 1px; + border-style: solid; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25); +} + +.alert-message .close { + margin-top: 1px; + *margin-top: 0; +} + +.alert-message a { + font-weight: bold; + color: #404040; +} + +.alert-message.danger p a, .alert-message.error p a, .alert-message.success p a, + .alert-message.info p a { + color: #ffffff; +} + +.alert-message h5 { + line-height: 18px; +} + +.alert-message p { + margin-bottom: 0; +} + +.alert-message div { + margin-top: 5px; + margin-bottom: 2px; + line-height: 28px; +} + +.alert-message .btn { + -webkit-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.25); + -moz-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.25); + box-shadow: 0 1px 0 rgba(255, 255, 255, 0.25); +} + +.alert-message.block-message { + background-image: none; + background-color: #fdf5d9; + filter: progid:DXImageTransform.Microsoft.gradient(enabled= false); + padding: 14px; + border-color: #fceec1; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} + +.alert-message.block-message ul, .alert-message.block-message p { + margin-right: 30px; +} + +.alert-message.block-message ul { + margin-bottom: 0; +} + +.alert-message.block-message li { + color: #404040; +} + +.alert-message.block-message .alert-actions { + margin-top: 5px; +} + +.alert-message.block-message.error, .alert-message.block-message.success, + .alert-message.block-message.info { + color: #404040; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); +} + +.alert-message.block-message.error { + background-color: #fddfde; + border-color: #fbc7c6; +} + +.alert-message.block-message.success { + background-color: #d1eed1; + border-color: #bfe7bf; +} + +.alert-message.block-message.info { + background-color: #ddf4fb; + border-color: #c6edf9; +} + +.alert-message.block-message.danger p a, .alert-message.block-message.error p a, + .alert-message.block-message.success p a, .alert-message.block-message.info p a + { + color: #404040; +} + +.pagination { + height: 36px; + margin: 18px 0; +} + +.pagination ul { + float: left; + margin: 0; + border: 1px solid #ddd; + border: 1px solid rgba(0, 0, 0, 0.15); + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.pagination li { + display: inline; +} + +.pagination a { + float: left; + padding: 0 14px; + line-height: 34px; + border-right: 1px solid; + border-right-color: #ddd; + border-right-color: rgba(0, 0, 0, 0.15); + *border-right-color: #ddd; + text-decoration: none; +} + +.pagination a:hover, .pagination .active a { + background-color: #c7eefe; +} + +.pagination .disabled a, .pagination .disabled a:hover { + background-color: transparent; + color: #bfbfbf; +} + +.pagination .next a { + border: 0; +} + +.well { + background-color: #f5f5f5; + margin-bottom: 20px; + padding: 19px; + min-height: 20px; + border: 1px solid #eee; + border: 1px solid rgba(0, 0, 0, 0.05); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); +} + +.well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, 0.15); +} + +.modal-backdrop { + background-color: #000000; + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + z-index: 10000; +} + +.modal-backdrop.fade { + opacity: 0; +} + +.modal-backdrop, .modal-backdrop.fade.in { + filter: alpha(opacity = 80); + -khtml-opacity: 0.8; + -moz-opacity: 0.8; + opacity: 0.8; +} + +.modal { + position: fixed; + top: 50%; + left: 50%; + z-index: 11000; + width: 560px; + margin: -250px 0 0 -280px; + background-color: #ffffff; + border: 1px solid #999; + border: 1px solid rgba(0, 0, 0, 0.3); + *border: 1px solid #999; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -webkit-background-clip: padding-box; + -moz-background-clip: padding-box; + background-clip: padding-box; +} + +.modal .close { + margin-top: 7px; +} + +.modal.fade { + -webkit-transition: opacity .3s linear, top .3s ease-out; + -moz-transition: opacity .3s linear, top .3s ease-out; + -ms-transition: opacity .3s linear, top .3s ease-out; + -o-transition: opacity .3s linear, top .3s ease-out; + transition: opacity .3s linear, top .3s ease-out; + top: -25%; +} + +.modal.fade.in { + top: 50%; +} + +.modal-header { + border-bottom: 1px solid #eee; + padding: 5px 15px; +} + +.modal-body { + padding: 15px; +} + +.modal-body form { + margin-bottom: 0; +} + +.modal-footer { + background-color: #f5f5f5; + padding: 14px 15px 15px; + border-top: 1px solid #ddd; + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; + -webkit-box-shadow: inset 0 1px 0 #ffffff; + -moz-box-shadow: inset 0 1px 0 #ffffff; + box-shadow: inset 0 1px 0 #ffffff; + zoom: 1; + margin-bottom: 0; +} + +.modal-footer:before, .modal-footer:after { + display: table; + content: ""; + zoom: 1; +} + +.modal-footer:after { + clear: both; +} + +.modal-footer .btn { + float: right; + margin-left: 5px; +} + +.modal .popover, .modal .twipsy { + z-index: 12000; +} + +.twipsy { + display: block; + position: absolute; + visibility: visible; + padding: 5px; + font-size: 11px; + z-index: 1000; + filter: alpha(opacity = 80); + -khtml-opacity: 0.8; + -moz-opacity: 0.8; + opacity: 0.8; +} + +.twipsy.fade.in { + filter: alpha(opacity = 80); + -khtml-opacity: 0.8; + -moz-opacity: 0.8; + opacity: 0.8; +} + +.twipsy.above .twipsy-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-left: 5px solid transparent; + border-right: 5px solid transparent; + border-top: 5px solid #000000; +} + +.twipsy.left .twipsy-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-top: 5px solid transparent; + border-bottom: 5px solid transparent; + border-left: 5px solid #000000; +} + +.twipsy.below .twipsy-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-left: 5px solid transparent; + border-right: 5px solid transparent; + border-bottom: 5px solid #000000; +} + +.twipsy.right .twipsy-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-top: 5px solid transparent; + border-bottom: 5px solid transparent; + border-right: 5px solid #000000; +} + +.twipsy-inner { + padding: 3px 8px; + background-color: #000000; + color: white; + text-align: center; + max-width: 200px; + text-decoration: none; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.twipsy-arrow { + position: absolute; + width: 0; + height: 0; +} + +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1000; + padding: 5px; + display: none; +} + +.popover.above .arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-left: 5px solid transparent; + border-right: 5px solid transparent; + border-top: 5px solid #000000; +} + +.popover.right .arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-top: 5px solid transparent; + border-bottom: 5px solid transparent; + border-right: 5px solid #000000; +} + +.popover.below .arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-left: 5px solid transparent; + border-right: 5px solid transparent; + border-bottom: 5px solid #000000; +} + +.popover.left .arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-top: 5px solid transparent; + border-bottom: 5px solid transparent; + border-left: 5px solid #000000; +} + +.popover .arrow { + position: absolute; + width: 0; + height: 0; +} + +.popover .inner { + background: #000000; + background: rgba(0, 0, 0, 0.8); + padding: 3px; + overflow: hidden; + width: 280px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); +} + +.popover .title { + background-color: #f5f5f5; + padding: 9px 15px; + line-height: 1; + -webkit-border-radius: 3px 3px 0 0; + -moz-border-radius: 3px 3px 0 0; + border-radius: 3px 3px 0 0; + border-bottom: 1px solid #eee; +} + +.popover .content { + background-color: #ffffff; + padding: 14px; + -webkit-border-radius: 0 0 3px 3px; + -moz-border-radius: 0 0 3px 3px; + border-radius: 0 0 3px 3px; + -webkit-background-clip: padding-box; + -moz-background-clip: padding-box; + background-clip: padding-box; +} + +.popover .content p, .popover .content ul, .popover .content ol { + margin-bottom: 0; +} + +.fade { + -webkit-transition: opacity 0.15s linear; + -moz-transition: opacity 0.15s linear; + -ms-transition: opacity 0.15s linear; + -o-transition: opacity 0.15s linear; + transition: opacity 0.15s linear; + opacity: 0; +} + +.fade.in { + opacity: 1; +} + +.label { + padding: 1px 3px 2px; + font-size: 9.75px; + font-weight: bold; + color: #ffffff; + text-transform: uppercase; + white-space: nowrap; + background-color: #bfbfbf; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.label.important { + background-color: #c43c35; +} + +.label.warning { + background-color: #f89406; +} + +.label.success { + background-color: #46a546; +} + +.label.notice { + background-color: #62cffc; +} + +.media-grid { + margin-left: -20px; + margin-bottom: 0; + zoom: 1; +} + +.media-grid:before, .media-grid:after { + display: table; + content: ""; + zoom: 1; +} + +.media-grid:after { + clear: both; +} + +.media-grid li { + display: inline; +} + +.media-grid a { + float: left; + padding: 4px; + margin: 0 0 18px 20px; + border: 1px solid #ddd; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.media-grid a img { + display: block; +} + +.media-grid a:hover { + border-color: #0069d6; + -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); + -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); + box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); +} \ No newline at end of file diff --git a/ui/src/main/webapp/static/fusion/sample/org_chart/css/custom.css b/ui/src/main/webapp/static/fusion/sample/org_chart/css/custom.css new file mode 100644 index 0000000..9d48c0b --- /dev/null +++ b/ui/src/main/webapp/static/fusion/sample/org_chart/css/custom.css @@ -0,0 +1,98 @@ +body, html, div, p, span, a, h1, h2, h3, h4, h5 { + margin: 0; + padding: 0; +} + +body, html { + width: 100%; +} + +body { + color: white; + font-family: tahoma; + font-weight: lighter; + padding-top: 40px; +} + +body p { + font-size: 14px; +} + +body p a { + font-size: 16px; +} + +h1 { + color: #E05E00; + font-style: italic; +} + +a { + color: #E05E00; + text-decoration: none; +} + +a:hover { + text-decoration: underline; +} + +/* general */ +.clear { + clear: both; +} + +/* Header */ +.brand { + color: #E05E00 !important; + font-family: georgia; + font-style: italic; +} + +/* list stuff */ +#org { + background-color: white; + margin: 10px; + padding: 10px; +} + +#show-list { + cursor: pointer; +} + +/* bootstrap overrides */ +.alert-message { + margin: 2px 0; +} + +.topbar { + position: absolute; +} + +/* Custom chart styling */ +.jOrgChart { + margin: 10px; + padding: 20px; +} + +/* Custom node styling */ +.jOrgChart .node { + font-weight: bold; + font-size: 14px; + background-color: #D5D6DB; + border-radius: 8px; + border: 5px solid gray; + color: #793a06; + -moz-border-radius: 8px; +} + +.node p { + font-family: tahoma; + font-size: 10px; + line-height: 11px; + padding: 2px; +} + +table { + margin-left: auto; + margin-right: auto; +} \ No newline at end of file diff --git a/ui/src/main/webapp/static/fusion/sample/org_chart/css/prettify.css b/ui/src/main/webapp/static/fusion/sample/org_chart/css/prettify.css new file mode 100644 index 0000000..dd86846 --- /dev/null +++ b/ui/src/main/webapp/static/fusion/sample/org_chart/css/prettify.css @@ -0,0 +1,91 @@ +.pln { + color: #000 +} + +@media screen { + .str { + color: #080 + } + .kwd { + color: #008 + } + .com { + color: #800 + } + .typ { + color: #606 + } + .lit { + color: #066 + } + .pun, .opn, .clo { + color: #660 + } + .tag { + color: #008 + } + .atn { + color: #606 + } + .atv { + color: #080 + } + .dec, .var { + color: #606 + } + .fun { + color: red + } +} + +@media print , projection { + .str { + color: #060 + } + .kwd { + color: #006; + font-weight: bold + } + .com { + color: #600; + font-style: italic + } + .typ { + color: #404; + font-weight: bold + } + .lit { + color: #044 + } + .pun, .opn, .clo { + color: #440 + } + .tag { + color: #006; + font-weight: bold + } + .atn { + color: #404 + } + .atv { + color: #060 + } +} + +pre.prettyprint { + padding: 2px; + border: 1px solid #888 +} + +ol.linenums { + margin-top: 0; + margin-bottom: 0 +} + +li.L0, li.L1, li.L2, li.L3, li.L5, li.L6, li.L7, li.L8 { + list-style-type: none +} + +li.L1, li.L3, li.L5, li.L7, li.L9 { + background: #eee +} \ No newline at end of file diff --git a/ui/src/main/webapp/static/fusion/sample/org_chart/prettify.js b/ui/src/main/webapp/static/fusion/sample/org_chart/prettify.js new file mode 100644 index 0000000..eef5ad7 --- /dev/null +++ b/ui/src/main/webapp/static/fusion/sample/org_chart/prettify.js @@ -0,0 +1,28 @@ +var q=null;window.PR_SHOULD_USE_CONTINUATION=!0; +(function(){function L(a){function m(a){var f=a.charCodeAt(0);if(f!==92)return f;var b=a.charAt(1);return(f=r[b])?f:"0"<=b&&b<="7"?parseInt(a.substring(1),8):b==="u"||b==="x"?parseInt(a.substring(2),16):a.charCodeAt(1)}function e(a){if(a<32)return(a<16?"\\x0":"\\x")+a.toString(16);a=String.fromCharCode(a);if(a==="\\"||a==="-"||a==="["||a==="]")a="\\"+a;return a}function h(a){for(var f=a.substring(1,a.length-1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g),a= +[],b=[],o=f[0]==="^",c=o?1:0,i=f.length;c122||(d<65||j>90||b.push([Math.max(65,j)|32,Math.min(d,90)|32]),d<97||j>122||b.push([Math.max(97,j)&-33,Math.min(d,122)&-33]))}}b.sort(function(a,f){return a[0]-f[0]||f[1]-a[1]});f=[];j=[NaN,NaN];for(c=0;ci[0]&&(i[1]+1>i[0]&&b.push("-"),b.push(e(i[1])));b.push("]");return b.join("")}function y(a){for(var f=a.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),b=f.length,d=[],c=0,i=0;c=2&&a==="["?f[c]=h(j):a!=="\\"&&(f[c]=j.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return f.join("")}for(var t=0,s=!1,l=!1,p=0,d=a.length;p=5&&"lang-"===b.substring(0,5))&&!(o&&typeof o[1]==="string"))c=!1,b="src";c||(r[f]=b)}i=d;d+=f.length;if(c){c=o[1];var j=f.indexOf(c),k=j+c.length;o[2]&&(k=f.length-o[2].length,j=k-c.length);b=b.substring(5);B(l+i,f.substring(0,j),e,p);B(l+i+j,c,C(b,c),p);B(l+i+k,f.substring(k),e,p)}else p.push(l+i,b)}a.e=p}var h={},y;(function(){for(var e=a.concat(m), +l=[],p={},d=0,g=e.length;d=0;)h[n.charAt(k)]=r;r=r[1];n=""+r;p.hasOwnProperty(n)||(l.push(r),p[n]=q)}l.push(/[\S\s]/);y=L(l)})();var t=m.length;return e}function u(a){var m=[],e=[];a.tripleQuotedStrings?m.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):a.multiLineStrings?m.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/, +q,"'\"`"]):m.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]);a.verbatimStrings&&e.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var h=a.hashComments;h&&(a.cStyleComments?(h>1?m.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):m.push(["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),e.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,q])):m.push(["com",/^#[^\n\r]*/, +q,"#"]));a.cStyleComments&&(e.push(["com",/^\/\/[^\n\r]*/,q]),e.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q]));a.regexLiterals&&e.push(["lang-regex",/^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/]);(h=a.types)&&e.push(["typ",h]);a=(""+a.keywords).replace(/^ | $/g, +"");a.length&&e.push(["kwd",RegExp("^(?:"+a.replace(/[\s,]+/g,"|")+")\\b"),q]);m.push(["pln",/^\s+/,q," \r\n\t\xa0"]);e.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/,q],["pun",/^.[^\s\w"-$'./@\\`]*/,q]);return x(m,e)}function D(a,m){function e(a){switch(a.nodeType){case 1:if(k.test(a.className))break;if("BR"===a.nodeName)h(a), +a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)e(a);break;case 3:case 4:if(p){var b=a.nodeValue,d=b.match(t);if(d){var c=b.substring(0,d.index);a.nodeValue=c;(b=b.substring(d.index+d[0].length))&&a.parentNode.insertBefore(s.createTextNode(b),a.nextSibling);h(a);c||a.parentNode.removeChild(a)}}}}function h(a){function b(a,d){var e=d?a.cloneNode(!1):a,f=a.parentNode;if(f){var f=b(f,1),g=a.nextSibling;f.appendChild(e);for(var h=g;h;h=g)g=h.nextSibling,f.appendChild(h)}return e} +for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),e;(e=a.parentNode)&&e.nodeType===1;)a=e;d.push(a)}var k=/(?:^|\s)nocode(?:\s|$)/,t=/\r\n?|\n/,s=a.ownerDocument,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=s.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);for(l=s.createElement("LI");a.firstChild;)l.appendChild(a.firstChild);for(var d=[l],g=0;g=0;){var h=m[e];A.hasOwnProperty(h)?window.console&&console.warn("cannot override language handler %s",h):A[h]=a}}function C(a,m){if(!a||!A.hasOwnProperty(a))a=/^\s*=o&&(h+=2);e>=c&&(a+=2)}}catch(w){"console"in window&&console.log(w&&w.stack?w.stack:w)}}var v=["break,continue,do,else,for,if,return,while"],w=[[v,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"], +"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],F=[w,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],G=[w,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"], +H=[G,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"],w=[w,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],I=[v,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"], +J=[v,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],v=[v,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],K=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,N=/\S/,O=u({keywords:[F,H,w,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END"+ +I,J,v],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),A={};k(O,["default-code"]);k(x([],[["pln",/^[^]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]), +["default-markup","htm","html","mxml","xhtml","xml","xsl"]);k(x([["pln",/^\s+/,q," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,q,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css", +/^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);k(x([],[["atv",/^[\S\s]+/]]),["uq.val"]);k(u({keywords:F,hashComments:!0,cStyleComments:!0,types:K}),["c","cc","cpp","cxx","cyc","m"]);k(u({keywords:"null,true,false"}),["json"]);k(u({keywords:H,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:K}),["cs"]);k(u({keywords:G,cStyleComments:!0}),["java"]);k(u({keywords:v,hashComments:!0,multiLineStrings:!0}),["bsh","csh","sh"]);k(u({keywords:I,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}), +["cv","py"]);k(u({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["perl","pl","pm"]);k(u({keywords:J,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb"]);k(u({keywords:w,cStyleComments:!0,regexLiterals:!0}),["js"]);k(u({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes", +hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);k(x([],[["str",/^[\S\s]+/]]),["regex"]);window.prettyPrintOne=function(a,m,e){var h=document.createElement("PRE");h.innerHTML=a;e&&D(h,e);E({g:m,i:e,h:h});return h.innerHTML};window.prettyPrint=function(a){function m(){for(var e=window.PR_SHOULD_USE_CONTINUATION?l.now()+250:Infinity;p=0){var k=k.match(g),f,b;if(b= +!k){b=n;for(var o=void 0,c=b.firstChild;c;c=c.nextSibling)var i=c.nodeType,o=i===1?o?b:c:i===3?N.test(c.nodeValue)?b:o:o;b=(f=o===b?void 0:o)&&"CODE"===f.tagName}b&&(k=f.className.match(g));k&&(k=k[1]);b=!1;for(o=n.parentNode;o;o=o.parentNode)if((o.tagName==="pre"||o.tagName==="code"||o.tagName==="xmp")&&o.className&&o.className.indexOf("prettyprint")>=0){b=!0;break}b||((b=(b=n.className.match(/\blinenums\b(?::(\d+))?/))?b[1]&&b[1].length?+b[1]:!0:!1)&&D(n,b),d={g:k,h:n,i:b},E(d))}}p - - - - - - - -
    -
    -

    Committed Submissions

    -
    - -
    -
    - -
    -
    - -
    -
    -
    - -
    - -
    - Refresh - - -
    -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - -
     Id Status Blueprint VersionLayer Desired Timeslot Url of result 
     {{ - submission.submissionId }}{{ - submission.submissionStatus }}{{ - submission.blueprintInstance.blueprint.blueprintName }}{{ - submission.blueprintInstance.version }} - {{ - submission.blueprintInstance.layer }} - Lab: - {{ submission.blueprintInstance.timeslot.lab }} Start date and - time: {{ submission.blueprintInstance.timeslot.startDateTime }} - duration(in sec) : - {{submission.blueprintInstance.timeslot.duration}} - {{ - submission.nexusResultUrl }} -
    -

    - -

    ?E!@0MaQRVh4|dffmc(JoYXmc87H?BNNdu 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 literal 0 HcmV?d00001 diff --git a/ui/src/main/webapp/static/fusion/sample/images/tunnels/3_wed.png b/ui/src/main/webapp/static/fusion/sample/images/tunnels/3_wed.png new file mode 100644 index 0000000000000000000000000000000000000000..8f8c032879226ffe84f24d66a9c2e1746f0d9b59 GIT binary patch literal 24012 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 AIsgCw literal 0 HcmV?d00001 diff --git a/ui/src/main/webapp/static/fusion/sample/images/tunnels/4_thu.png b/ui/src/main/webapp/static/fusion/sample/images/tunnels/4_thu.png new file mode 100644 index 0000000000000000000000000000000000000000..750dca5d6623e093ad27d516fa5e5b7db0b3a8ca GIT binary patch literal 23902 zcmb?@c|4R~|Gu5FrK0TF%bJ~G7$Kr4l6~y^76#c(ic$z6``AKuvacokHVR`OyRnNw zhT(TlpXd2L&+GO3{{H*@QMd8B=iKL<`<(atdSBOdynU>rL3^3yG7%9G?E_6UJt87v zEbvd5iURnJbdyRC5s^9H12vVWFQ&FLC_h~{7>^)-a)qW|FsF<}Fh@vq-h<@H)5nIR zV+Mu{Picfoa;h40MEP$*RGviKR%Nm6(Y`Bw>y{|RhuiX+91)k66(1^w221O^`5E~5 z8O&y;?5yu94*Mf_HYDpd<{Ect*D}51AK$)y`SrcG{_<~Q!|r7RpGY$PUM|CR2%j#$ zh7|mB3qt?zo&UOUA@2~rmwg5E_wtwuM)>sa%WX0c;nV-s*#D!=e>Fz9Xr=d@$t3qb z5XiXxwEP9GdvR!q*O&A9-`?arqr)E+3!Bv=3yA72F3Kl@J^`I0Jo&13hT4_q*MPnd zo*+ntq%TS1KbG;}UK=muzhUMZj!ml*THckTLi}_4Ye-wkP=>_s)BGy8*?Y`;0n|ml zzCysr|8}8-7>^%24Z5)S)Fw7>^6%fiCkplmu|m3B0-i^h6LAvkI*3+lDt_a`{_jstViI;DJ`+Q_zTEi+lN!gpU=Olfy0lVh<5dd&ZGt zl5}rkzU4)2;cG`N={hiyk;Bx2pSmJqxC*@)6}sBn2T!#T*Dz!txX%C23v>#C>N7)3Tw?g2 zrW=oMiE0==IL_qMZVSP~*iQ^n&;3<&8XxNF#AiQHwR7B;dN6$F4Q7pz9K+m(=Z{1O z=|>GI=;qz0m7i&l{7?Uq!N^!U-Nftz3E`}A&2u%qq#J%=ll}U69{c4Cc*SveW~FB? zTgbNbof6|~>%}Bk%j2E@j1O81LAN-*!m>-=3pn1ogO7|!I6T$GWYKS=++uFvtKOP< z_y8jZigL>fwY=4ggfsHkutlFj*Fo8*cmR>{2({UG5lYWFlrqI6R(sFks%jOPi{ zxDPBjUvYya99QTUB_t@vJ==J^KUh*7B)KX403&}pC+oC7o=@9$C|zF3ye*_f$&{+# z6CblAb-D9X8vD?1W%5dPQP*XhuV0-fcgS=)5xyu79m`mm`AGSaIjRr5aD0W4^|6%M zfX-7_%h6(wZO7c_j0%MgqjgcVJlQ0DdDfJ}WW)ClPwwlR=Sp^LsdZA!aZ%0P8Lw$l z>Ux_K@>sWI^XIzF%-#>9=qM0Ej8z)KWXmLbp1Xdq(sAA?iIrZ$^}ZVGd_7lZ{}RjE z#t%&M_xRKEJl@`>{k{*khMQJdCW{AWlJRHNu7%LqeSCHudNp1ld8T1`h|f>7!MnEw z3(pLEUj6Wwn?2CFKx#U zs3Luu{R{=tEh5atap;AB3py0NpZ49PhW7wv0W5)kt%MASm;u6L;#LE_;w`-*y*=>$ z!EiEZFix{8hP~F8263?)dXbR3J#88iy11HVXK2FmpXGcF!$8?cF_A0QChWCQ^eq;V z;TaJ!r>Ghpa@+JAGCWbGzF*eZ*O)a|BlO>2ile}dIAmVBynl~&ndmO}H~GpHdKfzg zH4{dLWb0X(aG=1$TZBdWuO5Q+AZTUVH~9BwAN7|pzjU>eI>5V@5c(t8%g(5zfkdJI z+?oL~B**RSwkB{NFjQ+LE>GCRJ{T8kd*Mvu3qdJd2xNWTDL@AlcNWF`vkm@v!i~hF z2KS6*RH+NxHQ@9}E1K&jQnJ=Pu{nZPBy@Lgv;4n<%+4i@lap7Dzc;m6Td}b|lc>>S zK?n-GUbB07SZTU3D>MGye?_B4Qv~PwXfMfujn77pNHlBz_t(_gw3q+~S^M`ZMr;x_ zDan8SyZiKGM3HngM2s3glVVs4!t1}n%jj>PpXm07ao0V#);rPqKW`1##@Gt>lV*QC zTe{va--6LSar;ZL%1O+~xB%(n2v*_8%0DZ4{(IWFGUmt2lg|PUORfa}R>z-8kb{nX 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 literal 0 HcmV?d00001 diff --git a/ui/src/main/webapp/static/fusion/sample/images/tunnels/6_sat.png b/ui/src/main/webapp/static/fusion/sample/images/tunnels/6_sat.png new file mode 100644 index 0000000000000000000000000000000000000000..70323ea04fb0b967ca06bbb75376dab90fd9238e GIT binary patch literal 23674 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