fix config version
This commit is contained in:
parent
32ffe433a8
commit
24770e825e
7 changed files with 141 additions and 90 deletions
|
|
@ -6,7 +6,6 @@ const path = require('path')
|
||||||
const express = require('express')
|
const express = require('express')
|
||||||
const app = express()
|
const app = express()
|
||||||
const https = require('https')
|
const https = require('https')
|
||||||
const http = require('http')
|
|
||||||
const bodyParser = require('body-parser')
|
const bodyParser = require('body-parser')
|
||||||
const serveStatic = require('serve-static')
|
const serveStatic = require('serve-static')
|
||||||
const cookieParser = require('cookie-parser')
|
const cookieParser = require('cookie-parser')
|
||||||
|
|
@ -58,7 +57,9 @@ const skip = (req, res) => req.path === '/api/status/' && res.statusCode === 200
|
||||||
app.use(morgan('dev', {skip}))
|
app.use(morgan('dev', {skip}))
|
||||||
app.use(cookieParser())
|
app.use(cookieParser())
|
||||||
app.use(register)
|
app.use(register)
|
||||||
if (!devMode) app.use(authenticate)
|
// if (!devMode) app.use(authenticate)
|
||||||
|
console.log('DEBUG99')
|
||||||
|
app.use(authenticate)
|
||||||
|
|
||||||
app.use(bodyParser.json())
|
app.use(bodyParser.json())
|
||||||
|
|
||||||
|
|
@ -156,6 +157,7 @@ function register (req, res, next) {
|
||||||
httpOnly: true,
|
httpOnly: true,
|
||||||
secure: true,
|
secure: true,
|
||||||
domain: hostname,
|
domain: hostname,
|
||||||
|
sameSite: true,
|
||||||
expires: NEVER
|
expires: NEVER
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -182,7 +184,7 @@ process.on('unhandledRejection', err => {
|
||||||
})
|
})
|
||||||
|
|
||||||
if (devMode) {
|
if (devMode) {
|
||||||
http.createServer(app).listen(8070, () => {
|
https.createServer(options, app).listen(8070, () => {
|
||||||
console.log('lamassu-admin-server listening on port 8070')
|
console.log('lamassu-admin-server listening on port 8070')
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
|
|
|
||||||
|
|
@ -417,7 +417,8 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"code": "lowBalanceThreshold",
|
"code": "lowBalanceThreshold",
|
||||||
"displayBottom": "Low Balance Threshold",
|
"displayTop": "Low balance",
|
||||||
|
"displayBottom": "Threshold",
|
||||||
"fieldType": "integer",
|
"fieldType": "integer",
|
||||||
"fieldClass": null,
|
"fieldClass": null,
|
||||||
"enabledIf": [
|
"enabledIf": [
|
||||||
|
|
|
||||||
|
|
@ -68,7 +68,6 @@ function plugins (settings) {
|
||||||
balances[cryptoCode] = balanceRec.balance
|
balances[cryptoCode] = balanceRec.balance
|
||||||
})
|
})
|
||||||
|
|
||||||
console.log('DEBUG66: %j', balances)
|
|
||||||
return balances
|
return balances
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -71,7 +71,6 @@ function poll (req, res, next) {
|
||||||
response.idVerificationLimit = config.idVerificationLimit
|
response.idVerificationLimit = config.idVerificationLimit
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log('DEBUG78: %j', response.balances)
|
|
||||||
return res.json(response)
|
return res.json(response)
|
||||||
})
|
})
|
||||||
.catch(next)
|
.catch(next)
|
||||||
|
|
@ -423,19 +422,14 @@ function populateDeviceId (req, res, next) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function populateSettings (req, res, next) {
|
function populateSettings (req, res, next) {
|
||||||
if (req.query.force_config === 'true') {
|
|
||||||
return settingsLoader.loadLatest()
|
|
||||||
.then(settings => { req.settings = settings })
|
|
||||||
.then(() => next())
|
|
||||||
.catch(next)
|
|
||||||
}
|
|
||||||
|
|
||||||
const versionId = req.headers['config-version']
|
const versionId = req.headers['config-version']
|
||||||
logger.debug('versionId: %s', versionId)
|
logger.debug('versionId: %s', versionId)
|
||||||
|
|
||||||
if (!versionId) {
|
if (!versionId) {
|
||||||
logger.debug('No config-version header')
|
return settingsLoader.loadLatest()
|
||||||
return res.sendStatus(400)
|
.then(settings => { req.settings = settings })
|
||||||
|
.then(() => next())
|
||||||
|
.catch(next)
|
||||||
}
|
}
|
||||||
|
|
||||||
settingsLoader.load(versionId)
|
settingsLoader.load(versionId)
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ const util = require('util')
|
||||||
const config = require('./admin/config')
|
const config = require('./admin/config')
|
||||||
|
|
||||||
function valid () {
|
function valid () {
|
||||||
return config.validateConfig()
|
return config.validateCurrentConfig()
|
||||||
.then(errors => {
|
.then(errors => {
|
||||||
if (errors.length === 0) return
|
if (errors.length === 0) return
|
||||||
throw new Error('Schema validation error: ' + util.inspect(errors, {colors: true}))
|
throw new Error('Schema validation error: ' + util.inspect(errors, {colors: true}))
|
||||||
|
|
|
||||||
172
public/elm.js
172
public/elm.js
|
|
@ -22456,7 +22456,9 @@ var _user$project$Css_Classes$Active = {ctor: 'Active'};
|
||||||
var _user$project$Css_Classes$ButtonRow = {ctor: 'ButtonRow'};
|
var _user$project$Css_Classes$ButtonRow = {ctor: 'ButtonRow'};
|
||||||
var _user$project$Css_Classes$Button = {ctor: 'Button'};
|
var _user$project$Css_Classes$Button = {ctor: 'Button'};
|
||||||
var _user$project$Css_Classes$FormRow = {ctor: 'FormRow'};
|
var _user$project$Css_Classes$FormRow = {ctor: 'FormRow'};
|
||||||
|
var _user$project$Css_Classes$TextCell = {ctor: 'TextCell'};
|
||||||
var _user$project$Css_Classes$LongCell = {ctor: 'LongCell'};
|
var _user$project$Css_Classes$LongCell = {ctor: 'LongCell'};
|
||||||
|
var _user$project$Css_Classes$MediumCell = {ctor: 'MediumCell'};
|
||||||
var _user$project$Css_Classes$ShortCell = {ctor: 'ShortCell'};
|
var _user$project$Css_Classes$ShortCell = {ctor: 'ShortCell'};
|
||||||
var _user$project$Css_Classes$MultiDisplay = {ctor: 'MultiDisplay'};
|
var _user$project$Css_Classes$MultiDisplay = {ctor: 'MultiDisplay'};
|
||||||
var _user$project$Css_Classes$BottomDisplay = {ctor: 'BottomDisplay'};
|
var _user$project$Css_Classes$BottomDisplay = {ctor: 'BottomDisplay'};
|
||||||
|
|
@ -23851,21 +23853,9 @@ var _user$project$ConfigTypes$fieldValueToString = function (fieldValue) {
|
||||||
case 'FieldFiatCurrencyValue':
|
case 'FieldFiatCurrencyValue':
|
||||||
return _p8._0;
|
return _p8._0;
|
||||||
case 'FieldCryptoCurrencyValue':
|
case 'FieldCryptoCurrencyValue':
|
||||||
return _elm_lang$core$Native_Utils.crashCase(
|
return A2(_elm_lang$core$String$join, ',', _p8._0);
|
||||||
'ConfigTypes',
|
|
||||||
{
|
|
||||||
start: {line: 192, column: 5},
|
|
||||||
end: {line: 218, column: 43}
|
|
||||||
},
|
|
||||||
_p8)('N/A for cryptoCurrency');
|
|
||||||
default:
|
default:
|
||||||
return _elm_lang$core$Native_Utils.crashCase(
|
return A2(_elm_lang$core$String$join, ',', _p8._0);
|
||||||
'ConfigTypes',
|
|
||||||
{
|
|
||||||
start: {line: 192, column: 5},
|
|
||||||
end: {line: 218, column: 43}
|
|
||||||
},
|
|
||||||
_p8)('N/A for language');
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
var _user$project$ConfigTypes$accountRecToDisplayRec = function (accountRec) {
|
var _user$project$ConfigTypes$accountRecToDisplayRec = function (accountRec) {
|
||||||
|
|
@ -23931,8 +23921,8 @@ var _user$project$ConfigTypes$allCryptos = F3(
|
||||||
_elm_lang$core$List$filterMap,
|
_elm_lang$core$List$filterMap,
|
||||||
_user$project$ConfigTypes$lookupCryptoDisplay(cryptoDisplays),
|
_user$project$ConfigTypes$lookupCryptoDisplay(cryptoDisplays),
|
||||||
cryptoStrings);
|
cryptoStrings);
|
||||||
var _p11 = cryptoScope;
|
var _p9 = cryptoScope;
|
||||||
switch (_p11.ctor) {
|
switch (_p9.ctor) {
|
||||||
case 'Global':
|
case 'Global':
|
||||||
return {
|
return {
|
||||||
ctor: '::',
|
ctor: '::',
|
||||||
|
|
@ -23946,8 +23936,8 @@ var _user$project$ConfigTypes$allCryptos = F3(
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
var _user$project$ConfigTypes$listCryptos = function (configGroup) {
|
var _user$project$ConfigTypes$listCryptos = function (configGroup) {
|
||||||
var _p12 = configGroup.schema.cryptoScope;
|
var _p10 = configGroup.schema.cryptoScope;
|
||||||
switch (_p12.ctor) {
|
switch (_p10.ctor) {
|
||||||
case 'Specific':
|
case 'Specific':
|
||||||
return configGroup.data.cryptoCurrencies;
|
return configGroup.data.cryptoCurrencies;
|
||||||
case 'Global':
|
case 'Global':
|
||||||
|
|
@ -23964,8 +23954,8 @@ var _user$project$ConfigTypes$CryptoCode = function (a) {
|
||||||
return {ctor: 'CryptoCode', _0: a};
|
return {ctor: 'CryptoCode', _0: a};
|
||||||
};
|
};
|
||||||
var _user$project$ConfigTypes$stringToCrypto = function (string) {
|
var _user$project$ConfigTypes$stringToCrypto = function (string) {
|
||||||
var _p13 = string;
|
var _p11 = string;
|
||||||
if (_p13 === 'global') {
|
if (_p11 === 'global') {
|
||||||
return _user$project$ConfigTypes$GlobalCrypto;
|
return _user$project$ConfigTypes$GlobalCrypto;
|
||||||
} else {
|
} else {
|
||||||
return _user$project$ConfigTypes$CryptoCode(string);
|
return _user$project$ConfigTypes$CryptoCode(string);
|
||||||
|
|
@ -23974,8 +23964,8 @@ var _user$project$ConfigTypes$stringToCrypto = function (string) {
|
||||||
var _user$project$ConfigTypes$GlobalMachine = {ctor: 'GlobalMachine'};
|
var _user$project$ConfigTypes$GlobalMachine = {ctor: 'GlobalMachine'};
|
||||||
var _user$project$ConfigTypes$globalMachineDisplay = {machine: _user$project$ConfigTypes$GlobalMachine, display: 'Global'};
|
var _user$project$ConfigTypes$globalMachineDisplay = {machine: _user$project$ConfigTypes$GlobalMachine, display: 'Global'};
|
||||||
var _user$project$ConfigTypes$listMachines = function (configGroup) {
|
var _user$project$ConfigTypes$listMachines = function (configGroup) {
|
||||||
var _p14 = configGroup.schema.machineScope;
|
var _p12 = configGroup.schema.machineScope;
|
||||||
switch (_p14.ctor) {
|
switch (_p12.ctor) {
|
||||||
case 'Specific':
|
case 'Specific':
|
||||||
return configGroup.data.machines;
|
return configGroup.data.machines;
|
||||||
case 'Global':
|
case 'Global':
|
||||||
|
|
@ -24028,11 +24018,11 @@ var _user$project$ConfigTypes$ParsingError = function (a) {
|
||||||
return {ctor: 'ParsingError', _0: a};
|
return {ctor: 'ParsingError', _0: a};
|
||||||
};
|
};
|
||||||
var _user$project$ConfigTypes$resultToFieldHolder = function (result) {
|
var _user$project$ConfigTypes$resultToFieldHolder = function (result) {
|
||||||
var _p15 = result;
|
var _p13 = result;
|
||||||
if (_p15.ctor === 'Ok') {
|
if (_p13.ctor === 'Ok') {
|
||||||
return _user$project$ConfigTypes$FieldOk(_p15._0);
|
return _user$project$ConfigTypes$FieldOk(_p13._0);
|
||||||
} else {
|
} else {
|
||||||
return _user$project$ConfigTypes$ParsingError(_p15._0);
|
return _user$project$ConfigTypes$ParsingError(_p13._0);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
var _user$project$ConfigTypes$SelectizeComponent = function (a) {
|
var _user$project$ConfigTypes$SelectizeComponent = function (a) {
|
||||||
|
|
@ -24076,8 +24066,8 @@ var _user$project$ConfigTypes$stringToFieldHolder = F2(
|
||||||
if (_elm_lang$core$String$isEmpty(s)) {
|
if (_elm_lang$core$String$isEmpty(s)) {
|
||||||
return _user$project$ConfigTypes$FieldEmpty;
|
return _user$project$ConfigTypes$FieldEmpty;
|
||||||
} else {
|
} else {
|
||||||
var _p16 = fieldType;
|
var _p14 = fieldType;
|
||||||
switch (_p16.ctor) {
|
switch (_p14.ctor) {
|
||||||
case 'FieldStringType':
|
case 'FieldStringType':
|
||||||
return _user$project$ConfigTypes$FieldOk(
|
return _user$project$ConfigTypes$FieldOk(
|
||||||
_user$project$ConfigTypes$FieldStringValue(s));
|
_user$project$ConfigTypes$FieldStringValue(s));
|
||||||
|
|
@ -24094,8 +24084,8 @@ var _user$project$ConfigTypes$stringToFieldHolder = F2(
|
||||||
_user$project$ConfigTypes$FieldIntegerValue,
|
_user$project$ConfigTypes$FieldIntegerValue,
|
||||||
_elm_lang$core$String$toInt(s)));
|
_elm_lang$core$String$toInt(s)));
|
||||||
case 'FieldOnOffType':
|
case 'FieldOnOffType':
|
||||||
var _p17 = s;
|
var _p15 = s;
|
||||||
switch (_p17) {
|
switch (_p15) {
|
||||||
case 'on':
|
case 'on':
|
||||||
return _user$project$ConfigTypes$FieldOk(
|
return _user$project$ConfigTypes$FieldOk(
|
||||||
_user$project$ConfigTypes$FieldOnOffValue(true));
|
_user$project$ConfigTypes$FieldOnOffValue(true));
|
||||||
|
|
@ -25113,7 +25103,11 @@ var _user$project$Css_Selectize$component = _rtfeldman$elm_css$Css$mixin(
|
||||||
ctor: '::',
|
ctor: '::',
|
||||||
_0: _rtfeldman$elm_css$Css$width(
|
_0: _rtfeldman$elm_css$Css$width(
|
||||||
_rtfeldman$elm_css$Css$em(6)),
|
_rtfeldman$elm_css$Css$em(6)),
|
||||||
_1: {ctor: '[]'}
|
_1: {
|
||||||
|
ctor: '::',
|
||||||
|
_0: _rtfeldman$elm_css$Css$cursor(_rtfeldman$elm_css$Css$default),
|
||||||
|
_1: {ctor: '[]'}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -25327,8 +25321,8 @@ var _user$project$Config$updateSelectize = F3(
|
||||||
return _elm_lang$core$Native_Utils.crashCase(
|
return _elm_lang$core$Native_Utils.crashCase(
|
||||||
'Config',
|
'Config',
|
||||||
{
|
{
|
||||||
start: {line: 1154, column: 17},
|
start: {line: 1177, column: 17},
|
||||||
end: {line: 1159, column: 56}
|
end: {line: 1182, column: 56}
|
||||||
},
|
},
|
||||||
_p3)('Shouldn\'t be here');
|
_p3)('Shouldn\'t be here');
|
||||||
}
|
}
|
||||||
|
|
@ -25496,8 +25490,8 @@ var _user$project$Config$isField = function (fieldValue) {
|
||||||
return _elm_lang$core$Native_Utils.crashCase(
|
return _elm_lang$core$Native_Utils.crashCase(
|
||||||
'Config',
|
'Config',
|
||||||
{
|
{
|
||||||
start: {line: 914, column: 5},
|
start: {line: 937, column: 5},
|
||||||
end: {line: 919, column: 59}
|
end: {line: 942, column: 59}
|
||||||
},
|
},
|
||||||
_p11)('Referenced field must be boolean');
|
_p11)('Referenced field must be boolean');
|
||||||
}
|
}
|
||||||
|
|
@ -25771,8 +25765,8 @@ var _user$project$Config$languageSelectizeView = F6(
|
||||||
return _elm_lang$core$Native_Utils.crashCase(
|
return _elm_lang$core$Native_Utils.crashCase(
|
||||||
'Config',
|
'Config',
|
||||||
{
|
{
|
||||||
start: {line: 499, column: 21},
|
start: {line: 511, column: 21},
|
||||||
end: {line: 504, column: 60}
|
end: {line: 516, column: 60}
|
||||||
},
|
},
|
||||||
_p18)('Shouldn\'t be here');
|
_p18)('Shouldn\'t be here');
|
||||||
}
|
}
|
||||||
|
|
@ -25813,8 +25807,8 @@ var _user$project$Config$cryptoCurrencySelectizeView = F6(
|
||||||
return _elm_lang$core$Native_Utils.crashCase(
|
return _elm_lang$core$Native_Utils.crashCase(
|
||||||
'Config',
|
'Config',
|
||||||
{
|
{
|
||||||
start: {line: 453, column: 21},
|
start: {line: 465, column: 21},
|
||||||
end: {line: 458, column: 60}
|
end: {line: 470, column: 60}
|
||||||
},
|
},
|
||||||
_p21)('Shouldn\'t be here');
|
_p21)('Shouldn\'t be here');
|
||||||
}
|
}
|
||||||
|
|
@ -25915,15 +25909,55 @@ var _user$project$Config$accountSelectizeView = F6(
|
||||||
fallbackIds,
|
fallbackIds,
|
||||||
selectizeState);
|
selectizeState);
|
||||||
});
|
});
|
||||||
var _user$project$Config$fieldTypeToClass = function (fieldType) {
|
var _user$project$Config$fieldInstanceClasses = function (fieldInstance) {
|
||||||
var _p25 = fieldType;
|
var _p25 = fieldInstance.fieldLocator.fieldType;
|
||||||
switch (_p25.ctor) {
|
switch (_p25.ctor) {
|
||||||
case 'FieldPercentageType':
|
case 'FieldPercentageType':
|
||||||
return _user$project$Css_Classes$ShortCell;
|
return {
|
||||||
|
ctor: '::',
|
||||||
|
_0: _user$project$Css_Classes$ShortCell,
|
||||||
|
_1: {ctor: '[]'}
|
||||||
|
};
|
||||||
case 'FieldIntegerType':
|
case 'FieldIntegerType':
|
||||||
return _user$project$Css_Classes$ShortCell;
|
return {
|
||||||
|
ctor: '::',
|
||||||
|
_0: _user$project$Css_Classes$ShortCell,
|
||||||
|
_1: {ctor: '[]'}
|
||||||
|
};
|
||||||
|
case 'FieldAccountType':
|
||||||
|
return {
|
||||||
|
ctor: '::',
|
||||||
|
_0: _user$project$Css_Classes$MediumCell,
|
||||||
|
_1: {ctor: '[]'}
|
||||||
|
};
|
||||||
|
case 'FieldStringType':
|
||||||
|
return {
|
||||||
|
ctor: '::',
|
||||||
|
_0: _user$project$Css_Classes$LongCell,
|
||||||
|
_1: {
|
||||||
|
ctor: '::',
|
||||||
|
_0: _user$project$Css_Classes$TextCell,
|
||||||
|
_1: {ctor: '[]'}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
case 'FieldLanguageType':
|
||||||
|
return {
|
||||||
|
ctor: '::',
|
||||||
|
_0: _user$project$Css_Classes$MediumCell,
|
||||||
|
_1: {ctor: '[]'}
|
||||||
|
};
|
||||||
|
case 'FieldCryptoCurrencyType':
|
||||||
|
return {
|
||||||
|
ctor: '::',
|
||||||
|
_0: _user$project$Css_Classes$MediumCell,
|
||||||
|
_1: {ctor: '[]'}
|
||||||
|
};
|
||||||
default:
|
default:
|
||||||
return _user$project$Css_Classes$LongCell;
|
return {
|
||||||
|
ctor: '::',
|
||||||
|
_0: _user$project$Css_Classes$ShortCell,
|
||||||
|
_1: {ctor: '[]'}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
var _user$project$Config$unitDisplay = F2(
|
var _user$project$Config$unitDisplay = F2(
|
||||||
|
|
@ -26267,8 +26301,8 @@ var _user$project$Config$selectizeView = F6(
|
||||||
return _elm_lang$core$Native_Utils.crashCase(
|
return _elm_lang$core$Native_Utils.crashCase(
|
||||||
'Config',
|
'Config',
|
||||||
{
|
{
|
||||||
start: {line: 542, column: 9},
|
start: {line: 554, column: 9},
|
||||||
end: {line: 584, column: 52}
|
end: {line: 596, column: 52}
|
||||||
},
|
},
|
||||||
_p38)('Not a Selectize field');
|
_p38)('Not a Selectize field');
|
||||||
}
|
}
|
||||||
|
|
@ -26337,7 +26371,7 @@ var _user$project$Config$Input = F2(
|
||||||
var _user$project$Config$textInput = F5(
|
var _user$project$Config$textInput = F5(
|
||||||
function (fiat, fieldInstance, maybeFieldValue, maybeFallbackFieldValue, enabled) {
|
function (fiat, fieldInstance, maybeFieldValue, maybeFallbackFieldValue, enabled) {
|
||||||
var fieldValid = _user$project$Config$validateFieldInstance;
|
var fieldValid = _user$project$Config$validateFieldInstance;
|
||||||
var fieldClass = _user$project$Config$fieldTypeToClass(fieldInstance.fieldLocator.fieldType);
|
var fieldClasses = _user$project$Config$fieldInstanceClasses(fieldInstance);
|
||||||
var maybeFallbackString = A2(_elm_lang$core$Maybe$map, _user$project$ConfigTypes$fieldValueToString, maybeFallbackFieldValue);
|
var maybeFallbackString = A2(_elm_lang$core$Maybe$map, _user$project$ConfigTypes$fieldValueToString, maybeFallbackFieldValue);
|
||||||
var fallbackString = A2(_elm_lang$core$Maybe$withDefault, '', maybeFallbackString);
|
var fallbackString = A2(_elm_lang$core$Maybe$withDefault, '', maybeFallbackString);
|
||||||
var maybeSpecificString = A2(_elm_lang$core$Maybe$map, _user$project$ConfigTypes$fieldValueToString, maybeFieldValue);
|
var maybeSpecificString = A2(_elm_lang$core$Maybe$map, _user$project$ConfigTypes$fieldValueToString, maybeFieldValue);
|
||||||
|
|
@ -26381,15 +26415,7 @@ var _user$project$Config$textInput = F5(
|
||||||
_1: {
|
_1: {
|
||||||
ctor: '::',
|
ctor: '::',
|
||||||
_0: _user$project$Css_Admin$class(
|
_0: _user$project$Css_Admin$class(
|
||||||
{
|
{ctor: '::', _0: _user$project$Css_Classes$BasicInput, _1: fieldClasses}),
|
||||||
ctor: '::',
|
|
||||||
_0: _user$project$Css_Classes$BasicInput,
|
|
||||||
_1: {
|
|
||||||
ctor: '::',
|
|
||||||
_0: fieldClass,
|
|
||||||
_1: {ctor: '[]'}
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
_1: {
|
_1: {
|
||||||
ctor: '::',
|
ctor: '::',
|
||||||
_0: _elm_lang$html$Html_Attributes$type_(inputType),
|
_0: _elm_lang$html$Html_Attributes$type_(inputType),
|
||||||
|
|
@ -26436,6 +26462,12 @@ var _user$project$Config$fieldInput = F5(
|
||||||
});
|
});
|
||||||
var _user$project$Config$fieldComponent = F2(
|
var _user$project$Config$fieldComponent = F2(
|
||||||
function (model, fieldInstance) {
|
function (model, fieldInstance) {
|
||||||
|
var fieldLengthClasses = A2(
|
||||||
|
_elm_lang$core$List$map,
|
||||||
|
function ($class) {
|
||||||
|
return {ctor: '_Tuple2', _0: $class, _1: true};
|
||||||
|
},
|
||||||
|
_user$project$Config$fieldInstanceClasses(fieldInstance));
|
||||||
var configGroup = model.configGroup;
|
var configGroup = model.configGroup;
|
||||||
var maybeSpecific = function () {
|
var maybeSpecific = function () {
|
||||||
var _p42 = fieldInstance.fieldHolder;
|
var _p42 = fieldInstance.fieldHolder;
|
||||||
|
|
@ -26462,19 +26494,22 @@ var _user$project$Config$fieldComponent = F2(
|
||||||
{
|
{
|
||||||
ctor: '::',
|
ctor: '::',
|
||||||
_0: _user$project$Css_Admin$classList(
|
_0: _user$project$Css_Admin$classList(
|
||||||
{
|
A2(
|
||||||
ctor: '::',
|
_elm_lang$core$Basics_ops['++'],
|
||||||
_0: {ctor: '_Tuple2', _0: _user$project$Css_Classes$Component, _1: true},
|
{
|
||||||
_1: {
|
|
||||||
ctor: '::',
|
ctor: '::',
|
||||||
_0: {ctor: '_Tuple2', _0: _user$project$Css_Classes$FocusedComponent, _1: focused},
|
_0: {ctor: '_Tuple2', _0: _user$project$Css_Classes$Component, _1: true},
|
||||||
_1: {
|
_1: {
|
||||||
ctor: '::',
|
ctor: '::',
|
||||||
_0: {ctor: '_Tuple2', _0: _user$project$Css_Classes$InvalidComponent, _1: !fieldValid},
|
_0: {ctor: '_Tuple2', _0: _user$project$Css_Classes$FocusedComponent, _1: focused},
|
||||||
_1: {ctor: '[]'}
|
_1: {
|
||||||
|
ctor: '::',
|
||||||
|
_0: {ctor: '_Tuple2', _0: _user$project$Css_Classes$InvalidComponent, _1: !fieldValid},
|
||||||
|
_1: {ctor: '[]'}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
}),
|
fieldLengthClasses)),
|
||||||
_1: {ctor: '[]'}
|
_1: {ctor: '[]'}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -29087,7 +29122,7 @@ var _user$project$NavBar$view = F2(
|
||||||
ctor: '::',
|
ctor: '::',
|
||||||
_0: {
|
_0: {
|
||||||
ctor: '_Tuple3',
|
ctor: '_Tuple3',
|
||||||
_0: 'BitStamp',
|
_0: 'Bitstamp',
|
||||||
_1: _user$project$CoreTypes$AccountRoute('bitstamp'),
|
_1: _user$project$CoreTypes$AccountRoute('bitstamp'),
|
||||||
_2: true
|
_2: true
|
||||||
},
|
},
|
||||||
|
|
@ -29352,7 +29387,10 @@ var _user$project$Main$parseRoute = _evancz$url_parser$UrlParser$oneOf(
|
||||||
_evancz$url_parser$UrlParser$s('transaction')),
|
_evancz$url_parser$UrlParser$s('transaction')),
|
||||||
_1: {
|
_1: {
|
||||||
ctor: '::',
|
ctor: '::',
|
||||||
_0: A2(_evancz$url_parser$UrlParser$map, _user$project$CoreTypes$PairRoute, _evancz$url_parser$UrlParser$top),
|
_0: A2(
|
||||||
|
_evancz$url_parser$UrlParser$map,
|
||||||
|
A2(_user$project$CoreTypes$ConfigRoute, 'fiat', _elm_lang$core$Maybe$Nothing),
|
||||||
|
_evancz$url_parser$UrlParser$top),
|
||||||
_1: {ctor: '[]'}
|
_1: {ctor: '[]'}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -198,10 +198,10 @@ p {
|
||||||
|
|
||||||
.lamassuAdminConfigTable {
|
.lamassuAdminConfigTable {
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
|
font-weight: bold;
|
||||||
border-radius: 7px;
|
border-radius: 7px;
|
||||||
margin: 20px 0;
|
margin: 20px 0;
|
||||||
border-collapse: collapse;
|
border-collapse: collapse;
|
||||||
width: 100%;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.lamassuAdminConfigTable .lamassuAdminSelectizeContainer {
|
.lamassuAdminConfigTable .lamassuAdminSelectizeContainer {
|
||||||
|
|
@ -292,6 +292,7 @@ p {
|
||||||
background-color: inherit;
|
background-color: inherit;
|
||||||
padding: 6px 2px;
|
padding: 6px 2px;
|
||||||
width: 6em;
|
width: 6em;
|
||||||
|
cursor: default;
|
||||||
}
|
}
|
||||||
|
|
||||||
.lamassuAdminConfigTable .lamassuAdminInputContainer {
|
.lamassuAdminConfigTable .lamassuAdminInputContainer {
|
||||||
|
|
@ -321,10 +322,6 @@ p {
|
||||||
background-color: #ffffff;
|
background-color: #ffffff;
|
||||||
}
|
}
|
||||||
|
|
||||||
.lamassuAdminConfigTable .lamassuAdminShortCell {
|
|
||||||
width: 5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.lamassuAdminConfigTable .lamassuAdminBasicInputDisabled {
|
.lamassuAdminConfigTable .lamassuAdminBasicInputDisabled {
|
||||||
background-color: #fcfcfa;
|
background-color: #fcfcfa;
|
||||||
height: 25px;
|
height: 25px;
|
||||||
|
|
@ -340,7 +337,7 @@ p {
|
||||||
padding: 3px 4px;
|
padding: 3px 4px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
width: 1px;
|
width: 5em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.lamassuAdminConfigTable .lamassuAdminComponent {
|
.lamassuAdminConfigTable .lamassuAdminComponent {
|
||||||
|
|
@ -366,6 +363,10 @@ p {
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.lamassuAdminConfigTable tbody td:first-child {
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
.lamassuAdminConfigTable thead {
|
.lamassuAdminConfigTable thead {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
|
|
@ -383,10 +384,26 @@ p {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.lamassuAdminConfigTable .lamassuAdminConfigTableGlobalRow {
|
.lamassuAdminConfigTable .lamassuAdminConfigTableGlobalRow td:first-child {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.lamassuAdminConfigTable .lamassuAdminTextCell {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lamassuAdminConfigTable .lamassuAdminShortCell {
|
||||||
|
min-width: 5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lamassuAdminConfigTable .lamassuAdminMediumCell {
|
||||||
|
min-width: 10em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lamassuAdminConfigTable .lamassuAdminLongCell {
|
||||||
|
min-width: 20em;
|
||||||
|
}
|
||||||
|
|
||||||
.lamassuAdminSaving {
|
.lamassuAdminSaving {
|
||||||
font-size: 18px;
|
font-size: 18px;
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue