diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6a1eeac --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +/node_modules +/elm-stuff +npm-debug.log diff --git a/api.js b/api.js new file mode 100644 index 0000000..dadc62a --- /dev/null +++ b/api.js @@ -0,0 +1,11 @@ +let jsonServer = require('json-server'); + +let server = jsonServer.create(); + +server.use(jsonServer.defaults()); + +let router = jsonServer.router('entity.json'); +server.use(router); + +console.log('Listening at 4000'); +server.listen(4000); diff --git a/elm-package.json b/elm-package.json new file mode 100644 index 0000000..6429c7d --- /dev/null +++ b/elm-package.json @@ -0,0 +1,16 @@ +{ + "version": "1.0.0", + "summary": "helpful summary of your project, less than 80 characters", + "repository": "https://github.com/user/project.git", + "license": "BSD3", + "source-directories": [ + "src" + ], + "exposed-modules": [], + "dependencies": { + "elm-lang/core": "4.0.5 <= v < 5.0.0", + "elm-lang/html": "1.1.0 <= v < 2.0.0", + "evancz/elm-http": "3.0.1 <= v < 4.0.0" + }, + "elm-version": "0.17.1 <= v < 0.18.0" +} diff --git a/entity.json b/entity.json new file mode 100644 index 0000000..36f45e7 --- /dev/null +++ b/entity.json @@ -0,0 +1,46 @@ +{ + "variables": [ + { + "value": "false", + "type": "java.lang.Boolean", + "name": "shouldBeInZimbra" + }, + { + "value": "[]", + "type": "java.util.ArrayList", + "name": "warnings" + }, + { + "value": "", + "type": "java.lang.String", + "name": "ticketDescription" + }, + { + "value": "ch.adnovum.itc.datamodel.entities.common.MonthlyValuesEntity@2b585eb0[ch.adnovum.itc.datamodel.entities.common.MonthlyValuesEntity@2b585eb0,monthlyValuesId=78678,employee=ch.adnovum.itc.datamodel.entities.common.EmployeeEntity@168fc82e[ch.adnovum.itc.datamodel.entities.common.EmployeeEntity@168fc82e,employeeId=6159,loginName=pal,firstName=Pál,middleName=,lastName=Könyves,abacusId=,joiningDat=1971-01-01 00:00:00.0,resignDat=,poolManager=ch.adnovum.itc.datamodel.entities.common.EmployeeEntity@7e6af704[ch.adnovum.itc.datamodel.entities.common.EmployeeEntity@7e6af704,employeeId=1458,loginName=apw,firstName=Andrea,middleName=,lastName=Weisskopf,abacusId=276,joiningDat=2005-09-19 00:00:00.0,resignDat=,poolManager=ch.adnovum.itc.datamodel.entities.common.EmployeeEntity@289b0711[ch.adnovum.itc.datamodel.entities.common.EmployeeEntity@289b0711,employeeId=287,loginName=chris,firstName=Chris,middleName=,lastName=Tanner,abacusId=366,joiningDat=2008-04-01 00:00:00.0,resignDat=,poolManager=ch.adnovum.itc.datamodel.entities.common.EmployeeEntity@289b0711,preferences=ch.adnovum.itc.datamodel.entities.common.PreferencesEntity@4e349407[ch.adnovum.itc.datamodel.entities.common.PreferencesEntity@4e349407,preferencesId=1036,employeeSorting=0,myActivity=,hideAdos=false,employeeLanguage=en,ctlCreUid=patch_2.6.0.0,ctlCreTs=2015-06-06 09:06:57.411187,ctlModUid=patch_2.6.0.0,ctlModTs=2015-06-06 09:06:57.411187,ctlTcn=0],ctlAct=true,ctlCreUid=patch_1.14.0.0,ctlCreTs=2013-10-16 06:18:19.441353,ctlModUid=ira,ctlModTs=2016-03-08 09:23:28.663,ctlTcn=18],preferences=ch.adnovum.itc.datamodel.entities.common.PreferencesEntity@1aea4667[ch.adnovum.itc.datamodel.entities.common.PreferencesEntity@1aea4667,preferencesId=1070,employeeSorting=2,myActivity=,hideAdos=true,employeeLanguage=en,ctlCreUid=patch_2.6.0.0,ctlCreTs=2015-06-06 09:06:57.411187,ctlModUid=apw,ctlModTs=2015-07-17 04:40:27.907,ctlTcn=2],ctlAct=true,ctlCreUid=patch_1.14.0.0,ctlCreTs=2013-10-16 06:18:19.441353,ctlModUid=ira,ctlModTs=2016-03-08 09:23:28.741,ctlTcn=14],preferences=ch.adnovum.itc.datamodel.entities.common.PreferencesEntity@1be5475c[ch.adnovum.itc.datamodel.entities.common.PreferencesEntity@1be5475c,preferencesId=1292,employeeSorting=2,myActivity=,hideAdos=false,employeeLanguage=en,ctlCreUid=patch_2.6.0.0,ctlCreTs=2015-06-06 09:06:57.411187,ctlModUid=pal,ctlModTs=2016-04-12 09:23:24.879,ctlTcn=7],ctlAct=true,ctlCreUid=patch_1.14.0.0,ctlCreTs=2013-10-16 06:18:19.441353,ctlModUid=ANONYMOUS,ctlModTs=2016-08-25 19:05:23.609,ctlTcn=13],month=ch.adnovum.itc.datamodel.entities.refdata.MonthEntity@1e51786b[ch.adnovum.itc.datamodel.entities.refdata.MonthEntity@1e51786b,monthCd=629,month=2016-09-01 00:00:00.0,year=2016,ctlAct=true],monthlyPensum=100,dailyPensum=100.0,targetTime=0,location=ch.adnovum.itc.datamodel.entities.refdata.LocationEntity@6a82e02b[ch.adnovum.itc.datamodel.entities.refdata.LocationEntity@6a82e02b,locationCd=22,country=ch.adnovum.itc.datamodel.entities.refdata.CountryEntity@7f145b96[ch.adnovum.itc.datamodel.entities.refdata.CountryEntity@7f145b96,countryCd=HU,fullPensumPerDayInMinutes=480,defaultVacationDaysPerYear=20,ctlAct=true],cityName=Budapest,workMinutesMon=480,workMinutesTue=480,workMinutesWed=480,workMinutesThu=480,workMinutesFri=480,workMinutesSat=0,workMinutesSun=0,ctlAct=true,ctlNoOvertimeCarry=false],onlineMon=true,onlineTue=true,onlineWed=true,onlineThu=true,onlineFri=true,managementContractFlag=true,noOvertimeCarryFlag=false,ctlCreUid=ANONYMOUS,ctlCreTs=2015-01-01 05:01:02.686,ctlModUid=likaandi,ctlModTs=2016-01-07 17:36:04.35,ctlTcn=3]", + "type": "ch.adnovum.itc.datamodel.entities.common.MonthlyValuesEntity", + "name": "monthlyValues" + }, + { + "value": "ERROR calling toString()", + "type": "ch.adnovum.itc.datamodel.entities.common.TimeEntryEntity", + "name": "timeEntry" + }, + { + "value": "false", + "type": "java.lang.Boolean", + "name": "shouldBeInJira" + }, + { + "value": "ch.adnovum.jcan.ee6.jpa2.dao.ReadWriteDaoImpl@593b1d", + "type": "ch.adnovum.jcan.ee6.jpa2.dao.ReadWriteDaoImpl", + "name": "timeEntryDao" + }, + { + "value": "java.util.GregorianCalendar[time=1472716800000,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Europe/Budapest",offset=3600000,dstSavings=3600000,useDaylight=true,transitions=151,lastRule=java.util.SimpleTimeZone[id=Europe/Budapest,offset=3600000,dstSavings=3600000,useDaylight=true,startYear=0,startMode=2,startMonth=2,startDay=-1,startDayOfWeek=1,startTime=3600000,startTimeMode=2,endMode=2,endMonth=9,endDay=-1,endDayOfWeek=1,endTime=3600000,endTimeMode=2]],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2016,MONTH=8,WEEK_OF_YEAR=36,WEEK_OF_MONTH=1,DAY_OF_MONTH=1,DAY_OF_YEAR=245,DAY_OF_WEEK=5,DAY_OF_WEEK_IN_MONTH=1,AM_PM=0,HOUR=10,HOUR_OF_DAY=10,MINUTE=0,SECOND=0,MILLISECOND=0,ZONE_OFFSET=3600000,DST_OFFSET=3600000]", + "type": "java.util.GregorianCalendar", + "name": "cal" + }, + ], + "method": "trxInsertEntry", + "class": "ch.adnovum.itc.business.service.booking.BookingServiceBean" +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..6123742 --- /dev/null +++ b/package.json @@ -0,0 +1,27 @@ +{ + "name": "entity_component", + "version": "1.0.0", + "description": "", + "main": "api.js", + "scripts": { + "api": "node api.js", + "build": "webpack", + "watch": "webpack --watch", + "dev": "webpack-dev-server --port 3000" + }, + "author": "", + "license": "ISC", + "dependencies": { + "ace-css": "^1.1.0", + "css-loader": "^0.25.0", + "elm-webpack-loader": "^3.0.6", + "file-loader": "^0.9.0", + "font-awesome": "^4.7.0", + "json-server": "^0.8.22", + "style-loader": "^0.13.1", + "url-loader": "^0.5.7", + "webpack": "^1.13.3", + "webpack-dev-middleware": "^1.8.4", + "webpack-dev-server": "^1.16.2" + } +} diff --git a/src/Command.elm b/src/Command.elm new file mode 100644 index 0000000..294a765 --- /dev/null +++ b/src/Command.elm @@ -0,0 +1,24 @@ +module Command exposing (..) + +import Http +import Task +import Json.Decode as Decode exposing (..) +import Model exposing (..) +import Message exposing (..) + +serverUrl : String +serverUrl = + "http://localhost:4000" + +load : Cmd Msg +load = + Http.get objectDecoder serverUrl + |> Task.perform LoadFail LoadSuccess + + + +objectDecoder : Decode.Decoder Node +objectDecoder = + Decode.object2 Node + ("class" := Decode.string) + ("method" := Decode.string) diff --git a/src/Main.elm b/src/Main.elm new file mode 100644 index 0000000..585b3dc --- /dev/null +++ b/src/Main.elm @@ -0,0 +1,21 @@ +module Main exposing (..) + +import Html.App exposing (program) +import Message exposing (..) +import Model exposing (..) +import View exposing (..) +import Update exposing (..) +import Command exposing (..) + +initialize : (Node, Cmd Msg) +initialize = + (Node "" "", load) + +main = + Html.App.program + { init = initialize + , view = view + , update = update + , subscriptions = \_ -> Sub.none + } + diff --git a/src/Message.elm b/src/Message.elm new file mode 100644 index 0000000..859b8bb --- /dev/null +++ b/src/Message.elm @@ -0,0 +1,8 @@ +module Message exposing (..) + +import Http +import Model exposing (..) + +type Msg = + LoadSuccess Node + | LoadFail Http.Error diff --git a/src/Model.elm b/src/Model.elm new file mode 100644 index 0000000..a812a65 --- /dev/null +++ b/src/Model.elm @@ -0,0 +1,10 @@ +module Model exposing (..) + +type NodeType = + NObject + | NList + +type alias Node = + { class : String + , method : String + } diff --git a/src/Update.elm b/src/Update.elm new file mode 100644 index 0000000..7680f8d --- /dev/null +++ b/src/Update.elm @@ -0,0 +1,13 @@ +module Update exposing (..) + +import Model exposing (..) +import Message exposing (..) + + +update : Msg -> Node -> (Node, Cmd Msg) +update msg node = + case msg of + LoadSuccess loadedNode -> + (loadedNode, Cmd.none) + LoadFail error -> + (node, Cmd.none) diff --git a/src/View.elm b/src/View.elm new file mode 100644 index 0000000..b780937 --- /dev/null +++ b/src/View.elm @@ -0,0 +1,11 @@ +module View exposing (..) + +import Html exposing (..) +import Message exposing (..) +import Model exposing (..) + + +view : Node -> Html Msg +view node = + div [] + [ text "ROOT" ] diff --git a/src/index.html b/src/index.html new file mode 100644 index 0000000..16a3602 --- /dev/null +++ b/src/index.html @@ -0,0 +1,11 @@ + + + + + Elm SPA example + + +
+ + + diff --git a/src/index.js b/src/index.js new file mode 100644 index 0000000..a740fb0 --- /dev/null +++ b/src/index.js @@ -0,0 +1,9 @@ +require('ace-css/css/ace.css'); +require('font-awesome/css/font-awesome.css'); + +require('./index.html'); + +let Elm = require('./Main.elm'); +let mountNode = document.getElementById('main'); + +let app = Elm.Main.embed(mountNode); diff --git a/webpack.config.js b/webpack.config.js new file mode 100644 index 0000000..9bd59a1 --- /dev/null +++ b/webpack.config.js @@ -0,0 +1,51 @@ +let path = require('path'); + +module.exports = { + entry: { + app: [ + './src/index.js' + ] + }, + + output: { + path: path.resolve(__dirname + '/dist'), + filename: '[name].js', + }, + + module: { + loaders: [ + { + test: /\.(css|scss)$/, + loaders: [ + 'style-loader', + 'css-loader' + ] + }, + { +         test:    /\.html$/, +         exclude: /node_modules/, +         loader:  'file?name=[name].[ext]', + }, + { + test:    /\.elm$/, + exclude: [/elm-stuff/, /node_modules/], + loader:  'elm-webpack', + }, + { + test: /\.woff(2)?(\?v=[0-9]\.[0-9]\.[0-9])?$/, + loader: 'url-loader?limit=10000&mimetype=application/font-woff', + }, + { + test: /\.(ttf|eot|svg)(\?v=[0-9]\.[0-9]\.[0-9])?$/, + loader: 'file-loader', + }, + ], + + noParse: /\.elm$/ + }, + + devServer: { + inline: true, + stats: { colors: true } + } +};