From 4ea22c2d491d40c76aa5f8e744a63b3ca3f637f3 Mon Sep 17 00:00:00 2001 From: Artus Date: Fri, 1 Nov 2019 15:53:21 +0100 Subject: [PATCH] adds routing and some models --- build.sh | 9 + main.js | 1224 +++++++++++++++++++++++++++++++++----------------- src/Main.elm | 191 ++++++-- 3 files changed, 983 insertions(+), 441 deletions(-) create mode 100755 build.sh diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..9f337af --- /dev/null +++ b/build.sh @@ -0,0 +1,9 @@ + +if [[ $1 == "--debug" ]] +then + optimize="" +else + optimize="--optimize" +fi + +elm make src/Main.elm $optimize --output=main.js diff --git a/main.js b/main.js index 40eb5c8..70dd41f 100644 --- a/main.js +++ b/main.js @@ -77,7 +77,7 @@ function A9(fun, a, b, c, d, e, f, g, h, i) { return fun.a === 9 ? fun.f(a, b, c, d, e, f, g, h, i) : fun(a)(b)(c)(d)(e)(f)(g)(h)(i); } - +console.warn('Compiled in DEV mode. Follow the advice at https://elm-lang.org/0.19.1/optimize for better performance and smaller assets.'); // EQUALITY @@ -113,7 +113,7 @@ function _Utils_eqHelp(x, y, depth, stack) return false; } - /**_UNUSED/ + /**/ if (x.$ === 'Set_elm_builtin') { x = $elm$core$Set$toList(x); @@ -126,7 +126,7 @@ function _Utils_eqHelp(x, y, depth, stack) } //*/ - /**/ + /**_UNUSED/ if (x.$ < 0) { x = $elm$core$Dict$toList(x); @@ -161,7 +161,7 @@ function _Utils_cmp(x, y, ord) return x === y ? /*EQ*/ 0 : x < y ? /*LT*/ -1 : /*GT*/ 1; } - /**_UNUSED/ + /**/ if (x instanceof String) { var a = x.valueOf(); @@ -170,10 +170,10 @@ function _Utils_cmp(x, y, ord) } //*/ - /**/ + /**_UNUSED/ if (typeof x.$ === 'undefined') //*/ - /**_UNUSED/ + /**/ if (x.$[0] === '#') //*/ { @@ -203,17 +203,17 @@ var _Utils_compare = F2(function(x, y) // COMMON VALUES -var _Utils_Tuple0 = 0; -var _Utils_Tuple0_UNUSED = { $: '#0' }; +var _Utils_Tuple0_UNUSED = 0; +var _Utils_Tuple0 = { $: '#0' }; -function _Utils_Tuple2(a, b) { return { a: a, b: b }; } -function _Utils_Tuple2_UNUSED(a, b) { return { $: '#2', a: a, b: b }; } +function _Utils_Tuple2_UNUSED(a, b) { return { a: a, b: b }; } +function _Utils_Tuple2(a, b) { return { $: '#2', a: a, b: b }; } -function _Utils_Tuple3(a, b, c) { return { a: a, b: b, c: c }; } -function _Utils_Tuple3_UNUSED(a, b, c) { return { $: '#3', a: a, b: b, c: c }; } +function _Utils_Tuple3_UNUSED(a, b, c) { return { a: a, b: b, c: c }; } +function _Utils_Tuple3(a, b, c) { return { $: '#3', a: a, b: b, c: c }; } -function _Utils_chr(c) { return c; } -function _Utils_chr_UNUSED(c) { return new String(c); } +function _Utils_chr_UNUSED(c) { return c; } +function _Utils_chr(c) { return new String(c); } // RECORDS @@ -264,11 +264,11 @@ function _Utils_ap(xs, ys) -var _List_Nil = { $: 0 }; -var _List_Nil_UNUSED = { $: '[]' }; +var _List_Nil_UNUSED = { $: 0 }; +var _List_Nil = { $: '[]' }; -function _List_Cons(hd, tl) { return { $: 1, a: hd, b: tl }; } -function _List_Cons_UNUSED(hd, tl) { return { $: '::', a: hd, b: tl }; } +function _List_Cons_UNUSED(hd, tl) { return { $: 1, a: hd, b: tl }; } +function _List_Cons(hd, tl) { return { $: '::', a: hd, b: tl }; } var _List_cons = F2(_List_Cons); @@ -499,12 +499,12 @@ var _JsArray_appendN = F3(function(n, dest, source) // LOG -var _Debug_log = F2(function(tag, value) +var _Debug_log_UNUSED = F2(function(tag, value) { return value; }); -var _Debug_log_UNUSED = F2(function(tag, value) +var _Debug_log = F2(function(tag, value) { console.log(tag + ': ' + _Debug_toString(value)); return value; @@ -530,12 +530,12 @@ function _Debug_todoCase(moduleName, region, value) // TO STRING -function _Debug_toString(value) +function _Debug_toString_UNUSED(value) { return ''; } -function _Debug_toString_UNUSED(value) +function _Debug_toString(value) { return _Debug_toAnsiString(false, value); } @@ -720,13 +720,13 @@ function _Debug_toHexDigit(n) // CRASH -function _Debug_crash(identifier) +function _Debug_crash_UNUSED(identifier) { throw new Error('https://github.com/elm/core/blob/1.0.0/hints/' + identifier + '.md'); } -function _Debug_crash_UNUSED(identifier, fact1, fact2, fact3, fact4) +function _Debug_crash(identifier, fact1, fact2, fact3, fact4) { switch(identifier) { @@ -784,11 +784,11 @@ function _Debug_crash_UNUSED(identifier, fact1, fact2, fact3, fact4) function _Debug_regionToString(region) { - if (region.O.z === region.U.z) + if (region.start.line === region.end.line) { - return 'on line ' + region.O.z; + return 'on line ' + region.start.line; } - return 'on lines ' + region.O.z + ' through ' + region.U.z; + return 'on lines ' + region.start.line + ' through ' + region.end.line; } @@ -1212,7 +1212,7 @@ function _Char_toLocaleLower(char) -/**_UNUSED/ +/**/ function _Json_errorToString(error) { return $elm$json$Json$Decode$errorToString(error); @@ -1616,11 +1616,11 @@ var _Json_encode = F2(function(indentLevel, value) return JSON.stringify(_Json_unwrap(value), null, indentLevel) + ''; }); -function _Json_wrap_UNUSED(value) { return { $: 0, a: value }; } -function _Json_unwrap_UNUSED(value) { return value.a; } +function _Json_wrap(value) { return { $: 0, a: value }; } +function _Json_unwrap(value) { return value.a; } -function _Json_wrap(value) { return value; } -function _Json_unwrap(value) { return value; } +function _Json_wrap_UNUSED(value) { return value; } +function _Json_unwrap_UNUSED(value) { return value; } function _Json_emptyArray() { return []; } function _Json_emptyObject() { return {}; } @@ -1857,9 +1857,9 @@ var _Platform_worker = F4(function(impl, flagDecoder, debugMetadata, args) return _Platform_initialize( flagDecoder, args, - impl.aH, - impl.aU, - impl.aR, + impl.init, + impl.update, + impl.subscriptions, function() { return function() {} } ); }); @@ -1872,7 +1872,7 @@ var _Platform_worker = F4(function(impl, flagDecoder, debugMetadata, args) function _Platform_initialize(flagDecoder, args, init, update, subscriptions, stepperBuilder) { var result = A2(_Json_run, flagDecoder, _Json_wrap(args ? args['flags'] : undefined)); - $elm$core$Result$isOk(result) || _Debug_crash(2 /**_UNUSED/, _Json_errorToString(result.a) /**/); + $elm$core$Result$isOk(result) || _Debug_crash(2 /**/, _Json_errorToString(result.a) /**/); var managers = {}; result = init(result.a); var model = result.a; @@ -2271,7 +2271,7 @@ function _Platform_setupIncomingPort(name, sendToApp) // -function _Platform_export(exports) +function _Platform_export_UNUSED(exports) { scope['Elm'] ? _Platform_mergeExportsProd(scope['Elm'], exports) @@ -2292,7 +2292,7 @@ function _Platform_mergeExportsProd(obj, exports) } -function _Platform_export_UNUSED(exports) +function _Platform_export(exports) { scope['Elm'] ? _Platform_mergeExportsDebug('Elm', scope['Elm'], exports) @@ -2332,10 +2332,10 @@ var _VirtualDom_init = F4(function(virtualNode, flagDecoder, debugMetadata, args { // NOTE: this function needs _Platform_export available to work - /**/ + /**_UNUSED/ var node = args['node']; //*/ - /**_UNUSED/ + /**/ var node = args && args['node'] ? args['node'] : _Debug_crash(0); //*/ @@ -2590,24 +2590,24 @@ function _VirtualDom_noInnerHtmlOrFormAction(key) return key == 'innerHTML' || key == 'formAction' ? 'data-' + key : key; } -function _VirtualDom_noJavaScriptUri(value) +function _VirtualDom_noJavaScriptUri_UNUSED(value) { return /^javascript:/i.test(value.replace(/\s/g,'')) ? '' : value; } -function _VirtualDom_noJavaScriptUri_UNUSED(value) +function _VirtualDom_noJavaScriptUri(value) { return /^javascript:/i.test(value.replace(/\s/g,'')) ? 'javascript:alert("This is an XSS vector. Please use ports or web components instead.")' : value; } -function _VirtualDom_noJavaScriptOrHtmlUri(value) +function _VirtualDom_noJavaScriptOrHtmlUri_UNUSED(value) { return /^\s*(javascript:|data:text\/html)/i.test(value) ? '' : value; } -function _VirtualDom_noJavaScriptOrHtmlUri_UNUSED(value) +function _VirtualDom_noJavaScriptOrHtmlUri(value) { return /^\s*(javascript:|data:text\/html)/i.test(value) ? 'javascript:alert("This is an XSS vector. Please use ports or web components instead.")' @@ -2659,9 +2659,9 @@ var _VirtualDom_mapEventTuple = F2(function(func, tuple) var _VirtualDom_mapEventRecord = F2(function(func, record) { return { - k: func(record.k), - P: record.P, - M: record.M + message: func(record.message), + stopPropagation: record.stopPropagation, + preventDefault: record.preventDefault } }); @@ -2929,11 +2929,11 @@ function _VirtualDom_makeCallback(eventNode, initialHandler) // 3 = Custom var value = result.a; - var message = !tag ? value : tag < 3 ? value.a : value.k; - var stopPropagation = tag == 1 ? value.b : tag == 3 && value.P; + var message = !tag ? value : tag < 3 ? value.a : value.message; + var stopPropagation = tag == 1 ? value.b : tag == 3 && value.stopPropagation; var currentEventNode = ( stopPropagation && event.stopPropagation(), - (tag == 2 ? value.b : tag == 3 && value.M) && event.preventDefault(), + (tag == 2 ? value.b : tag == 3 && value.preventDefault) && event.preventDefault(), eventNode ); var tagger; @@ -3883,15 +3883,15 @@ var _Browser_element = _Debugger_element || F4(function(impl, flagDecoder, debug return _Platform_initialize( flagDecoder, args, - impl.aH, - impl.aU, - impl.aR, + impl.init, + impl.update, + impl.subscriptions, function(sendToApp, initialModel) { - var view = impl.aV; - /**/ + var view = impl.view; + /**_UNUSED/ var domNode = args['node']; //*/ - /**_UNUSED/ + /**/ var domNode = args && args['node'] ? args['node'] : _Debug_crash(0); //*/ var currNode = _VirtualDom_virtualize(domNode); @@ -3919,12 +3919,12 @@ var _Browser_document = _Debugger_document || F4(function(impl, flagDecoder, deb return _Platform_initialize( flagDecoder, args, - impl.aH, - impl.aU, - impl.aR, + impl.init, + impl.update, + impl.subscriptions, function(sendToApp, initialModel) { - var divertHrefToApp = impl.N && impl.N(sendToApp) - var view = impl.aV; + var divertHrefToApp = impl.setup && impl.setup(sendToApp) + var view = impl.view; var title = _VirtualDom_doc.title; var bodyNode = _VirtualDom_doc.body; var currNode = _VirtualDom_virtualize(bodyNode); @@ -3932,12 +3932,12 @@ var _Browser_document = _Debugger_document || F4(function(impl, flagDecoder, deb { _VirtualDom_divertHrefToApp = divertHrefToApp; var doc = view(model); - var nextNode = _VirtualDom_node('body')(_List_Nil)(doc.aA); + var nextNode = _VirtualDom_node('body')(_List_Nil)(doc.body); var patches = _VirtualDom_diff(currNode, nextNode); bodyNode = _VirtualDom_applyPatches(bodyNode, currNode, patches, sendToApp); currNode = nextNode; _VirtualDom_divertHrefToApp = 0; - (title !== doc.aT) && (_VirtualDom_doc.title = title = doc.aT); + (title !== doc.title) && (_VirtualDom_doc.title = title = doc.title); }); } ); @@ -3993,12 +3993,12 @@ function _Browser_makeAnimator(model, draw) function _Browser_application(impl) { - var onUrlChange = impl.aJ; - var onUrlRequest = impl.aK; + var onUrlChange = impl.onUrlChange; + var onUrlRequest = impl.onUrlRequest; var key = function() { key.a(onUrlChange(_Browser_getUrl())); }; return _Browser_document({ - N: function(sendToApp) + setup: function(sendToApp) { key.a = sendToApp; _Browser_window.addEventListener('popstate', key); @@ -4014,9 +4014,9 @@ function _Browser_application(impl) var next = $elm$url$Url$fromString(href).a; sendToApp(onUrlRequest( (next - && curr.aj === next.aj - && curr.Z === next.Z - && curr.af.a === next.af.a + && curr.protocol === next.protocol + && curr.host === next.host + && curr.port_.a === next.port_.a ) ? $elm$browser$Browser$Internal(next) : $elm$browser$Browser$External(href) @@ -4024,13 +4024,13 @@ function _Browser_application(impl) } }); }, - aH: function(flags) + init: function(flags) { - return A3(impl.aH, flags, _Browser_getUrl(), key); + return A3(impl.init, flags, _Browser_getUrl(), key); }, - aV: impl.aV, - aU: impl.aU, - aR: impl.aR + view: impl.view, + update: impl.update, + subscriptions: impl.subscriptions }); } @@ -4096,17 +4096,17 @@ var _Browser_decodeEvent = F2(function(decoder, event) function _Browser_visibilityInfo() { return (typeof _VirtualDom_doc.hidden !== 'undefined') - ? { aF: 'hidden', aB: 'visibilitychange' } + ? { hidden: 'hidden', change: 'visibilitychange' } : (typeof _VirtualDom_doc.mozHidden !== 'undefined') - ? { aF: 'mozHidden', aB: 'mozvisibilitychange' } + ? { hidden: 'mozHidden', change: 'mozvisibilitychange' } : (typeof _VirtualDom_doc.msHidden !== 'undefined') - ? { aF: 'msHidden', aB: 'msvisibilitychange' } + ? { hidden: 'msHidden', change: 'msvisibilitychange' } : (typeof _VirtualDom_doc.webkitHidden !== 'undefined') - ? { aF: 'webkitHidden', aB: 'webkitvisibilitychange' } - : { aF: 'hidden', aB: 'visibilitychange' }; + ? { hidden: 'webkitHidden', change: 'webkitvisibilitychange' } + : { hidden: 'hidden', change: 'visibilitychange' }; } @@ -4187,12 +4187,12 @@ var _Browser_call = F2(function(functionName, id) function _Browser_getViewport() { return { - ap: _Browser_getScene(), - av: { - H: _Browser_window.pageXOffset, - I: _Browser_window.pageYOffset, - x: _Browser_doc.documentElement.clientWidth, - s: _Browser_doc.documentElement.clientHeight + scene: _Browser_getScene(), + viewport: { + x: _Browser_window.pageXOffset, + y: _Browser_window.pageYOffset, + width: _Browser_doc.documentElement.clientWidth, + height: _Browser_doc.documentElement.clientHeight } }; } @@ -4202,8 +4202,8 @@ function _Browser_getScene() var body = _Browser_doc.body; var elem = _Browser_doc.documentElement; return { - x: Math.max(body.scrollWidth, body.offsetWidth, elem.scrollWidth, elem.offsetWidth, elem.clientWidth), - s: Math.max(body.scrollHeight, body.offsetHeight, elem.scrollHeight, elem.offsetHeight, elem.clientHeight) + width: Math.max(body.scrollWidth, body.offsetWidth, elem.scrollWidth, elem.offsetWidth, elem.clientWidth), + height: Math.max(body.scrollHeight, body.offsetHeight, elem.scrollHeight, elem.offsetHeight, elem.clientHeight) }; } @@ -4226,15 +4226,15 @@ function _Browser_getViewportOf(id) return _Browser_withNode(id, function(node) { return { - ap: { - x: node.scrollWidth, - s: node.scrollHeight + scene: { + width: node.scrollWidth, + height: node.scrollHeight }, - av: { - H: node.scrollLeft, - I: node.scrollTop, - x: node.clientWidth, - s: node.clientHeight + viewport: { + x: node.scrollLeft, + y: node.scrollTop, + width: node.clientWidth, + height: node.clientHeight } }; }); @@ -4264,18 +4264,18 @@ function _Browser_getElement(id) var x = _Browser_window.pageXOffset; var y = _Browser_window.pageYOffset; return { - ap: _Browser_getScene(), - av: { - H: x, - I: y, - x: _Browser_doc.documentElement.clientWidth, - s: _Browser_doc.documentElement.clientHeight + scene: _Browser_getScene(), + viewport: { + x: x, + y: y, + width: _Browser_doc.documentElement.clientWidth, + height: _Browser_doc.documentElement.clientHeight }, - aC: { - H: x + rect.left, - I: y + rect.top, - x: rect.width, - s: rect.height + element: { + x: x + rect.left, + y: y + rect.top, + width: rect.width, + height: rect.height } }; }); @@ -4320,25 +4320,25 @@ var _Http_toTask = F3(function(router, toTask, request) return _Scheduler_binding(function(callback) { function done(response) { - callback(toTask(request.aD.a(response))); + callback(toTask(request.expect.a(response))); } var xhr = new XMLHttpRequest(); xhr.addEventListener('error', function() { done($elm$http$Http$NetworkError_); }); xhr.addEventListener('timeout', function() { done($elm$http$Http$Timeout_); }); - xhr.addEventListener('load', function() { done(_Http_toResponse(request.aD.b, xhr)); }); - $elm$core$Maybe$isJust(request.au) && _Http_track(router, xhr, request.au.a); + xhr.addEventListener('load', function() { done(_Http_toResponse(request.expect.b, xhr)); }); + $elm$core$Maybe$isJust(request.tracker) && _Http_track(router, xhr, request.tracker.a); try { - xhr.open(request.aI, request.G, true); + xhr.open(request.method, request.url, true); } catch (e) { - return done($elm$http$Http$BadUrl_(request.G)); + return done($elm$http$Http$BadUrl_(request.url)); } _Http_configureRequest(xhr, request); - request.aA.a && xhr.setRequestHeader('Content-Type', request.aA.a); - xhr.send(request.aA.b); + request.body.a && xhr.setRequestHeader('Content-Type', request.body.a); + xhr.send(request.body.b); return function() { xhr.c = true; xhr.abort(); }; }); @@ -4349,13 +4349,13 @@ var _Http_toTask = F3(function(router, toTask, request) function _Http_configureRequest(xhr, request) { - for (var headers = request.Y; headers.b; headers = headers.b) // WHILE_CONS + for (var headers = request.headers; headers.b; headers = headers.b) // WHILE_CONS { xhr.setRequestHeader(headers.a.a, headers.a.b); } - xhr.timeout = request.aS.a || 0; - xhr.responseType = request.aD.d; - xhr.withCredentials = request.ay; + xhr.timeout = request.timeout.a || 0; + xhr.responseType = request.expect.d; + xhr.withCredentials = request.allowCookiesFromOtherDomains; } @@ -4376,10 +4376,10 @@ function _Http_toResponse(toBody, xhr) function _Http_toMetadata(xhr) { return { - G: xhr.responseURL, - aP: xhr.status, - aQ: xhr.statusText, - Y: _Http_parseHeaders(xhr.getAllResponseHeaders()) + url: xhr.responseURL, + statusCode: xhr.status, + statusText: xhr.statusText, + headers: _Http_parseHeaders(xhr.getAllResponseHeaders()) }; } @@ -4474,32 +4474,49 @@ function _Http_track(router, xhr, tracker) xhr.upload.addEventListener('progress', function(event) { if (xhr.c) { return; } _Scheduler_rawSpawn(A2($elm$core$Platform$sendToSelf, router, _Utils_Tuple2(tracker, $elm$http$Http$Sending({ - aO: event.loaded, - aq: event.total + sent: event.loaded, + size: event.total })))); }); xhr.addEventListener('progress', function(event) { if (xhr.c) { return; } _Scheduler_rawSpawn(A2($elm$core$Platform$sendToSelf, router, _Utils_Tuple2(tracker, $elm$http$Http$Receiving({ - aM: event.loaded, - aq: event.lengthComputable ? $elm$core$Maybe$Just(event.total) : $elm$core$Maybe$Nothing + received: event.loaded, + size: event.lengthComputable ? $elm$core$Maybe$Just(event.total) : $elm$core$Maybe$Nothing })))); }); +} + +function _Url_percentEncode(string) +{ + return encodeURIComponent(string); +} + +function _Url_percentDecode(string) +{ + try + { + return $elm$core$Maybe$Just(decodeURIComponent(string)); + } + catch (e) + { + return $elm$core$Maybe$Nothing; + } }var $author$project$Main$LinkClicked = function (a) { - return {$: 0, a: a}; + return {$: 'LinkClicked', a: a}; }; var $author$project$Main$UrlChanged = function (a) { - return {$: 1, a: a}; + return {$: 'UrlChanged', a: a}; }; -var $elm$core$Basics$EQ = 1; -var $elm$core$Basics$GT = 2; -var $elm$core$Basics$LT = 0; +var $elm$core$Basics$EQ = {$: 'EQ'}; +var $elm$core$Basics$GT = {$: 'GT'}; +var $elm$core$Basics$LT = {$: 'LT'}; var $elm$core$List$cons = _List_cons; var $elm$core$Dict$foldr = F3( function (func, acc, t) { foldr: while (true) { - if (t.$ === -2) { + if (t.$ === 'RBEmpty_elm_builtin') { return acc; } else { var key = t.b; @@ -4544,7 +4561,7 @@ var $elm$core$Dict$keys = function (dict) { dict); }; var $elm$core$Set$toList = function (_v0) { - var dict = _v0; + var dict = _v0.a; return $elm$core$Dict$keys(dict); }; var $elm$core$Elm$JsArray$foldr = _JsArray_foldr; @@ -4554,7 +4571,7 @@ var $elm$core$Array$foldr = F3( var tail = _v0.d; var helper = F2( function (node, acc) { - if (!node.$) { + if (node.$ === 'SubTree') { var subTree = node.a; return A3($elm$core$Elm$JsArray$foldr, helper, acc, subTree); } else { @@ -4572,32 +4589,32 @@ var $elm$core$Array$toList = function (array) { return A3($elm$core$Array$foldr, $elm$core$List$cons, _List_Nil, array); }; var $elm$core$Result$Err = function (a) { - return {$: 1, a: a}; + return {$: 'Err', a: a}; }; var $elm$json$Json$Decode$Failure = F2( function (a, b) { - return {$: 3, a: a, b: b}; + return {$: 'Failure', a: a, b: b}; }); var $elm$json$Json$Decode$Field = F2( function (a, b) { - return {$: 0, a: a, b: b}; + return {$: 'Field', a: a, b: b}; }); var $elm$json$Json$Decode$Index = F2( function (a, b) { - return {$: 1, a: a, b: b}; + return {$: 'Index', a: a, b: b}; }); var $elm$core$Result$Ok = function (a) { - return {$: 0, a: a}; + return {$: 'Ok', a: a}; }; var $elm$json$Json$Decode$OneOf = function (a) { - return {$: 2, a: a}; + return {$: 'OneOf', a: a}; }; -var $elm$core$Basics$False = 1; +var $elm$core$Basics$False = {$: 'False'}; var $elm$core$Basics$add = _Basics_add; var $elm$core$Maybe$Just = function (a) { - return {$: 0, a: a}; + return {$: 'Just', a: a}; }; -var $elm$core$Maybe$Nothing = {$: 1}; +var $elm$core$Maybe$Nothing = {$: 'Nothing'}; var $elm$core$String$all = _String_all; var $elm$core$Basics$and = _Basics_and; var $elm$core$Basics$append = _Utils_append; @@ -4722,12 +4739,12 @@ var $elm$json$Json$Decode$errorToStringHelp = F2( errorToStringHelp: while (true) { switch (error.$) { - case 0: + case 'Field': var f = error.a; var err = error.b; var isSimple = function () { var _v1 = $elm$core$String$uncons(f); - if (_v1.$ === 1) { + if (_v1.$ === 'Nothing') { return false; } else { var _v2 = _v1.a; @@ -4742,7 +4759,7 @@ var $elm$json$Json$Decode$errorToStringHelp = F2( error = $temp$error; context = $temp$context; continue errorToStringHelp; - case 1: + case 'Index': var i = error.a; var err = error.b; var indexName = '[' + ($elm$core$String$fromInt(i) + ']'); @@ -4751,7 +4768,7 @@ var $elm$json$Json$Decode$errorToStringHelp = F2( error = $temp$error; context = $temp$context; continue errorToStringHelp; - case 2: + case 'OneOf': var errors = error.a; if (!errors.b) { return 'Ran into a Json.Decode.oneOf with no possibilities' + function () { @@ -4815,7 +4832,7 @@ var $elm$json$Json$Decode$errorToStringHelp = F2( var $elm$core$Array$branchFactor = 32; var $elm$core$Array$Array_elm_builtin = F4( function (a, b, c, d) { - return {$: 0, a: a, b: b, c: c, d: d}; + return {$: 'Array_elm_builtin', a: a, b: b, c: c, d: d}; }); var $elm$core$Elm$JsArray$empty = _JsArray_empty; var $elm$core$Basics$ceiling = _Basics_ceiling; @@ -4830,7 +4847,7 @@ var $elm$core$Array$shiftStep = $elm$core$Basics$ceiling( var $elm$core$Array$empty = A4($elm$core$Array$Array_elm_builtin, 0, $elm$core$Array$shiftStep, $elm$core$Elm$JsArray$empty, $elm$core$Elm$JsArray$empty); var $elm$core$Elm$JsArray$initialize = _JsArray_initialize; var $elm$core$Array$Leaf = function (a) { - return {$: 1, a: a}; + return {$: 'Leaf', a: a}; }; var $elm$core$Basics$apL = F2( function (f, x) { @@ -4850,7 +4867,7 @@ var $elm$core$Basics$max = F2( }); var $elm$core$Basics$mul = _Basics_mul; var $elm$core$Array$SubTree = function (a) { - return {$: 0, a: a}; + return {$: 'SubTree', a: a}; }; var $elm$core$Elm$JsArray$initializeFromList = _JsArray_initializeFromList; var $elm$core$Array$compressNodes = F2( @@ -4897,25 +4914,25 @@ var $elm$core$Array$treeFromBuilder = F2( }); var $elm$core$Array$builderToArray = F2( function (reverseNodeList, builder) { - if (!builder.a) { + if (!builder.nodeListSize) { return A4( $elm$core$Array$Array_elm_builtin, - $elm$core$Elm$JsArray$length(builder.c), + $elm$core$Elm$JsArray$length(builder.tail), $elm$core$Array$shiftStep, $elm$core$Elm$JsArray$empty, - builder.c); + builder.tail); } else { - var treeLen = builder.a * $elm$core$Array$branchFactor; + var treeLen = builder.nodeListSize * $elm$core$Array$branchFactor; var depth = $elm$core$Basics$floor( A2($elm$core$Basics$logBase, $elm$core$Array$branchFactor, treeLen - 1)); - var correctNodeList = reverseNodeList ? $elm$core$List$reverse(builder.d) : builder.d; - var tree = A2($elm$core$Array$treeFromBuilder, correctNodeList, builder.a); + var correctNodeList = reverseNodeList ? $elm$core$List$reverse(builder.nodeList) : builder.nodeList; + var tree = A2($elm$core$Array$treeFromBuilder, correctNodeList, builder.nodeListSize); return A4( $elm$core$Array$Array_elm_builtin, - $elm$core$Elm$JsArray$length(builder.c) + treeLen, + $elm$core$Elm$JsArray$length(builder.tail) + treeLen, A2($elm$core$Basics$max, 5, depth * $elm$core$Array$shiftStep), tree, - builder.c); + builder.tail); } }); var $elm$core$Basics$idiv = _Basics_idiv; @@ -4928,7 +4945,7 @@ var $elm$core$Array$initializeHelp = F5( return A2( $elm$core$Array$builderToArray, false, - {d: nodeList, a: (len / $elm$core$Array$branchFactor) | 0, c: tail}); + {nodeList: nodeList, nodeListSize: (len / $elm$core$Array$branchFactor) | 0, tail: tail}); } else { var leaf = $elm$core$Array$Leaf( A3($elm$core$Elm$JsArray$initialize, $elm$core$Array$branchFactor, fromIndex, fn)); @@ -4958,9 +4975,9 @@ var $elm$core$Array$initialize = F2( return A5($elm$core$Array$initializeHelp, fn, initialFromIndex, len, _List_Nil, tail); } }); -var $elm$core$Basics$True = 0; +var $elm$core$Basics$True = {$: 'True'}; var $elm$core$Result$isOk = function (result) { - if (!result.$) { + if (result.$ === 'Ok') { return true; } else { return false; @@ -4971,31 +4988,33 @@ var $elm$json$Json$Decode$map2 = _Json_map2; var $elm$json$Json$Decode$succeed = _Json_succeed; var $elm$virtual_dom$VirtualDom$toHandlerInt = function (handler) { switch (handler.$) { - case 0: + case 'Normal': return 0; - case 1: + case 'MayStopPropagation': return 1; - case 2: + case 'MayPreventDefault': return 2; default: return 3; } }; var $elm$browser$Browser$External = function (a) { - return {$: 1, a: a}; + return {$: 'External', a: a}; }; var $elm$browser$Browser$Internal = function (a) { - return {$: 0, a: a}; + return {$: 'Internal', a: a}; }; var $elm$core$Basics$identity = function (x) { return x; }; -var $elm$browser$Browser$Dom$NotFound = $elm$core$Basics$identity; -var $elm$url$Url$Http = 0; -var $elm$url$Url$Https = 1; +var $elm$browser$Browser$Dom$NotFound = function (a) { + return {$: 'NotFound', a: a}; +}; +var $elm$url$Url$Http = {$: 'Http'}; +var $elm$url$Url$Https = {$: 'Https'}; var $elm$url$Url$Url = F6( function (protocol, host, port_, path, query, fragment) { - return {W: fragment, Z: host, ad: path, af: port_, aj: protocol, ak: query}; + return {fragment: fragment, host: host, path: path, port_: port_, protocol: protocol, query: query}; }); var $elm$core$String$contains = _String_contains; var $elm$core$String$length = _String_length; @@ -5031,7 +5050,7 @@ var $elm$url$Url$chompBeforePath = F5( var i = _v0.a; var _v1 = $elm$core$String$toInt( A2($elm$core$String$dropLeft, i + 1, str)); - if (_v1.$ === 1) { + if (_v1.$ === 'Nothing') { return $elm$core$Maybe$Nothing; } else { var port_ = _v1; @@ -5114,24 +5133,26 @@ var $elm$core$String$startsWith = _String_startsWith; var $elm$url$Url$fromString = function (str) { return A2($elm$core$String$startsWith, 'http://', str) ? A2( $elm$url$Url$chompAfterProtocol, - 0, + $elm$url$Url$Http, A2($elm$core$String$dropLeft, 7, str)) : (A2($elm$core$String$startsWith, 'https://', str) ? A2( $elm$url$Url$chompAfterProtocol, - 1, + $elm$url$Url$Https, A2($elm$core$String$dropLeft, 8, str)) : $elm$core$Maybe$Nothing); }; var $elm$core$Basics$never = function (_v0) { never: while (true) { - var nvr = _v0; + var nvr = _v0.a; var $temp$_v0 = nvr; _v0 = $temp$_v0; continue never; } }; -var $elm$core$Task$Perform = $elm$core$Basics$identity; +var $elm$core$Task$Perform = function (a) { + return {$: 'Perform', a: a}; +}; var $elm$core$Task$succeed = _Scheduler_succeed; -var $elm$core$Task$init = $elm$core$Task$succeed(0); +var $elm$core$Task$init = $elm$core$Task$succeed(_Utils_Tuple0); var $elm$core$List$foldrHelper = F4( function (fn, acc, ctr, ls) { if (!ls.b) { @@ -5237,7 +5258,7 @@ var $elm$core$Task$sequence = function (tasks) { var $elm$core$Platform$sendToApp = _Platform_sendToApp; var $elm$core$Task$spawnCmd = F2( function (router, _v0) { - var task = _v0; + var task = _v0.a; return _Scheduler_spawn( A2( $elm$core$Task$andThen, @@ -5249,7 +5270,7 @@ var $elm$core$Task$onEffects = F3( return A2( $elm$core$Task$map, function (_v0) { - return 0; + return _Utils_Tuple0; }, $elm$core$Task$sequence( A2( @@ -5259,65 +5280,70 @@ var $elm$core$Task$onEffects = F3( }); var $elm$core$Task$onSelfMsg = F3( function (_v0, _v1, _v2) { - return $elm$core$Task$succeed(0); + return $elm$core$Task$succeed(_Utils_Tuple0); }); var $elm$core$Task$cmdMap = F2( function (tagger, _v0) { - var task = _v0; - return A2($elm$core$Task$map, tagger, task); + var task = _v0.a; + return $elm$core$Task$Perform( + A2($elm$core$Task$map, tagger, task)); }); _Platform_effectManagers['Task'] = _Platform_createManager($elm$core$Task$init, $elm$core$Task$onEffects, $elm$core$Task$onSelfMsg, $elm$core$Task$cmdMap); var $elm$core$Task$command = _Platform_leaf('Task'); var $elm$core$Task$perform = F2( function (toMessage, task) { return $elm$core$Task$command( - A2($elm$core$Task$map, toMessage, task)); + $elm$core$Task$Perform( + A2($elm$core$Task$map, toMessage, task))); }); var $elm$browser$Browser$application = _Browser_application; -var $author$project$Main$Model = F4( - function (key, url, player, error) { - return {E: error, _: key, F: player, G: url}; +var $author$project$Main$GroupLoot = {$: 'GroupLoot'}; +var $author$project$Main$Model = F6( + function (key, route, player, loot, groupLoot, error) { + return {error: error, groupLoot: groupLoot, key: key, loot: loot, player: player, route: route}; }); -var $author$project$Main$Player = F3( - function (name, debt, wealth) { - return {J: debt, ab: name, aw: wealth}; +var $author$project$Main$Player = F4( + function (id, name, debt, wealth) { + return {debt: debt, id: id, name: name, wealth: wealth}; }); var $author$project$Main$Wealth = F4( function (cp, sp, gp, pp) { - return {S: cp, X: gp, ag: pp, ar: sp}; + return {cp: cp, gp: gp, pp: pp, sp: sp}; }); -var $author$project$Main$blankPlayer = A3( +var $author$project$Main$blankPlayer = A4( $author$project$Main$Player, + 0, 'Loading', 100, A4($author$project$Main$Wealth, 0, 0, 0, 0)); -var $author$project$Main$GotPlayer = function (a) { - return {$: 3, a: a}; +var $elm$core$Platform$Cmd$batch = _Platform_batch; +var $author$project$Main$GotLoot = function (a) { + return {$: 'GotLoot', a: a}; }; var $elm$json$Json$Decode$decodeString = _Json_runOnString; var $elm$http$Http$BadStatus_ = F2( function (a, b) { - return {$: 3, a: a, b: b}; + return {$: 'BadStatus_', a: a, b: b}; }); var $elm$http$Http$BadUrl_ = function (a) { - return {$: 0, a: a}; + return {$: 'BadUrl_', a: a}; }; var $elm$http$Http$GoodStatus_ = F2( function (a, b) { - return {$: 4, a: a, b: b}; + return {$: 'GoodStatus_', a: a, b: b}; }); -var $elm$http$Http$NetworkError_ = {$: 2}; +var $elm$http$Http$NetworkError_ = {$: 'NetworkError_'}; var $elm$http$Http$Receiving = function (a) { - return {$: 1, a: a}; + return {$: 'Receiving', a: a}; }; var $elm$http$Http$Sending = function (a) { - return {$: 0, a: a}; + return {$: 'Sending', a: a}; }; -var $elm$http$Http$Timeout_ = {$: 1}; -var $elm$core$Dict$RBEmpty_elm_builtin = {$: -2}; +var $elm$http$Http$Timeout_ = {$: 'Timeout_'}; +var $elm$core$Dict$RBEmpty_elm_builtin = {$: 'RBEmpty_elm_builtin'}; var $elm$core$Dict$empty = $elm$core$Dict$RBEmpty_elm_builtin; var $elm$core$Maybe$isJust = function (maybe) { - if (!maybe.$) { + if (maybe.$ === 'Just') { return true; } else { return false; @@ -5329,7 +5355,7 @@ var $elm$core$Dict$get = F2( function (targetKey, dict) { get: while (true) { - if (dict.$ === -2) { + if (dict.$ === 'RBEmpty_elm_builtin') { return $elm$core$Maybe$Nothing; } else { var key = dict.b; @@ -5337,14 +5363,14 @@ var $elm$core$Dict$get = F2( var left = dict.d; var right = dict.e; var _v1 = A2($elm$core$Basics$compare, targetKey, key); - switch (_v1) { - case 0: + switch (_v1.$) { + case 'LT': var $temp$targetKey = targetKey, $temp$dict = left; targetKey = $temp$targetKey; dict = $temp$dict; continue get; - case 1: + case 'EQ': return $elm$core$Maybe$Just(value); default: var $temp$targetKey = targetKey, @@ -5356,21 +5382,21 @@ var $elm$core$Dict$get = F2( } } }); -var $elm$core$Dict$Black = 1; +var $elm$core$Dict$Black = {$: 'Black'}; var $elm$core$Dict$RBNode_elm_builtin = F5( function (a, b, c, d, e) { - return {$: -1, a: a, b: b, c: c, d: d, e: e}; + return {$: 'RBNode_elm_builtin', a: a, b: b, c: c, d: d, e: e}; }); -var $elm$core$Dict$Red = 0; +var $elm$core$Dict$Red = {$: 'Red'}; var $elm$core$Dict$balance = F5( function (color, key, value, left, right) { - if ((right.$ === -1) && (!right.a)) { + if ((right.$ === 'RBNode_elm_builtin') && (right.a.$ === 'Red')) { var _v1 = right.a; var rK = right.b; var rV = right.c; var rLeft = right.d; var rRight = right.e; - if ((left.$ === -1) && (!left.a)) { + if ((left.$ === 'RBNode_elm_builtin') && (left.a.$ === 'Red')) { var _v3 = left.a; var lK = left.b; var lV = left.c; @@ -5378,22 +5404,22 @@ var $elm$core$Dict$balance = F5( var lRight = left.e; return A5( $elm$core$Dict$RBNode_elm_builtin, - 0, + $elm$core$Dict$Red, key, value, - A5($elm$core$Dict$RBNode_elm_builtin, 1, lK, lV, lLeft, lRight), - A5($elm$core$Dict$RBNode_elm_builtin, 1, rK, rV, rLeft, rRight)); + A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, lK, lV, lLeft, lRight), + A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, rK, rV, rLeft, rRight)); } else { return A5( $elm$core$Dict$RBNode_elm_builtin, color, rK, rV, - A5($elm$core$Dict$RBNode_elm_builtin, 0, key, value, left, rLeft), + A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, key, value, left, rLeft), rRight); } } else { - if ((((left.$ === -1) && (!left.a)) && (left.d.$ === -1)) && (!left.d.a)) { + if ((((left.$ === 'RBNode_elm_builtin') && (left.a.$ === 'Red')) && (left.d.$ === 'RBNode_elm_builtin')) && (left.d.a.$ === 'Red')) { var _v5 = left.a; var lK = left.b; var lV = left.c; @@ -5406,11 +5432,11 @@ var $elm$core$Dict$balance = F5( var lRight = left.e; return A5( $elm$core$Dict$RBNode_elm_builtin, - 0, + $elm$core$Dict$Red, lK, lV, - A5($elm$core$Dict$RBNode_elm_builtin, 1, llK, llV, llLeft, llRight), - A5($elm$core$Dict$RBNode_elm_builtin, 1, key, value, lRight, right)); + A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, llK, llV, llLeft, llRight), + A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, key, value, lRight, right)); } else { return A5($elm$core$Dict$RBNode_elm_builtin, color, key, value, left, right); } @@ -5418,8 +5444,8 @@ var $elm$core$Dict$balance = F5( }); var $elm$core$Dict$insertHelp = F3( function (key, value, dict) { - if (dict.$ === -2) { - return A5($elm$core$Dict$RBNode_elm_builtin, 0, key, value, $elm$core$Dict$RBEmpty_elm_builtin, $elm$core$Dict$RBEmpty_elm_builtin); + if (dict.$ === 'RBEmpty_elm_builtin') { + return A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, key, value, $elm$core$Dict$RBEmpty_elm_builtin, $elm$core$Dict$RBEmpty_elm_builtin); } else { var nColor = dict.a; var nKey = dict.b; @@ -5427,8 +5453,8 @@ var $elm$core$Dict$insertHelp = F3( var nLeft = dict.d; var nRight = dict.e; var _v1 = A2($elm$core$Basics$compare, key, nKey); - switch (_v1) { - case 0: + switch (_v1.$) { + case 'LT': return A5( $elm$core$Dict$balance, nColor, @@ -5436,7 +5462,7 @@ var $elm$core$Dict$insertHelp = F3( nValue, A3($elm$core$Dict$insertHelp, key, value, nLeft), nRight); - case 1: + case 'EQ': return A5($elm$core$Dict$RBNode_elm_builtin, nColor, nKey, value, nLeft, nRight); default: return A5( @@ -5452,13 +5478,13 @@ var $elm$core$Dict$insertHelp = F3( var $elm$core$Dict$insert = F3( function (key, value, dict) { var _v0 = A3($elm$core$Dict$insertHelp, key, value, dict); - if ((_v0.$ === -1) && (!_v0.a)) { + if ((_v0.$ === 'RBNode_elm_builtin') && (_v0.a.$ === 'Red')) { var _v1 = _v0.a; var k = _v0.b; var v = _v0.c; var l = _v0.d; var r = _v0.e; - return A5($elm$core$Dict$RBNode_elm_builtin, 1, k, v, l, r); + return A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, k, v, l, r); } else { var x = _v0; return x; @@ -5467,7 +5493,7 @@ var $elm$core$Dict$insert = F3( var $elm$core$Dict$getMin = function (dict) { getMin: while (true) { - if ((dict.$ === -1) && (dict.d.$ === -1)) { + if ((dict.$ === 'RBNode_elm_builtin') && (dict.d.$ === 'RBNode_elm_builtin')) { var left = dict.d; var $temp$dict = left; dict = $temp$dict; @@ -5478,8 +5504,8 @@ var $elm$core$Dict$getMin = function (dict) { } }; var $elm$core$Dict$moveRedLeft = function (dict) { - if (((dict.$ === -1) && (dict.d.$ === -1)) && (dict.e.$ === -1)) { - if ((dict.e.d.$ === -1) && (!dict.e.d.a)) { + if (((dict.$ === 'RBNode_elm_builtin') && (dict.d.$ === 'RBNode_elm_builtin')) && (dict.e.$ === 'RBNode_elm_builtin')) { + if ((dict.e.d.$ === 'RBNode_elm_builtin') && (dict.e.d.a.$ === 'Red')) { var clr = dict.a; var k = dict.b; var v = dict.c; @@ -5502,17 +5528,17 @@ var $elm$core$Dict$moveRedLeft = function (dict) { var rRight = _v2.e; return A5( $elm$core$Dict$RBNode_elm_builtin, - 0, + $elm$core$Dict$Red, rlK, rlV, A5( $elm$core$Dict$RBNode_elm_builtin, - 1, + $elm$core$Dict$Black, k, v, - A5($elm$core$Dict$RBNode_elm_builtin, 0, lK, lV, lLeft, lRight), + A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, lK, lV, lLeft, lRight), rlL), - A5($elm$core$Dict$RBNode_elm_builtin, 1, rK, rV, rlR, rRight)); + A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, rK, rV, rlR, rRight)); } else { var clr = dict.a; var k = dict.b; @@ -5529,22 +5555,22 @@ var $elm$core$Dict$moveRedLeft = function (dict) { var rV = _v5.c; var rLeft = _v5.d; var rRight = _v5.e; - if (clr === 1) { + if (clr.$ === 'Black') { return A5( $elm$core$Dict$RBNode_elm_builtin, - 1, + $elm$core$Dict$Black, k, v, - A5($elm$core$Dict$RBNode_elm_builtin, 0, lK, lV, lLeft, lRight), - A5($elm$core$Dict$RBNode_elm_builtin, 0, rK, rV, rLeft, rRight)); + A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, lK, lV, lLeft, lRight), + A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, rK, rV, rLeft, rRight)); } else { return A5( $elm$core$Dict$RBNode_elm_builtin, - 1, + $elm$core$Dict$Black, k, v, - A5($elm$core$Dict$RBNode_elm_builtin, 0, lK, lV, lLeft, lRight), - A5($elm$core$Dict$RBNode_elm_builtin, 0, rK, rV, rLeft, rRight)); + A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, lK, lV, lLeft, lRight), + A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, rK, rV, rLeft, rRight)); } } } else { @@ -5552,8 +5578,8 @@ var $elm$core$Dict$moveRedLeft = function (dict) { } }; var $elm$core$Dict$moveRedRight = function (dict) { - if (((dict.$ === -1) && (dict.d.$ === -1)) && (dict.e.$ === -1)) { - if ((dict.d.d.$ === -1) && (!dict.d.d.a)) { + if (((dict.$ === 'RBNode_elm_builtin') && (dict.d.$ === 'RBNode_elm_builtin')) && (dict.e.$ === 'RBNode_elm_builtin')) { + if ((dict.d.d.$ === 'RBNode_elm_builtin') && (dict.d.d.a.$ === 'Red')) { var clr = dict.a; var k = dict.b; var v = dict.c; @@ -5576,17 +5602,17 @@ var $elm$core$Dict$moveRedRight = function (dict) { var rRight = _v4.e; return A5( $elm$core$Dict$RBNode_elm_builtin, - 0, + $elm$core$Dict$Red, lK, lV, - A5($elm$core$Dict$RBNode_elm_builtin, 1, llK, llV, llLeft, llRight), + A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, llK, llV, llLeft, llRight), A5( $elm$core$Dict$RBNode_elm_builtin, - 1, + $elm$core$Dict$Black, k, v, lRight, - A5($elm$core$Dict$RBNode_elm_builtin, 0, rK, rV, rLeft, rRight))); + A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, rK, rV, rLeft, rRight))); } else { var clr = dict.a; var k = dict.b; @@ -5603,22 +5629,22 @@ var $elm$core$Dict$moveRedRight = function (dict) { var rV = _v6.c; var rLeft = _v6.d; var rRight = _v6.e; - if (clr === 1) { + if (clr.$ === 'Black') { return A5( $elm$core$Dict$RBNode_elm_builtin, - 1, + $elm$core$Dict$Black, k, v, - A5($elm$core$Dict$RBNode_elm_builtin, 0, lK, lV, lLeft, lRight), - A5($elm$core$Dict$RBNode_elm_builtin, 0, rK, rV, rLeft, rRight)); + A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, lK, lV, lLeft, lRight), + A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, rK, rV, rLeft, rRight)); } else { return A5( $elm$core$Dict$RBNode_elm_builtin, - 1, + $elm$core$Dict$Black, k, v, - A5($elm$core$Dict$RBNode_elm_builtin, 0, lK, lV, lLeft, lRight), - A5($elm$core$Dict$RBNode_elm_builtin, 0, rK, rV, rLeft, rRight)); + A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, lK, lV, lLeft, lRight), + A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, rK, rV, rLeft, rRight)); } } } else { @@ -5627,7 +5653,7 @@ var $elm$core$Dict$moveRedRight = function (dict) { }; var $elm$core$Dict$removeHelpPrepEQGT = F7( function (targetKey, dict, color, key, value, left, right) { - if ((left.$ === -1) && (!left.a)) { + if ((left.$ === 'RBNode_elm_builtin') && (left.a.$ === 'Red')) { var _v1 = left.a; var lK = left.b; var lV = left.c; @@ -5639,13 +5665,13 @@ var $elm$core$Dict$removeHelpPrepEQGT = F7( lK, lV, lLeft, - A5($elm$core$Dict$RBNode_elm_builtin, 0, key, value, lRight, right)); + A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, key, value, lRight, right)); } else { _v2$2: while (true) { - if ((right.$ === -1) && (right.a === 1)) { - if (right.d.$ === -1) { - if (right.d.a === 1) { + if ((right.$ === 'RBNode_elm_builtin') && (right.a.$ === 'Black')) { + if (right.d.$ === 'RBNode_elm_builtin') { + if (right.d.a.$ === 'Black') { var _v3 = right.a; var _v4 = right.d; var _v5 = _v4.a; @@ -5666,7 +5692,7 @@ var $elm$core$Dict$removeHelpPrepEQGT = F7( } }); var $elm$core$Dict$removeMin = function (dict) { - if ((dict.$ === -1) && (dict.d.$ === -1)) { + if ((dict.$ === 'RBNode_elm_builtin') && (dict.d.$ === 'RBNode_elm_builtin')) { var color = dict.a; var key = dict.b; var value = dict.c; @@ -5674,8 +5700,8 @@ var $elm$core$Dict$removeMin = function (dict) { var lColor = left.a; var lLeft = left.d; var right = dict.e; - if (lColor === 1) { - if ((lLeft.$ === -1) && (!lLeft.a)) { + if (lColor.$ === 'Black') { + if ((lLeft.$ === 'RBNode_elm_builtin') && (lLeft.a.$ === 'Red')) { var _v3 = lLeft.a; return A5( $elm$core$Dict$RBNode_elm_builtin, @@ -5686,7 +5712,7 @@ var $elm$core$Dict$removeMin = function (dict) { right); } else { var _v4 = $elm$core$Dict$moveRedLeft(dict); - if (_v4.$ === -1) { + if (_v4.$ === 'RBNode_elm_builtin') { var nColor = _v4.a; var nKey = _v4.b; var nValue = _v4.c; @@ -5718,7 +5744,7 @@ var $elm$core$Dict$removeMin = function (dict) { }; var $elm$core$Dict$removeHelp = F2( function (targetKey, dict) { - if (dict.$ === -2) { + if (dict.$ === 'RBEmpty_elm_builtin') { return $elm$core$Dict$RBEmpty_elm_builtin; } else { var color = dict.a; @@ -5727,10 +5753,10 @@ var $elm$core$Dict$removeHelp = F2( var left = dict.d; var right = dict.e; if (_Utils_cmp(targetKey, key) < 0) { - if ((left.$ === -1) && (left.a === 1)) { + if ((left.$ === 'RBNode_elm_builtin') && (left.a.$ === 'Black')) { var _v4 = left.a; var lLeft = left.d; - if ((lLeft.$ === -1) && (!lLeft.a)) { + if ((lLeft.$ === 'RBNode_elm_builtin') && (lLeft.a.$ === 'Red')) { var _v6 = lLeft.a; return A5( $elm$core$Dict$RBNode_elm_builtin, @@ -5741,7 +5767,7 @@ var $elm$core$Dict$removeHelp = F2( right); } else { var _v7 = $elm$core$Dict$moveRedLeft(dict); - if (_v7.$ === -1) { + if (_v7.$ === 'RBNode_elm_builtin') { var nColor = _v7.a; var nKey = _v7.b; var nValue = _v7.c; @@ -5777,7 +5803,7 @@ var $elm$core$Dict$removeHelp = F2( }); var $elm$core$Dict$removeHelpEQGT = F2( function (targetKey, dict) { - if (dict.$ === -1) { + if (dict.$ === 'RBNode_elm_builtin') { var color = dict.a; var key = dict.b; var value = dict.c; @@ -5785,7 +5811,7 @@ var $elm$core$Dict$removeHelpEQGT = F2( var right = dict.e; if (_Utils_eq(targetKey, key)) { var _v1 = $elm$core$Dict$getMin(right); - if (_v1.$ === -1) { + if (_v1.$ === 'RBNode_elm_builtin') { var minKey = _v1.b; var minValue = _v1.c; return A5( @@ -5814,13 +5840,13 @@ var $elm$core$Dict$removeHelpEQGT = F2( var $elm$core$Dict$remove = F2( function (key, dict) { var _v0 = A2($elm$core$Dict$removeHelp, key, dict); - if ((_v0.$ === -1) && (!_v0.a)) { + if ((_v0.$ === 'RBNode_elm_builtin') && (_v0.a.$ === 'Red')) { var _v1 = _v0.a; var k = _v0.b; var v = _v0.c; var l = _v0.d; var r = _v0.e; - return A5($elm$core$Dict$RBNode_elm_builtin, 1, k, v, l, r); + return A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, k, v, l, r); } else { var x = _v0; return x; @@ -5830,7 +5856,7 @@ var $elm$core$Dict$update = F3( function (targetKey, alter, dictionary) { var _v0 = alter( A2($elm$core$Dict$get, targetKey, dictionary)); - if (!_v0.$) { + if (_v0.$ === 'Just') { var value = _v0.a; return A3($elm$core$Dict$insert, targetKey, value, dictionary); } else { @@ -5852,7 +5878,7 @@ var $elm$http$Http$expectStringResponse = F2( }); var $elm$core$Result$mapError = F2( function (f, result) { - if (!result.$) { + if (result.$ === 'Ok') { var v = result.a; return $elm$core$Result$Ok(v); } else { @@ -5862,31 +5888,31 @@ var $elm$core$Result$mapError = F2( } }); var $elm$http$Http$BadBody = function (a) { - return {$: 4, a: a}; + return {$: 'BadBody', a: a}; }; var $elm$http$Http$BadStatus = function (a) { - return {$: 3, a: a}; + return {$: 'BadStatus', a: a}; }; var $elm$http$Http$BadUrl = function (a) { - return {$: 0, a: a}; + return {$: 'BadUrl', a: a}; }; -var $elm$http$Http$NetworkError = {$: 2}; -var $elm$http$Http$Timeout = {$: 1}; +var $elm$http$Http$NetworkError = {$: 'NetworkError'}; +var $elm$http$Http$Timeout = {$: 'Timeout'}; var $elm$http$Http$resolve = F2( function (toResult, response) { switch (response.$) { - case 0: + case 'BadUrl_': var url = response.a; return $elm$core$Result$Err( $elm$http$Http$BadUrl(url)); - case 1: + case 'Timeout_': return $elm$core$Result$Err($elm$http$Http$Timeout); - case 2: + case 'NetworkError_': return $elm$core$Result$Err($elm$http$Http$NetworkError); - case 3: + case 'BadStatus_': var metadata = response.a; return $elm$core$Result$Err( - $elm$http$Http$BadStatus(metadata.aP)); + $elm$http$Http$BadStatus(metadata.statusCode)); default: var body = response.b; return A2( @@ -5910,11 +5936,11 @@ var $elm$http$Http$expectJson = F2( }); var $elm$http$Http$emptyBody = _Http_emptyBody; var $elm$http$Http$Request = function (a) { - return {$: 1, a: a}; + return {$: 'Request', a: a}; }; var $elm$http$Http$State = F2( function (reqs, subs) { - return {am: reqs, as: subs}; + return {reqs: reqs, subs: subs}; }); var $elm$http$Http$init = $elm$core$Task$succeed( A2($elm$http$Http$State, $elm$core$Dict$empty, _List_Nil)); @@ -5929,10 +5955,10 @@ var $elm$http$Http$updateReqs = F3( } else { var cmd = cmds.a; var otherCmds = cmds.b; - if (!cmd.$) { + if (cmd.$ === 'Cancel') { var tracker = cmd.a; var _v2 = A2($elm$core$Dict$get, tracker, reqs); - if (_v2.$ === 1) { + if (_v2.$ === 'Nothing') { var $temp$router = router, $temp$cmds = otherCmds, $temp$reqs = reqs; @@ -5958,8 +5984,8 @@ var $elm$http$Http$updateReqs = F3( return A2( $elm$core$Task$andThen, function (pid) { - var _v4 = req.au; - if (_v4.$ === 1) { + var _v4 = req.tracker; + if (_v4.$ === 'Nothing') { return A3($elm$http$Http$updateReqs, router, otherCmds, reqs); } else { var tracker = _v4.a; @@ -5988,12 +6014,12 @@ var $elm$http$Http$onEffects = F4( return $elm$core$Task$succeed( A2($elm$http$Http$State, reqs, subs)); }, - A3($elm$http$Http$updateReqs, router, cmds, state.am)); + A3($elm$http$Http$updateReqs, router, cmds, state.reqs)); }); var $elm$core$List$maybeCons = F3( function (f, mx, xs) { var _v0 = f(mx); - if (!_v0.$) { + if (_v0.$ === 'Just') { var x = _v0.a; return A2($elm$core$List$cons, x, xs); } else { @@ -6031,34 +6057,34 @@ var $elm$http$Http$onSelfMsg = F3( A2( $elm$core$List$filterMap, A3($elm$http$Http$maybeSend, router, tracker, progress), - state.as))); + state.subs))); }); var $elm$http$Http$Cancel = function (a) { - return {$: 0, a: a}; + return {$: 'Cancel', a: a}; }; var $elm$http$Http$cmdMap = F2( function (func, cmd) { - if (!cmd.$) { + if (cmd.$ === 'Cancel') { var tracker = cmd.a; return $elm$http$Http$Cancel(tracker); } else { var r = cmd.a; return $elm$http$Http$Request( { - ay: r.ay, - aA: r.aA, - aD: A2(_Http_mapExpect, func, r.aD), - Y: r.Y, - aI: r.aI, - aS: r.aS, - au: r.au, - G: r.G + allowCookiesFromOtherDomains: r.allowCookiesFromOtherDomains, + body: r.body, + expect: A2(_Http_mapExpect, func, r.expect), + headers: r.headers, + method: r.method, + timeout: r.timeout, + tracker: r.tracker, + url: r.url }); } }); var $elm$http$Http$MySub = F2( function (a, b) { - return {$: 0, a: a, b: b}; + return {$: 'MySub', a: a, b: b}; }); var $elm$http$Http$subMap = F2( function (func, _v0) { @@ -6075,69 +6101,333 @@ var $elm$http$Http$subscription = _Platform_leaf('Http'); var $elm$http$Http$request = function (r) { return $elm$http$Http$command( $elm$http$Http$Request( - {ay: false, aA: r.aA, aD: r.aD, Y: r.Y, aI: r.aI, aS: r.aS, au: r.au, G: r.G})); + {allowCookiesFromOtherDomains: false, body: r.body, expect: r.expect, headers: r.headers, method: r.method, timeout: r.timeout, tracker: r.tracker, url: r.url})); }; var $elm$http$Http$get = function (r) { return $elm$http$Http$request( - {aA: $elm$http$Http$emptyBody, aD: r.aD, Y: _List_Nil, aI: 'GET', aS: $elm$core$Maybe$Nothing, au: $elm$core$Maybe$Nothing, G: r.G}); + {body: $elm$http$Http$emptyBody, expect: r.expect, headers: _List_Nil, method: 'GET', timeout: $elm$core$Maybe$Nothing, tracker: $elm$core$Maybe$Nothing, url: r.url}); }; +var $author$project$Main$Item = F3( + function (id, name, base_price) { + return {base_price: base_price, id: id, name: name}; + }); var $elm$json$Json$Decode$field = _Json_decodeField; var $elm$json$Json$Decode$int = _Json_decodeInt; var $elm$json$Json$Decode$map3 = _Json_map3; -var $elm$json$Json$Decode$map4 = _Json_map4; var $elm$json$Json$Decode$string = _Json_decodeString; -var $author$project$Main$playerDecoder = A4( +var $author$project$Main$itemDecoder = A4( $elm$json$Json$Decode$map3, + $author$project$Main$Item, + A2($elm$json$Json$Decode$field, 'id', $elm$json$Json$Decode$int), + A2($elm$json$Json$Decode$field, 'name', $elm$json$Json$Decode$string), + A2($elm$json$Json$Decode$field, 'base_price', $elm$json$Json$Decode$int)); +var $elm$json$Json$Decode$list = _Json_decodeList; +var $author$project$Main$lootDecoder = $elm$json$Json$Decode$list($author$project$Main$itemDecoder); +var $author$project$Main$valueDecoder = function (thenDecoder) { + return A2($elm$json$Json$Decode$field, 'value', thenDecoder); +}; +var $author$project$Main$fetchLoot = function (id) { + return $elm$http$Http$get( + { + expect: A2( + $elm$http$Http$expectJson, + $author$project$Main$GotLoot, + $author$project$Main$valueDecoder($author$project$Main$lootDecoder)), + url: 'http://localhost:8088/api/players/' + ($elm$core$String$fromInt(id) + '/loot') + }); +}; +var $author$project$Main$GotPlayer = function (a) { + return {$: 'GotPlayer', a: a}; +}; +var $elm$json$Json$Decode$map4 = _Json_map4; +var $author$project$Main$wealthDecoder = A5( + $elm$json$Json$Decode$map4, + $author$project$Main$Wealth, + A2($elm$json$Json$Decode$field, 'cp', $elm$json$Json$Decode$int), + A2($elm$json$Json$Decode$field, 'sp', $elm$json$Json$Decode$int), + A2($elm$json$Json$Decode$field, 'gp', $elm$json$Json$Decode$int), + A2($elm$json$Json$Decode$field, 'pp', $elm$json$Json$Decode$int)); +var $author$project$Main$playerDecoder = A5( + $elm$json$Json$Decode$map4, $author$project$Main$Player, - A2( - $elm$json$Json$Decode$field, - 'value', - A2($elm$json$Json$Decode$field, 'name', $elm$json$Json$Decode$string)), - A2( - $elm$json$Json$Decode$field, - 'value', - A2($elm$json$Json$Decode$field, 'debt', $elm$json$Json$Decode$int)), - A5( - $elm$json$Json$Decode$map4, - $author$project$Main$Wealth, - A2( - $elm$json$Json$Decode$field, - 'value', - A2($elm$json$Json$Decode$field, 'cp', $elm$json$Json$Decode$int)), - A2( - $elm$json$Json$Decode$field, - 'value', - A2($elm$json$Json$Decode$field, 'sp', $elm$json$Json$Decode$int)), - A2( - $elm$json$Json$Decode$field, - 'value', - A2($elm$json$Json$Decode$field, 'gp', $elm$json$Json$Decode$int)), - A2( - $elm$json$Json$Decode$field, - 'value', - A2($elm$json$Json$Decode$field, 'pp', $elm$json$Json$Decode$int)))); + A2($elm$json$Json$Decode$field, 'id', $elm$json$Json$Decode$int), + A2($elm$json$Json$Decode$field, 'name', $elm$json$Json$Decode$string), + A2($elm$json$Json$Decode$field, 'debt', $elm$json$Json$Decode$int), + $author$project$Main$wealthDecoder); var $author$project$Main$fetchPlayer = function (id) { return $elm$http$Http$get( { - aD: A2($elm$http$Http$expectJson, $author$project$Main$GotPlayer, $author$project$Main$playerDecoder), - G: 'http://localhost:8088/api/players/' + ($elm$core$String$fromInt(id) + '/') + expect: A2( + $elm$http$Http$expectJson, + $author$project$Main$GotPlayer, + $author$project$Main$valueDecoder($author$project$Main$playerDecoder)), + url: 'http://localhost:8088/api/players/' + ($elm$core$String$fromInt(id) + '/') }); }; +var $author$project$Main$initPlayer = function (id) { + return $elm$core$Platform$Cmd$batch( + _List_fromArray( + [ + $author$project$Main$fetchPlayer(id), + $author$project$Main$fetchLoot(id) + ])); +}; +var $elm$url$Url$Parser$State = F5( + function (visited, unvisited, params, frag, value) { + return {frag: frag, params: params, unvisited: unvisited, value: value, visited: visited}; + }); +var $elm$url$Url$Parser$getFirstMatch = function (states) { + getFirstMatch: + while (true) { + if (!states.b) { + return $elm$core$Maybe$Nothing; + } else { + var state = states.a; + var rest = states.b; + var _v1 = state.unvisited; + if (!_v1.b) { + return $elm$core$Maybe$Just(state.value); + } else { + if ((_v1.a === '') && (!_v1.b.b)) { + return $elm$core$Maybe$Just(state.value); + } else { + var $temp$states = rest; + states = $temp$states; + continue getFirstMatch; + } + } + } + } +}; +var $elm$url$Url$Parser$removeFinalEmpty = function (segments) { + if (!segments.b) { + return _List_Nil; + } else { + if ((segments.a === '') && (!segments.b.b)) { + return _List_Nil; + } else { + var segment = segments.a; + var rest = segments.b; + return A2( + $elm$core$List$cons, + segment, + $elm$url$Url$Parser$removeFinalEmpty(rest)); + } + } +}; +var $elm$url$Url$Parser$preparePath = function (path) { + var _v0 = A2($elm$core$String$split, '/', path); + if (_v0.b && (_v0.a === '')) { + var segments = _v0.b; + return $elm$url$Url$Parser$removeFinalEmpty(segments); + } else { + var segments = _v0; + return $elm$url$Url$Parser$removeFinalEmpty(segments); + } +}; +var $elm$url$Url$Parser$addToParametersHelp = F2( + function (value, maybeList) { + if (maybeList.$ === 'Nothing') { + return $elm$core$Maybe$Just( + _List_fromArray( + [value])); + } else { + var list = maybeList.a; + return $elm$core$Maybe$Just( + A2($elm$core$List$cons, value, list)); + } + }); +var $elm$url$Url$percentDecode = _Url_percentDecode; +var $elm$url$Url$Parser$addParam = F2( + function (segment, dict) { + var _v0 = A2($elm$core$String$split, '=', segment); + if ((_v0.b && _v0.b.b) && (!_v0.b.b.b)) { + var rawKey = _v0.a; + var _v1 = _v0.b; + var rawValue = _v1.a; + var _v2 = $elm$url$Url$percentDecode(rawKey); + if (_v2.$ === 'Nothing') { + return dict; + } else { + var key = _v2.a; + var _v3 = $elm$url$Url$percentDecode(rawValue); + if (_v3.$ === 'Nothing') { + return dict; + } else { + var value = _v3.a; + return A3( + $elm$core$Dict$update, + key, + $elm$url$Url$Parser$addToParametersHelp(value), + dict); + } + } + } else { + return dict; + } + }); +var $elm$url$Url$Parser$prepareQuery = function (maybeQuery) { + if (maybeQuery.$ === 'Nothing') { + return $elm$core$Dict$empty; + } else { + var qry = maybeQuery.a; + return A3( + $elm$core$List$foldr, + $elm$url$Url$Parser$addParam, + $elm$core$Dict$empty, + A2($elm$core$String$split, '&', qry)); + } +}; +var $elm$url$Url$Parser$parse = F2( + function (_v0, url) { + var parser = _v0.a; + return $elm$url$Url$Parser$getFirstMatch( + parser( + A5( + $elm$url$Url$Parser$State, + _List_Nil, + $elm$url$Url$Parser$preparePath(url.path), + $elm$url$Url$Parser$prepareQuery(url.query), + url.fragment, + $elm$core$Basics$identity))); + }); +var $author$project$Main$Merchant = {$: 'Merchant'}; +var $author$project$Main$NewLoot = {$: 'NewLoot'}; +var $author$project$Main$PlayerChest = {$: 'PlayerChest'}; +var $elm$url$Url$Parser$Parser = function (a) { + return {$: 'Parser', a: a}; +}; +var $elm$url$Url$Parser$mapState = F2( + function (func, _v0) { + var visited = _v0.visited; + var unvisited = _v0.unvisited; + var params = _v0.params; + var frag = _v0.frag; + var value = _v0.value; + return A5( + $elm$url$Url$Parser$State, + visited, + unvisited, + params, + frag, + func(value)); + }); +var $elm$url$Url$Parser$map = F2( + function (subValue, _v0) { + var parseArg = _v0.a; + return $elm$url$Url$Parser$Parser( + function (_v1) { + var visited = _v1.visited; + var unvisited = _v1.unvisited; + var params = _v1.params; + var frag = _v1.frag; + var value = _v1.value; + return A2( + $elm$core$List$map, + $elm$url$Url$Parser$mapState(value), + parseArg( + A5($elm$url$Url$Parser$State, visited, unvisited, params, frag, subValue))); + }); + }); +var $elm$core$List$append = F2( + function (xs, ys) { + if (!ys.b) { + return xs; + } else { + return A3($elm$core$List$foldr, $elm$core$List$cons, ys, xs); + } + }); +var $elm$core$List$concat = function (lists) { + return A3($elm$core$List$foldr, $elm$core$List$append, _List_Nil, lists); +}; +var $elm$core$List$concatMap = F2( + function (f, list) { + return $elm$core$List$concat( + A2($elm$core$List$map, f, list)); + }); +var $elm$url$Url$Parser$oneOf = function (parsers) { + return $elm$url$Url$Parser$Parser( + function (state) { + return A2( + $elm$core$List$concatMap, + function (_v0) { + var parser = _v0.a; + return parser(state); + }, + parsers); + }); +}; +var $elm$url$Url$Parser$s = function (str) { + return $elm$url$Url$Parser$Parser( + function (_v0) { + var visited = _v0.visited; + var unvisited = _v0.unvisited; + var params = _v0.params; + var frag = _v0.frag; + var value = _v0.value; + if (!unvisited.b) { + return _List_Nil; + } else { + var next = unvisited.a; + var rest = unvisited.b; + return _Utils_eq(next, str) ? _List_fromArray( + [ + A5( + $elm$url$Url$Parser$State, + A2($elm$core$List$cons, next, visited), + rest, + params, + frag, + value) + ]) : _List_Nil; + } + }); +}; +var $elm$url$Url$Parser$top = $elm$url$Url$Parser$Parser( + function (state) { + return _List_fromArray( + [state]); + }); +var $author$project$Main$routeParser = $elm$url$Url$Parser$oneOf( + _List_fromArray( + [ + A2($elm$url$Url$Parser$map, $author$project$Main$GroupLoot, $elm$url$Url$Parser$top), + A2( + $elm$url$Url$Parser$map, + $author$project$Main$PlayerChest, + $elm$url$Url$Parser$s('coffre')), + A2( + $elm$url$Url$Parser$map, + $author$project$Main$Merchant, + $elm$url$Url$Parser$s('marchand')), + A2( + $elm$url$Url$Parser$map, + $author$project$Main$NewLoot, + $elm$url$Url$Parser$s('nouveau-tresor')) + ])); var $author$project$Main$init = F3( function (flags, url, key) { + var route = function () { + var _v0 = A2($elm$url$Url$Parser$parse, $author$project$Main$routeParser, url); + if (_v0.$ === 'Just') { + var r = _v0.a; + return r; + } else { + return $author$project$Main$GroupLoot; + } + }(); return _Utils_Tuple2( - A4($author$project$Main$Model, key, url, $author$project$Main$blankPlayer, ''), - $author$project$Main$fetchPlayer(0)); + A6($author$project$Main$Model, key, route, $author$project$Main$blankPlayer, $elm$core$Maybe$Nothing, $elm$core$Maybe$Nothing, ''), + $author$project$Main$initPlayer(0)); }); var $elm$core$Platform$Sub$batch = _Platform_batch; var $elm$core$Platform$Sub$none = $elm$core$Platform$Sub$batch(_List_Nil); var $author$project$Main$subscriptions = function (_v0) { return $elm$core$Platform$Sub$none; }; -var $elm$core$Platform$Cmd$batch = _Platform_batch; var $elm$core$Platform$Cmd$none = $elm$core$Platform$Cmd$batch(_List_Nil); var $author$project$Main$printError = function (error) { - if (error.$ === 2) { + if (error.$ === 'NetworkError') { return 'Le serveur ne répond pas'; } else { return 'Erreur inconnue'; @@ -6146,7 +6436,7 @@ var $author$project$Main$printError = function (error) { var $elm$browser$Browser$Navigation$pushUrl = _Browser_pushUrl; var $elm$url$Url$addPort = F2( function (maybePort, starter) { - if (maybePort.$ === 1) { + if (maybePort.$ === 'Nothing') { return starter; } else { var port_ = maybePort.a; @@ -6155,7 +6445,7 @@ var $elm$url$Url$addPort = F2( }); var $elm$url$Url$addPrefixed = F3( function (prefix, maybeSegment, starter) { - if (maybeSegment.$ === 1) { + if (maybeSegment.$ === 'Nothing') { return starter; } else { var segment = maybeSegment.a; @@ -6166,8 +6456,8 @@ var $elm$url$Url$addPrefixed = F3( }); var $elm$url$Url$toString = function (url) { var http = function () { - var _v0 = url.aj; - if (!_v0) { + var _v0 = url.protocol; + if (_v0.$ === 'Http') { return 'http://'; } else { return 'https://'; @@ -6176,59 +6466,78 @@ var $elm$url$Url$toString = function (url) { return A3( $elm$url$Url$addPrefixed, '#', - url.W, + url.fragment, A3( $elm$url$Url$addPrefixed, '?', - url.ak, + url.query, _Utils_ap( A2( $elm$url$Url$addPort, - url.af, - _Utils_ap(http, url.Z)), - url.ad))); + url.port_, + _Utils_ap(http, url.host)), + url.path))); }; var $author$project$Main$update = F2( function (msg, model) { switch (msg.$) { - case 0: + case 'LinkClicked': var urlRequest = msg.a; - if (!urlRequest.$) { + if (urlRequest.$ === 'Internal') { var url = urlRequest.a; return _Utils_Tuple2( model, A2( $elm$browser$Browser$Navigation$pushUrl, - model._, + model.key, $elm$url$Url$toString(url))); } else { var href = urlRequest.a; return _Utils_Tuple2( _Utils_update( model, - {E: 'Invalid request \'' + (href + '\'')}), + {error: 'Invalid request \'' + (href + '\'')}), $elm$core$Platform$Cmd$none); } - case 1: + case 'UrlChanged': var url = msg.a; + var route = A2($elm$url$Url$Parser$parse, $author$project$Main$routeParser, url); + if (route.$ === 'Just') { + var page = route.a; + return _Utils_Tuple2( + _Utils_update( + model, + {route: page}), + function () { + if (page.$ === 'GroupLoot') { + return $elm$core$Platform$Cmd$none; + } else { + var a = page; + return $elm$core$Platform$Cmd$none; + } + }()); + } else { + return _Utils_Tuple2( + _Utils_update( + model, + {error: 'Invalid route'}), + $elm$core$Platform$Cmd$none); + } + case 'PlayerChanged': + var newId = msg.a; return _Utils_Tuple2( _Utils_update( model, - {G: url}), - $elm$core$Platform$Cmd$none); - case 2: - var id = msg.a; - return _Utils_Tuple2( - model, - $author$project$Main$fetchPlayer(id)); - default: + {player: $author$project$Main$blankPlayer}), + $author$project$Main$initPlayer(newId)); + case 'GotPlayer': var result = msg.a; - if (!result.$) { + if (result.$ === 'Ok') { var player = result.a; return _Utils_Tuple2( _Utils_update( model, - {F: player}), + {player: player}), $elm$core$Platform$Cmd$none); } else { var error = result.a; @@ -6236,16 +6545,33 @@ var $author$project$Main$update = F2( _Utils_update( model, { - E: $author$project$Main$printError(error) + error: 'Fetching player... ' + $author$project$Main$printError(error) + }), + $elm$core$Platform$Cmd$none); + } + default: + var result = msg.a; + if (result.$ === 'Ok') { + var loot = result.a; + return _Utils_Tuple2( + _Utils_update( + model, + { + loot: $elm$core$Maybe$Just(loot) + }), + $elm$core$Platform$Cmd$none); + } else { + var error = result.a; + return _Utils_Tuple2( + _Utils_update( + model, + { + error: 'Fetching loot... ' + $author$project$Main$printError(error) }), $elm$core$Platform$Cmd$none); } } }); -var $elm$html$Html$p = _VirtualDom_node('p'); -var $elm$html$Html$section = _VirtualDom_node('section'); -var $elm$virtual_dom$VirtualDom$text = _VirtualDom_text; -var $elm$html$Html$text = $elm$virtual_dom$VirtualDom$text; var $elm$json$Json$Encode$string = _Json_wrap; var $elm$html$Html$Attributes$stringProperty = F2( function (key, string) { @@ -6255,13 +6581,17 @@ var $elm$html$Html$Attributes$stringProperty = F2( $elm$json$Json$Encode$string(string)); }); var $elm$html$Html$Attributes$class = $elm$html$Html$Attributes$stringProperty('className'); -var $author$project$Main$DebugSwitchPlayer = function (a) { - return {$: 2, a: a}; +var $elm$html$Html$p = _VirtualDom_node('p'); +var $elm$html$Html$section = _VirtualDom_node('section'); +var $elm$virtual_dom$VirtualDom$text = _VirtualDom_text; +var $elm$html$Html$text = $elm$virtual_dom$VirtualDom$text; +var $author$project$Main$PlayerChanged = function (a) { + return {$: 'PlayerChanged', a: a}; }; var $elm$html$Html$a = _VirtualDom_node('a'); var $elm$html$Html$div = _VirtualDom_node('div'); var $elm$virtual_dom$VirtualDom$Normal = function (a) { - return {$: 0, a: a}; + return {$: 'Normal', a: a}; }; var $elm$virtual_dom$VirtualDom$on = _VirtualDom_on; var $elm$html$Html$Events$on = F2( @@ -6290,7 +6620,7 @@ var $author$project$Main$debugSwitchPlayers = A2( _List_fromArray( [ $elm$html$Html$Events$onClick( - $author$project$Main$DebugSwitchPlayer(0)) + $author$project$Main$PlayerChanged(0)) ]), _List_fromArray( [ @@ -6301,7 +6631,7 @@ var $author$project$Main$debugSwitchPlayers = A2( _List_fromArray( [ $elm$html$Html$Events$onClick( - $author$project$Main$DebugSwitchPlayer(1)) + $author$project$Main$PlayerChanged(1)) ]), _List_fromArray( [ @@ -6312,13 +6642,14 @@ var $author$project$Main$debugSwitchPlayers = A2( _List_fromArray( [ $elm$html$Html$Events$onClick( - $author$project$Main$DebugSwitchPlayer(2)) + $author$project$Main$PlayerChanged(2)) ]), _List_fromArray( [ $elm$html$Html$text('Fefi') ])) ])); +var $elm$core$Debug$toString = _Debug_toString; var $author$project$Main$viewDebugSection = function (model) { return A2( $elm$html$Html$div, @@ -6343,22 +6674,22 @@ var $author$project$Main$viewDebugSection = function (model) { $elm$html$Html$p, _List_fromArray( [ - $elm$html$Html$Attributes$class('panel-block') + $elm$html$Html$Attributes$class('panel-block has-text-danger') ]), _List_fromArray( [ - $elm$html$Html$text( - 'URL :' + $elm$url$Url$toString(model.G)) + $elm$html$Html$text(model.error) ])), A2( $elm$html$Html$p, _List_fromArray( [ - $elm$html$Html$Attributes$class('panel-block has-text-danger') + $elm$html$Html$Attributes$class('panel-block') ]), _List_fromArray( [ - $elm$html$Html$text(model.E) + $elm$html$Html$text( + 'Route : ' + $elm$core$Debug$toString(model.route)) ])) ])); }; @@ -6404,7 +6735,7 @@ var $author$project$Main$viewHeaderBar = function (model) { ]), _List_fromArray( [ - $elm$html$Html$text(model.F.ab) + $elm$html$Html$text(model.player.name) ])), A2( $elm$html$Html$a, @@ -6458,7 +6789,7 @@ var $author$project$Main$viewHeaderBar = function (model) { _List_fromArray( [ $elm$html$Html$Attributes$class('navbar-item'), - $elm$html$Html$Attributes$href('#marchand') + $elm$html$Html$Attributes$href('/marchand') ]), _List_fromArray( [ @@ -6469,7 +6800,7 @@ var $author$project$Main$viewHeaderBar = function (model) { _List_fromArray( [ $elm$html$Html$Attributes$class('navbar-item'), - $elm$html$Html$Attributes$href('#coffre') + $elm$html$Html$Attributes$href('/coffre') ]), _List_fromArray( [ @@ -6479,6 +6810,39 @@ var $author$project$Main$viewHeaderBar = function (model) { ])) ])); }; +var $elm$html$Html$table = _VirtualDom_node('table'); +var $elm$html$Html$td = _VirtualDom_node('td'); +var $elm$html$Html$tr = _VirtualDom_node('tr'); +var $author$project$Main$viewItemTableRow = function (item) { + return A2( + $elm$html$Html$tr, + _List_fromArray( + [ + $elm$html$Html$Attributes$class('table') + ]), + _List_fromArray( + [ + A2( + $elm$html$Html$td, + _List_Nil, + _List_fromArray( + [ + A2( + $elm$html$Html$p, + _List_Nil, + _List_fromArray( + [ + $elm$html$Html$text(item.name) + ])) + ])) + ])); +}; +var $author$project$Main$viewLoot = function (items) { + return A2( + $elm$html$Html$table, + _List_Nil, + A2($elm$core$List$map, $author$project$Main$viewItemTableRow, items)); +}; var $elm$html$Html$i = _VirtualDom_node('i'); var $author$project$Main$showWealthField = F2( function (name, value) { @@ -6516,10 +6880,10 @@ var $author$project$Main$showWealthField = F2( var $author$project$Main$showWealth = function (wealth) { return _List_fromArray( [ - A2($author$project$Main$showWealthField, 'pp', wealth.ag), - A2($author$project$Main$showWealthField, 'gp', wealth.X), - A2($author$project$Main$showWealthField, 'sp', wealth.ar), - A2($author$project$Main$showWealthField, 'cp', wealth.S) + A2($author$project$Main$showWealthField, 'pp', wealth.pp), + A2($author$project$Main$showWealthField, 'gp', wealth.gp), + A2($author$project$Main$showWealthField, 'sp', wealth.sp), + A2($author$project$Main$showWealthField, 'cp', wealth.cp) ]); }; var $author$project$Main$viewPlayerWealth = function (player) { @@ -6577,9 +6941,9 @@ var $author$project$Main$viewPlayerWealth = function (player) { ])) ])) ]), - $author$project$Main$showWealth(player.aw))) + $author$project$Main$showWealth(player.wealth))) ]), - (player.J > 0) ? _List_fromArray( + (player.debt > 0) ? _List_fromArray( [ A2( $elm$html$Html$div, @@ -6606,7 +6970,7 @@ var $author$project$Main$viewPlayerWealth = function (player) { _List_fromArray( [ $elm$html$Html$text( - 'Dette : ' + ($elm$core$String$fromInt(player.J) + 'po')) + 'Dette : ' + ($elm$core$String$fromInt(player.debt) + 'po')) ])) ])) ])) @@ -6614,30 +6978,90 @@ var $author$project$Main$viewPlayerWealth = function (player) { }; var $author$project$Main$view = function (model) { return { - aA: _List_fromArray( + body: _List_fromArray( [ $author$project$Main$viewHeaderBar(model), - $author$project$Main$viewPlayerWealth(model.F), + $author$project$Main$viewPlayerWealth(model.player), A2( $elm$html$Html$section, - _List_Nil, _List_fromArray( [ - $elm$html$Html$text('Loot-a-lot') - ])), + $elm$html$Html$Attributes$class('container') + ]), + function () { + var _v0 = model.route; + switch (_v0.$) { + case 'PlayerChest': + return _List_fromArray( + [ + A2( + $elm$html$Html$p, + _List_Nil, + _List_fromArray( + [ + $elm$html$Html$text('Mon Coffre') + ])), + $author$project$Main$viewLoot( + function () { + var _v1 = model.loot; + if (_v1.$ === 'Just') { + var i = _v1.a; + return i; + } else { + return _List_Nil; + } + }()) + ]); + case 'GroupLoot': + return _List_fromArray( + [ + A2( + $elm$html$Html$p, + _List_Nil, + _List_fromArray( + [ + $elm$html$Html$text('Coffre de groupe') + ])) + ]); + case 'Merchant': + return _List_fromArray( + [ + A2( + $elm$html$Html$p, + _List_Nil, + _List_fromArray( + [ + $elm$html$Html$text('Acheter des objets') + ])) + ]); + default: + return _List_fromArray( + [ + A2( + $elm$html$Html$p, + _List_Nil, + _List_fromArray( + [ + $elm$html$Html$text('Nouveau trésor :) ') + ])) + ]); + } + }()), A2( - $elm$html$Html$p, - _List_Nil, + $elm$html$Html$section, _List_fromArray( [ - $elm$html$Html$text('Start using it !') - ])), - $author$project$Main$viewDebugSection(model) + $elm$html$Html$Attributes$class('container') + ]), + _List_fromArray( + [ + $author$project$Main$viewDebugSection(model) + ])) ]), - aT: 'Loot-a-lot in ELM' + title: 'Loot-a-lot in ELM' }; }; var $author$project$Main$main = $elm$browser$Browser$application( - {aH: $author$project$Main$init, aJ: $author$project$Main$UrlChanged, aK: $author$project$Main$LinkClicked, aR: $author$project$Main$subscriptions, aU: $author$project$Main$update, aV: $author$project$Main$view}); + {init: $author$project$Main$init, onUrlChange: $author$project$Main$UrlChanged, onUrlRequest: $author$project$Main$LinkClicked, subscriptions: $author$project$Main$subscriptions, update: $author$project$Main$update, view: $author$project$Main$view}); _Platform_export({'Main':{'init':$author$project$Main$main( - $elm$json$Json$Decode$succeed(0))(0)}});}(this)); \ No newline at end of file + $elm$json$Json$Decode$succeed(_Utils_Tuple0))(0)}});}(this)); \ No newline at end of file diff --git a/src/Main.elm b/src/Main.elm index 768d57a..fd0d565 100644 --- a/src/Main.elm +++ b/src/Main.elm @@ -2,12 +2,14 @@ module Main exposing (..) import Browser import Browser.Navigation as Nav +import Platform.Cmd exposing (Cmd) import Url import Html exposing (..) import Html.Attributes exposing (..) import Html.Events exposing (..) import Http -import Json.Decode exposing (Decoder, field, string, int) +import Json.Decode exposing (Decoder, field, list, string, int) +import Url.Parser as P exposing (Parser, (), oneOf, s) -- Main main : Program () Model Msg @@ -25,26 +27,52 @@ main = type alias Model = { key : Nav.Key - , url : Url.Url + , route : Route , player: Player + , loot: Maybe Loot + , groupLoot : Maybe Loot , error: String } init : () -> Url.Url -> Nav.Key -> ( Model, Cmd Msg ) init flags url key = - ( Model key url blankPlayer "", (fetchPlayer 0)) + let + route = case P.parse routeParser url of + Just r -> r + Nothing -> GroupLoot + in + ( Model key route blankPlayer Nothing Nothing "", initPlayer 0) -- PLAYER -- type alias Player = - { name: String + { id: Int + , name: String , debt: Int , wealth: Wealth } blankPlayer = - Player "Loading" 100 (Wealth 0 0 0 0) + Player 0 "Loading" 100 (Wealth 0 0 0 0) + +initPlayer id = + Cmd.batch [fetchPlayer id, fetchLoot id] + +fetchPlayer : Int -> Cmd Msg +fetchPlayer id = + Http.get + { url = "http://localhost:8088/api/players/" ++ (String.fromInt id) ++ "/" + , expect = Http.expectJson GotPlayer (valueDecoder playerDecoder ) + } + +playerDecoder : Decoder Player +playerDecoder = + Json.Decode.map4 Player + (field "id" int) + (field "name" string) + (field "debt" int) + wealthDecoder type alias Wealth = { cp: Int @@ -53,31 +81,51 @@ type alias Wealth = , pp: Int } -fetchPlayer : Int -> Cmd Msg -fetchPlayer id = - Http.get - { url = "http://localhost:8088/api/players/" ++ (String.fromInt id) ++ "/" - , expect = Http.expectJson GotPlayer playerDecoder - } +wealthDecoder : Decoder Wealth +wealthDecoder = + Json.Decode.map4 Wealth + (field "cp" int) + (field "sp" int) + (field "gp" int) + (field "pp" int) -playerDecoder : Decoder Player -playerDecoder = - Json.Decode.map3 Player - (field "value" (field "name" string)) - (field "value" (field "debt" int)) - (Json.Decode.map4 Wealth - (field "value" (field "cp" int)) - (field "value" (field "sp" int)) - (field "value" (field "gp" int)) - (field "value" (field "pp" int))) +type alias Item = + { id: Int + , name: String + , base_price: Int + } + +itemDecoder = + Json.Decode.map3 Item + (field "id" int) + (field "name" string) + (field "base_price" int) + +type alias Loot = + List Item + +lootDecoder : Decoder Loot +lootDecoder = + Json.Decode.list itemDecoder + +fetchLoot id = + Http.get + { url = "http://localhost:8088/api/players/" ++ (String.fromInt id) ++ "/loot" + , expect = Http.expectJson GotLoot (valueDecoder lootDecoder)} +-- API Response +-- +valueDecoder : Decoder a -> Decoder a +valueDecoder thenDecoder = + field "value" thenDecoder -- UPDATE type Msg = LinkClicked Browser.UrlRequest | UrlChanged Url.Url - | DebugSwitchPlayer Int + | PlayerChanged Int | GotPlayer (Result Http.Error Player) + | GotLoot (Result Http.Error Loot) update : Msg -> Model -> ( Model, Cmd Msg ) update msg model = @@ -92,12 +140,22 @@ update msg model = ( { model | error = "Invalid request '" ++ href ++ "'" }, Cmd.none ) UrlChanged url -> - ( { model | url = url } - , Cmd.none - ) + let + route = P.parse routeParser url + in + case route of + Just page -> + ( { model | route = page } + , case page of + GroupLoot -> Cmd.none + a -> Cmd.none + ) - DebugSwitchPlayer id -> - ( model, fetchPlayer id) + Nothing -> + ( { model | error = "Invalid route" }, Cmd.none ) + + PlayerChanged newId -> + ( { model | player = blankPlayer }, initPlayer newId ) GotPlayer result -> case result of @@ -105,7 +163,15 @@ update msg model = ( { model | player = player } , Cmd.none ) - Err error -> ( { model | error = (printError error) }, Cmd.none ) + Err error -> ( { model | error = "Fetching player... " ++ (printError error) }, Cmd.none ) + + GotLoot result -> + case result of + Ok loot -> + ( { model | loot = Just loot} + , Cmd.none + ) + Err error -> ( { model | error = "Fetching loot... " ++ (printError error) }, Cmd.none ) -- ERRORS @@ -131,29 +197,53 @@ view model = , body = [ viewHeaderBar model , viewPlayerWealth model.player - , section [] - [ text "Loot-a-lot" ] - , p [] [ text "Start using it !" ] - , viewDebugSection model + , section [class "container"] + (case model.route of + PlayerChest -> + [ p [] [text "Mon Coffre"] + , viewLoot (case model.loot of + Just i -> i + Nothing -> []) + ] + + GroupLoot -> + [ p [] [text "Coffre de groupe"] ] + + Merchant -> + [ p [] [text "Acheter des objets"] ] + + NewLoot -> + [ p [] [text "Nouveau trésor :) "] ] + ) + , section [class "container"] [viewDebugSection model] ] } +viewItemTableRow item = + tr [class "table"] + [ td [] [p [] [text item.name]] + ] + +viewLoot : Loot -> Html Msg +viewLoot items = + table [] + (List.map viewItemTableRow items) -- DEBUG SECTION viewDebugSection model = div [class "panel is-danger"] [ p [class "panel-heading"] [text "Debug"] , debugSwitchPlayers - , p [class "panel-block"] [text ("URL :" ++ Url.toString model.url)] , p [class "panel-block has-text-danger"] [text model.error] + , p [class "panel-block"] [text ("Route : " ++ Debug.toString model.route)] ] debugSwitchPlayers : Html Msg debugSwitchPlayers = div [ class "panel-tabs" ] - [ a [ onClick (DebugSwitchPlayer 0) ] [text "Groupe"] - , a [ onClick (DebugSwitchPlayer 1) ] [text "Lomion"] - , a [ onClick (DebugSwitchPlayer 2) ] [text "Fefi"] + [ a [ onClick (PlayerChanged 0) ] [text "Groupe"] + , a [ onClick (PlayerChanged 1) ] [text "Lomion"] + , a [ onClick (PlayerChanged 2) ] [text "Fefi"] ] -- HEADER SECTION @@ -172,8 +262,8 @@ viewHeaderBar model = ] , div [ class "navbar-menu is-active" ] [ div [class "navbar-end"] - [ a [class "navbar-item", href "#marchand"] [text "Marchand"] - , a [class "navbar-item", href "#coffre"] [text "Mon coffre"] + [ a [class "navbar-item", href "/marchand"] [text "Marchand"] + , a [class "navbar-item", href "/coffre"] [text "Mon coffre"] ] ] @@ -187,9 +277,8 @@ viewPlayerWealth player = section [ class "level" ] ([div [class "level-left box"] ([div [ class "level-item" ] - [ p [class "is-size-3"] [text "Argent"] - , span [ class "icon is-large" ] [ i [ class "fas fa-2x fa-piggy-bank" ] [] ] - ] + [ span [ class "icon is-large" ] + [ i [ class "fas fa-2x fa-piggy-bank" ] [] ]] ] ++ (showWealth player.wealth)) ] ++ (if player.debt > 0 then [ div [class "level-right"] @@ -217,3 +306,23 @@ showWealthField name value = [ p [ class "is-size-4"] [text (String.fromInt value)] , p [class "heading"] [text name] ] + + +-- ROUTES +-- + +type Route + = PlayerChest + | Merchant + | GroupLoot + | NewLoot + +routeParser : Parser (Route -> a) a +routeParser = + oneOf + [ P.map GroupLoot P.top + , P.map PlayerChest (P.s "coffre") + , P.map Merchant (P.s "marchand") + , P.map NewLoot (P.s "nouveau-tresor") + ] +