Commit a8162890 authored by Jason's avatar Jason

目前做到user admin切換按鈕Ajax未完成

parent caf7a545
......@@ -20,6 +20,9 @@ using Newtonsoft.Json.Linq;
using System.Linq;
using backstage.Models.TokenVault;
using Microsoft.AspNetCore.Routing;
using System.Text.Json;
using System.Dynamic;
namespace backstage.Controllers
{
......@@ -51,7 +54,7 @@ namespace backstage.Controllers
// 確認使用者是否已經登入
if (!User.Identity.IsAuthenticated)
{
return RedirectToAction("Login");
return RedirectToAction("Login", "User");
}
......@@ -102,17 +105,48 @@ namespace backstage.Controllers
// 確認使用者是否已經登入
if (!User.Identity.IsAuthenticated)
{
return RedirectToAction("Login");
return RedirectToAction("Login", "User");
}
ViewBag.Merchant_id = Merchant_id;
ViewBag.vault_id = vault_id;
var url = _config["IP"] + "/v2/vault/get";
var httpMethod = HttpMethod.Post;
// 取得使用者的 "token" Claim 值
string token = User.FindFirstValue("token");
var httpMethod = HttpMethod.Post;
var url = _config["IP"] + "/v2/vault/get";
var parameters = new Dictionary<string, string>
{
{ "Merchant_id",Merchant_id.ToString()},
{ "id",vault_id.ToString()},
{ "info","INFO"}
};
var apiResult = await _callApi.CallAPI(url, parameters, httpMethod);
if (apiResult.IsSuccess)
{
TokenVaultResponse = JsonConvert.DeserializeObject<TokenVaultResponse>(apiResult.Data.ToString());
if (TokenVaultResponse.r == 0)
{
if (TokenVaultResponse.info.Count > 0)
{
ViewBag.VaultInfo = TokenVaultResponse.info[0];
}
else
{
RedirectToAction("List");
}
}
}
url = _config["IP"] + "/v2/vault/get";
httpMethod = HttpMethod.Post;
parameters = new Dictionary<string, string>
{
{ "Merchant_id", Merchant_id.ToString() },
{ "id", vault_id.ToString() },
......@@ -120,7 +154,7 @@ namespace backstage.Controllers
};
var apiResult = await _callApi.CallAPI(url, parameters, httpMethod);
apiResult = await _callApi.CallAPI(url, parameters, httpMethod);
if (apiResult.IsSuccess)
{
var FieldsResponse = JsonConvert.DeserializeObject<FieldsResponse>(apiResult.Data.ToString());
......@@ -140,12 +174,12 @@ namespace backstage.Controllers
// 確認使用者是否已經登入
if (!User.Identity.IsAuthenticated)
{
return RedirectToAction("Login");
return RedirectToAction("Login", "User");
}
ViewBag.Merchant_id = Merchant_id;
ViewBag.vault_id = vault_id;
ViewBag.field_id = field_id;
var DepartmentsResponse = new DepartmentsResponse();
var url = _config["IP"] + "/v2/vault/get";
......@@ -196,27 +230,23 @@ namespace backstage.Controllers
var newUsers = new List<User>();
foreach (var u in UserResponse.Users)
{
foreach (var uu in field.users)
{
if (u.uid != uu.id)
{
newUsers.Add(u);
}
}
var existUser = field.users.Where(uu => uu.uid == u.uid).Any();
if (!existUser)
newUsers.Add(u);
}
ViewBag.users = (from o in newUsers
select new SelectListItem
{
Value = o.uid.ToString(),
Text = o.uid + "_" + o.name+", "+o.username
Text = o.uid + "_" + o.name + ", " + o.username
}).ToList();
}
#endregion
return View(field.users);
}
......@@ -226,20 +256,279 @@ namespace backstage.Controllers
[HttpPost]
public async Task<IActionResult> AddUsers(int Merchant_id, int vault_id, int field_id)
public async Task<IActionResult> AddUsers([FromBody] JsonElement requestData)
{
int Merchant_id = requestData.GetProperty("Merchant_id").GetInt32();
int vault_id = requestData.GetProperty("vault_id").GetInt32();
int field_id = requestData.GetProperty("field_id").GetInt32();
int user_id = requestData.GetProperty("user_id").GetInt32();
// 構建包含參數的查詢字串
var queryString = new RouteValueDictionary {
{ "Merchant_id", Merchant_id },
{ "vault_id", vault_id },
{ "field_id", field_id },
};
// 確認使用者是否已經登入
if (!User.Identity.IsAuthenticated)
{
return RedirectToAction("Login", "User");
}
// 取得使用者的 "token" Claim 值
string token = User.FindFirstValue("token");
//檢查user_id是否存在
var url = _config["IP"] + "/user/list";
var httpMethod = HttpMethod.Post;
var types = new[] { "all" };
var types_data = new { inc = types };
var parameters = new Dictionary<string, string>
{
{ "token", token },
{ "types", JsonConvert.SerializeObject(types_data)},
{ "email","1"},
{ "phone","1"}
};
var apiResult = await _callApi.CallAPI(url, parameters, httpMethod);
if (apiResult.IsSuccess)
{
var UserResponse = JsonConvert.DeserializeObject<UserResponse>(apiResult.Data.ToString());
if (UserResponse.userCount > 0)
{
var existUser = UserResponse.Users.Where(u => u.uid == user_id).FirstOrDefault();
if (existUser == null)
{
TempData["IsSuccess"] = false;
TempData["msg"] = "user_id不存在";
return RedirectToAction("ListUsers", queryString);
}
}
else
{
TempData["IsSuccess"] = false;
TempData["msg"] = "user_id不存在";
return RedirectToAction("ListUsers", queryString);
}
}
else
{
TempData["IsSuccess"] = false;
TempData["msg"] = "檢查field_id失敗";
return RedirectToAction("ListUsers", queryString);
}
//檢查merchant_id是否存在
url = _config["IP"] + "/merchant/list";
httpMethod = HttpMethod.Post;
parameters = new Dictionary<string, string>
{
{ "token", token },
};
apiResult = await _callApi.CallAPI(url, parameters, httpMethod);
if (apiResult.IsSuccess)
{
var DepartmentsResponse = JsonConvert.DeserializeObject<DepartmentsResponse>(apiResult.Data.ToString());
if (DepartmentsResponse.count > 0)
{
var existDepartment = DepartmentsResponse.merchants.Where(m => m.merchant_id == Merchant_id).FirstOrDefault();
if (existDepartment == null)
{
TempData["IsSuccess"] = false;
TempData["msg"] = "merchant_id不存在";
return RedirectToAction("ListUsers", queryString);
}
}
else
{
TempData["IsSuccess"] = false;
TempData["msg"] = "merchant_id不存在";
return RedirectToAction("ListUsers", queryString);
}
}
else
{
TempData["IsSuccess"] = false;
TempData["msg"] = "檢查merchant_id失敗";
return RedirectToAction("ListUsers");
}
//檢查field_id是否存在
url = _config["IP"] + "/v2/vault/get";
httpMethod = HttpMethod.Post;
parameters = new Dictionary<string, string>
{
{ "Merchant_id", Merchant_id.ToString() },
{ "id", vault_id.ToString() },
{ "info", "FIELDS" },
};
apiResult = await _callApi.CallAPI(url, parameters, httpMethod);
if (apiResult.IsSuccess)
{
var FieldsResponse = JsonConvert.DeserializeObject<FieldsResponse>(apiResult.Data.ToString());
if (FieldsResponse.fields.Count > 0)
{
var existField = FieldsResponse.fields.Where(m => m.id == field_id).FirstOrDefault();
if (existField == null)
{
TempData["IsSuccess"] = false;
TempData["msg"] = "field_id不存在";
}
}
else
{
TempData["IsSuccess"] = false;
TempData["msg"] = "field_id不存在";
}
}
else
{
TempData["IsSuccess"] = false;
TempData["msg"] = "檢查field_id失敗";
return RedirectToAction("ListUsers", queryString);
}
//加入部門
url = _config["IP"] + "/merchant/adduser";
httpMethod = HttpMethod.Post;
var data = new[]
{
new {
userId = user_id.ToString(),
merchantId = Merchant_id.ToString()
}
};
parameters = new Dictionary<string, string>
{
{ "token", token},
{ "data", JsonConvert.SerializeObject(data)}
//{ "data", """userId"":""1"",""merchantId"":""1""")
};
apiResult = await _callApi.CallAPI(url, parameters, httpMethod);
if (!apiResult.IsSuccess)
{
var departmentResponse = JsonConvert.DeserializeObject<DepartmentsResponse>(apiResult.Data.ToString());
if (departmentResponse.r != 0)
{
TempData["IsSuccess"] = false;
TempData["msg"] = "加入部門失敗";
return RedirectToAction("ListUsers", queryString);
}
}
//加入vault
var TokenVaultResponse = new TokenVaultResponse();
url = _config["IP"] + "/merchant/vault/access";
httpMethod = HttpMethod.Post;
parameters = new Dictionary<string, string>
{
{ "token", token},
{ "vault_id", vault_id.ToString()},
{ "access_code", "31"},
{ "merchant_id", Merchant_id.ToString()},
{ "user_id", user_id.ToString()},
};
apiResult = await _callApi.CallAPI(url, parameters, httpMethod);
if (!apiResult.IsSuccess)
{
TempData["IsSuccess"] = false;
TempData["msg"] = "加入vault失敗";
return RedirectToAction("ListUsers", queryString);
}
//加入欄位
var FieldsResponse2 = new FieldsResponse();
url = _config["IP"] + "/v2/vault";
httpMethod = HttpMethod.Post;
var addUserToField_data = new
{
action = "ADD",
id = user_id,
field_id = field_id,
allow_decrypt = 1,
allow_new = 1,
allow_update = 1,
allow_del = 1,
default_mask_id = 1
};
parameters = new Dictionary<string, string>
{
{ "id", vault_id.ToString()},
{ "info", "USERS"},
{ "Merchant_id", Merchant_id.ToString()},
{ "data", JsonConvert.SerializeObject(addUserToField_data)},
};
apiResult = await _callApi.CallAPI(url, parameters, httpMethod);
if (apiResult.IsSuccess)
{
FieldsResponse2 = JsonConvert.DeserializeObject<FieldsResponse>(apiResult.Data.ToString());
if (FieldsResponse2.r != 0)
{
TempData["IsSuccess"] = false;
TempData["msg"] = "加入Fields失敗";
return RedirectToAction("ListUsers", queryString);
}
else
{
TempData["IsSuccess"] = true;
TempData["msg"] = "加入Fields成功";
return RedirectToAction("ListFields", queryString);
}
}
else
{
TempData["IsSuccess"] = false;
TempData["msg"] = "加入Fields失敗";
return RedirectToAction("ListUsers", queryString);
}
}
[HttpGet]
public async Task<IActionResult> ListMasks(int Merchant_id, int vault_id, int field_id)
{
// 確認使用者是否已經登入
if (!User.Identity.IsAuthenticated)
{
return RedirectToAction("Login");
return RedirectToAction("Login", "User");
}
ViewBag.Merchant_id = Merchant_id;
ViewBag.vault_id = vault_id;
ViewBag.field_id = field_id;
// 構建包含參數的查詢字串
var queryString = new RouteValueDictionary {
{ "Merchant_id", Merchant_id },
{ "vault_id", vault_id },
{ "field_id", field_id },
};
var DepartmentsResponse = new DepartmentsResponse();
var url = _config["IP"] + "/v2/vault/get";
var httpMethod = HttpMethod.Post;
// 取得使用者的 "token" Claim 值
......@@ -249,74 +538,161 @@ namespace backstage.Controllers
{
{ "Merchant_id", Merchant_id.ToString() },
{ "id", vault_id.ToString() },
{ "info", "USERS" }
{ "info", "INFO" }
};
var apiResult = await _callApi.CallAPI(url, parameters, httpMethod);
if (apiResult.IsSuccess)
{
var TokenVaultResponse = JsonConvert.DeserializeObject<TokenVaultResponse>(apiResult.Data.ToString());
if (TokenVaultResponse.r == 0)
{
if (TokenVaultResponse.info.Count > 0)
{
ViewBag.VaultName = TokenVaultResponse.info[0].name;
}
}
}
parameters = new Dictionary<string, string>
{
{ "Merchant_id", Merchant_id.ToString() },
{ "id", vault_id.ToString() },
{ "info", "MASKS" }
};
apiResult = await _callApi.CallAPI(url, parameters, httpMethod);
if (apiResult.IsSuccess)
{
var FieldsResponse = JsonConvert.DeserializeObject<FieldsResponse>(apiResult.Data.ToString());
if (FieldsResponse.r == 0)
{
//處理遮罩
var field = FieldsResponse.fields.Where(f => f.id == field_id).FirstOrDefault();
foreach (var u in field.users)
if (FieldsResponse.fields.Count > 0)
{
u.masksText = "[" + string.Join(", ", u.masks) + "]";
var existField = FieldsResponse.fields.Where(f => f.id == field_id).FirstOrDefault();
if (existField != null)
{
ViewBag.FieldName = existField.name;
return View(existField.masks);
}
}
#region 處理使用者選單
url = _config["IP"] + "/user/list";
httpMethod = HttpMethod.Post;
var types = new[] { "all" };
var types_data = new { inc = types };
parameters = new Dictionary<string, string>
{
{ "token", token },
{ "types", JsonConvert.SerializeObject(types_data)},
{ "email","1"},
{ "phone","1"}
//{ "types", "{\"inc\":[\"all\"]}"}
};
}
}
return RedirectToAction("ListFields", queryString);
}
apiResult = await _callApi.CallAPI(url, parameters, httpMethod);
if (apiResult.IsSuccess)
//新增欄位 ajax
[HttpPost]
public async Task<IActionResult> CreateField(FieldForCreate FieldForCreate)
{
// 構建包含參數的查詢字串
var queryString = new RouteValueDictionary {
{ "Merchant_id", FieldForCreate.merchant_id },
{ "vault_id", FieldForCreate.vault_id }
};
try
{
var url = _config["IP"] + "/v2/vault";
// 確認使用者是否已經登入
if (!User.Identity.IsAuthenticated)
{
return RedirectToAction("Login", "User");
}
if (string.IsNullOrEmpty(FieldForCreate.name))
{
TempData["IsSuccess"] = false;
TempData["msg"] = "名稱不能為空";
return RedirectToAction("ListFields", queryString);
}
var httpMethod = HttpMethod.Post;
// 取得使用者的 "token" Claim 值
string token = User.FindFirstValue("token");
//if (enabled == "on")
// enabled = "true";
//else
// enabled = "false";
var fieldData = new[]
{
new
{
var UserResponse = JsonConvert.DeserializeObject<UserResponse>(apiResult.Data.ToString());
var newUsers = new List<User>();
foreach (var u in UserResponse.Users)
action = "ADD",
name = FieldForCreate.name,
desc = FieldForCreate.name,
format_exp = FieldForCreate.format_exp,
enabled = true
}
};
var parameters = new Dictionary<string, string>
{
{ "Merchant_id", FieldForCreate.merchant_id.ToString() },
{ "info","FIELDS"},
{ "id", FieldForCreate.vault_id.ToString() },
{ "data",JsonConvert.SerializeObject(fieldData)}
};
var apiResult = await _callApi.CallAPI(url, parameters, httpMethod);
if (apiResult.IsSuccess)
{
var FieldsResponse = JsonConvert.DeserializeObject<FieldsResponse>(apiResult.Data.ToString());
if (FieldsResponse.r == 0)
{
if (FieldsResponse.failInfo == null)
{
foreach (var uu in field.users)
{
if (u.uid != uu.id)
{
newUsers.Add(u);
}
}
TempData["IsSuccess"] = true;
TempData["msg"] = "Create success";
return RedirectToAction("ListFields", queryString);
}
ViewBag.users = (from o in newUsers
select new SelectListItem
{
Value = o.uid.ToString(),
Text = o.uid + "_" + o.name + ", " + o.username
}).ToList();
}
#endregion
TempData["IsSuccess"] = false;
TempData["msg"] = System.Text.RegularExpressions.Regex.Unescape(string.Join(", ", FieldsResponse.failInfo));
return RedirectToAction("ListFields", queryString);
}
else
{
TempData["IsSuccess"] = false;
TempData["msg"] = apiResult.Message;
return RedirectToAction("ListFields", queryString);
}
return View(field.users);
}
}
return View();
catch (Exception e)
{
TempData["IsSuccess"] = false;
TempData["msg"] = e.Message + e.InnerException?.Message;
return RedirectToAction("ListFields", queryString);
}
TempData["IsSuccess"] = false;
TempData["msg"] = "Create fail.";
return RedirectToAction("ListFields", queryString);
}
[HttpPost]
public async Task<IActionResult> ListTokenVaultAjax(int merchantId)
{
......@@ -325,7 +701,7 @@ namespace backstage.Controllers
// 確認使用者是否已經登入
if (!User.Identity.IsAuthenticated)
{
return RedirectToAction("Login");
return RedirectToAction("Login", "User");
}
......@@ -471,6 +847,7 @@ namespace backstage.Controllers
}
#endregion
httpMethod = HttpMethod.Post;
url = _config["IP"] + "/v2/vault/get";
parameters = new Dictionary<string, string>
......@@ -504,52 +881,87 @@ namespace backstage.Controllers
}
[HttpPost]
public async Task<IActionResult> CreateTokenVault(DepartmentForCreate department)
public async Task<IActionResult> CreateTokenVault(TokenVaultForCreate tokenVault)
{
var url = _config["IP"] + "/tsp/merchant/vault/add";
#region 取得部門列表
var DepartmentsResponse = new DepartmentsResponse();
var url = _config["IP"] + "/merchant/list";
var httpMethod = HttpMethod.Post;
// 取得使用者的 "token" Claim 值
string token = User.FindFirstValue("token");
var parameters = new Dictionary<string, string>
{
{ "token", token }
};
var apiResult = await _callApi.CallAPI(url, parameters, httpMethod);
if (apiResult.IsSuccess)
{
DepartmentsResponse = JsonConvert.DeserializeObject<DepartmentsResponse>(apiResult.Data.ToString());
if (DepartmentsResponse.r == 0)
{
ViewBag.DepartmentsList = (from o in DepartmentsResponse.merchants
select new SelectListItem
{
Value = o.merchant_id.ToString(),
Text = o.merchant_id + "_" + o.name
}).ToList();
}
}
#endregion
// 確認使用者是否已經登入
if (!User.Identity.IsAuthenticated)
{
return RedirectToAction("Login");
return RedirectToAction("Login", "User");
}
if (string.IsNullOrEmpty(department.name))
if (string.IsNullOrEmpty(tokenVault.name))
{
ModelState.AddModelError("name", "名稱不能為空");
}
if (string.IsNullOrEmpty(department.phone))
if (tokenVault.merchant_id == 0)
{
department.phone = "null";
ModelState.AddModelError("merchant_id", "部門不能為空");
}
if (!ModelState.IsValid)
{
return View(tokenVault);
}
var httpMethod = HttpMethod.Post;
// 取得使用者的 "token" Claim 值
string token = User.FindFirstValue("token");
url = _config["IP"] + "/tsp/merchant/vault/add";
var parameters = new Dictionary<string, string>
parameters = new Dictionary<string, string>
{
{ "token", token },
{ "data",JsonConvert.SerializeObject(department)}
{ "data",JsonConvert.SerializeObject(tokenVault)}
};
var apiResult = await _callApi.CallAPI(url, parameters, httpMethod);
apiResult = await _callApi.CallAPI(url, parameters, httpMethod);
if (apiResult.IsSuccess)
{
var userAddResponse = JsonConvert.DeserializeObject<UserAddResponse>(apiResult.Data.ToString());
if (userAddResponse.r == 0)
{
TempData["IsSuccess"] = true;
TempData["msg"] = "新增部門成功";
return RedirectToAction("ListDepartments");
TempData["msg"] = "新增Vault成功";
return RedirectToAction("List");
}
else
{
TempData["IsSuccess"] = false;
TempData["msg"] = JsonConvert.SerializeObject(userAddResponse.m);
#region 取得部門列表
var DepartmentsResponse = new DepartmentsResponse();
DepartmentsResponse = new DepartmentsResponse();
url = _config["IP"] + "/merchant/list";
httpMethod = HttpMethod.Post;
// 取得使用者的 "token" Claim 值
......@@ -577,7 +989,7 @@ namespace backstage.Controllers
}
#endregion
return View(department);
return View(tokenVault);
}
......
......@@ -65,7 +65,7 @@ namespace backstage.Controllers
// 確認使用者是否已經登入
if (!User.Identity.IsAuthenticated)
{
return RedirectToAction("Login");
return RedirectToAction("Login","User");
}
......@@ -152,7 +152,7 @@ namespace backstage.Controllers
// 確認使用者是否已經登入
if (!User.Identity.IsAuthenticated)
{
return RedirectToAction("Login");
return RedirectToAction("Login","User");
}
......@@ -243,7 +243,7 @@ namespace backstage.Controllers
// 確認使用者是否已經登入
if (!User.Identity.IsAuthenticated)
{
return RedirectToAction("Login");
return RedirectToAction("Login","User");
}
if (string.IsNullOrEmpty(user.password))
......@@ -296,7 +296,7 @@ namespace backstage.Controllers
// 確認使用者是否已經登入
if (!User.Identity.IsAuthenticated)
{
return RedirectToAction("Login");
return RedirectToAction("Login","User");
}
......@@ -336,7 +336,7 @@ namespace backstage.Controllers
// 確認使用者是否已經登入
if (!User.Identity.IsAuthenticated)
{
return RedirectToAction("Login");
return RedirectToAction("Login","User");
}
......@@ -391,7 +391,7 @@ namespace backstage.Controllers
// 確認使用者是否已經登入
if (!User.Identity.IsAuthenticated)
{
return RedirectToAction("Login");
return RedirectToAction("Login","User");
}
if (string.IsNullOrEmpty(department.name))
......@@ -548,6 +548,77 @@ namespace backstage.Controllers
}
[HttpPost]
public async Task<ResultModel> AdminAddAjax(int uid)
{
var result = new ResultModel();
// 確認使用者是否已經登入
if (!User.Identity.IsAuthenticated)
{
result.IsSuccess = false;
result.Message = "未登入";
return result;
}
// 取得使用者的 "token" Claim 值
string token = User.FindFirstValue("token");
var url = _config["IP"] + "/admin/add";
var httpMethod = HttpMethod.Post;
var userData=new [] {
new {
uid=uid,
desc="",
roles = new[] { 1 },
enabled=1
}
};
var parameters = new Dictionary<string, string>
{
{ "token", token},
{ "user",JsonConvert.SerializeObject( userData)}
};
var apiResult = await _callApi.CallAPI(url, parameters, httpMethod);
if (apiResult.IsSuccess)
{
var Response = JsonConvert.DeserializeObject<Response>(apiResult.Data.ToString());
if (Response.r == 0)
{
result.IsSuccess = true;
result.Message ="權限調整成功";
return result;
}
else
{
result.IsSuccess = false;
result.Message = Response.m.ToString();
return result;
}
}
else
{
result.IsSuccess = false;
result.Message = apiResult.Message;
return result;
}
}
[HttpGet]
public async Task<IActionResult> Logout()
{
......
......@@ -77,7 +77,7 @@ namespace backstage.Helpers
content.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded");
request.Content.Headers.ContentLength = contentLength.Length;
request.Headers.Host = host;
//request.Headers.Host = host;
// 執行 API 呼叫
var response = await client.SendAsync(request);
......
......@@ -27,11 +27,11 @@ namespace backstage.Models.TokenVault
public class TokenVaultForCreate
{
public int type { get; set; }
public int type { get; set; } = 1;
public int merchant_id { get; set; }
public string name { get; set; }
public string url { get; set; }
public string url { get; set; } = "";
public string description { get; set; }
......@@ -54,6 +54,18 @@ namespace backstage.Models.TokenVault
public int Enabled { get; set; }
public string key_id { get; set; }
public List<User> users { get; set; }
public List<Mask> masks { get; set; }
}
public class FieldForCreate
{
public int merchant_id { get; set; }
public int vault_id { get; set; }
public string name { get; set; }
public string desc { get; set; }
public string format_exp { get; set; }
public int enabled { get; set; }
}
public class FieldsResponse
......@@ -61,8 +73,20 @@ namespace backstage.Models.TokenVault
public int r { get; set; }
public string m { get; set; }
public string flags { get; set; }
public List<string> failInfo { get; set; }
//public int count { get; set; }
public List<Field> fields { get; set; }
}
public class Mask
{
public int id { get; set; }
public int type { get; set; }//0:資料遮罩 *號 , 1:資料亂碼 相同格式 數字或文字替換
public int is_unique { get; set; }
public string setting { get; set; }
}
}
......@@ -120,5 +120,15 @@ public class emaildata
public string flags { get; set; }
}
public class Response
{
//user/list response
public int r { get; set; }
public Object m { get; set; }
public string flags { get; set; }
}
}
......@@ -32,7 +32,7 @@
<link href="~/css/myStylecss.css" rel="stylesheet" />
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-switch/dist/css/bootstrap3/bootstrap-switch.min.css">
<link href="~/css/tokenizationPlatform.css" rel="stylesheet" />
@RenderSection("header", required: false)
</head>
......@@ -41,7 +41,7 @@
<nav class="navbar default-layout-navbar col-lg-12 col-12 p-0 fixed-top d-flex flex-row">
<div class="text-center navbar-brand-wrapper d-flex align-items-center justify-content-center">
<a class="navbar-brand brand-logo" asp-controller="Home" asp-action="Index"><img src="~/images/logo.png" alt="logo" /></a>
<a class="navbar-brand brand-logo" asp-controller="Home" asp-action="Index"><img src="~/images/LOGO_nsecured.svg" alt="logo" /></a>
@*<a class="navbar-brand brand-logo-mini" asp-controller="Home" asp-action="Index"><img src="~/images/logo-mini.svg" alt="logo" /></a>*@
</div>
<div class="navbar-menu-wrapper d-flex align-items-stretch">
......@@ -55,10 +55,10 @@
{
<a class="nav-link dropdown-toggle" id="profileDropdown" href="#" data-toggle="dropdown" aria-expanded="false">
<div class="nav-profile-img">
<img src="~/images/faces/man.svg" alt="image">
<span class="availability-status online"></span>
</div>
<!--<div class="nav-profile-img">-->
@*<img src="~/images/faces/man.svg" alt="image">*@
<!--<span class="availability-status online"></span>
</div>-->
<div class="nav-profile-text">
<p class="mb-1 text-black">@Context.User.Claims.FirstOrDefault(m => m.Type == "username").Value</p>
</div>
......@@ -88,15 +88,77 @@
</li>
<!--<li>
<div class="row align-items-center">
<div class="col-auto pdR3 noneUnderMD">
<label class="text-black mgB0" for="department">部門:</label>
</div>
<div class="col-auto pdL0 pdR300 mgR20">
<select class="custom-select0 form-control form-control-sm" id="department">
<option value="0" selected="">台景達金融科技</option>
<option value="1">部門1</option>
<option value="2">部門2</option>
<option value="3">部門3</option>
</select>
</div>-->
<!-- <div class="col-auto pdL0">
<div class="nav-item nav-departmentSetting dropdown">
<a class="nav-link dropdown-toggle mgL3" id="departmentSetting" href="#" data-toggle="dropdown" aria-expanded="false">
<div class="nav-profile-img0">
<span class="mb-1 text-black">部門管理</span>
</div>
</a>
<div class="dropdown-menu navbar-dropdown" aria-labelledby="departmentSetting">
<a class="dropdown-item" href="">
<i class="mdi mdi-account-settings mr-2"></i>新增部門
</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="">
<i class="mdi mdi-lock-open mr-2"></i>部門清單
</a>
</div>
</div>
</div> -->
<!--</div>
</li>-->
<li class="nav-item dropdown">
<a class="nav-link count-indicator dropdown-toggle" id="languageDropdown" href="#" title="語言" data-toggle="dropdown" aria-expanded="false">
<i class="mdi mdi-earth"></i>
</a>
<div class="dropdown-menu dropdown-menu-right navbar-dropdown preview-list" aria-labelledby="languageDropdown">
<a class="dropdown-item preview-item">
<div class="preview-thumbnail">
<div class="preview-icon languageIcon">
<img src="/images/icon-lan-en-80.jpg">
</div>
</div>
<div class="preview-item-content d-flex align-items-start flex-column justify-content-center">
<h6 class="preview-subject font-weight-normal mb-1">English</h6>
</div>
</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item preview-item">
<div class="preview-thumbnail">
<div class="preview-icon languageIcon">
<img src="/images/icon-lan-cn-80.jpg">
</div>
</div>
<div class="preview-item-content d-flex align-items-start flex-column justify-content-center">
<h6 class="preview-subject font-weight-normal mb-1">中文</h6>
</div>
</a>
</div>
</li>
<li class="nav-item d-none d-lg-block full-screen-link">
<a class="nav-link">
<i class="mdi mdi-fullscreen" id="fullscreen-button"></i>
</a>
</li>
@*<li class="nav-item d-none d-lg-block full-screen-link">
<a class="nav-link">
<i class="mdi mdi-fullscreen" id="fullscreen-button"></i>
</a>
</li>*@
</ul>
<button class="navbar-toggler navbar-toggler-right d-lg-none align-self-center" type="button" data-toggle="offcanvas">
<span class="mdi mdi-menu"></span>
......
@model backstage.Models.TokenVault.Field
@{
ViewData["Title"] = "新增欄位";
}
<!-- partial -->
<div class="page-header">
<h3 class="page-title">新增欄位</h3>
<input id="msg" hidden value="@TempData["msg"]" />
@if (TempData["isSuccess"] != null)
{
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
}
<div id="msgDiv"></div>
</div>
<div class="row">
<div class="col-12 grid-margin stretch-card">
<div class="card">
<div class="card-body">
@*路徑列*@
<div class="col-md-12">
<ul class="breadcrumb breadcrumb_memberGo">
<li class="breadcrumb-item active"><a asp-action="List" asp-route-merchantId="@ViewBag.Merchant_id">資料代碼保險庫</a></li>
<li class="breadcrumb-item active"><a asp-action="ListFields" asp-route-merchant_id="@ViewBag.Merchant_id" asp-route-vault_id="@ViewBag.vault_id">欄位資料</a></li>
<li class="breadcrumb-item ">新增欄位</li>
</ul>
</div>
</div>
<form class="forms-sample" method="post" asp-action="CreateDepartment" autocomplete="off">
<div id="errorMsg" asp-validation-summary="All" class="text-danger"></div>
<p class="form-title card-description">基本資料</p>
<div class="row">
<div class="col-md-6 form-group required">
<label asp-for="name" class="col-form-label" for=""></label>
<input asp-for="name" type="text" class="form-control" >
</div>
<div class="col-md-4 form-group required">
<label asp-for="desc" class="col-form-label" for=""></label>
<input asp-for="desc" type="text" class="form-control" >
</div>
</div>
<div class="row">
<div class="col-md-4 form-group required">
<label asp-for="format_exp" class="col-form-label" for=""></label>
<input asp-for="format_exp" type="text" class="form-control" id="">
<span asp-validation-for="format_exp" class="text-danger"></span>
</div>
<div class="col-md-4 form-group required">
<label asp-for="Enabled" class="col-form-label" for=""></label>
<input asp-for="Enabled" type="text" class="form-control" id="">
<span asp-validation-for="Enabled" class="text-danger"></span>
</div>
</div>
<button type="submit" class="btn btn-primary mr-2">送出</button>
<a type="button" class="btn btn-light" asp-action="ListFields">返回列表</a>
</form>
</div>
</div>
</div>
</div>
@section Scripts{
<script nonce="KUY8VewuvyUYVEIvEFue4vwyiuf">
var msg = '@TempData["msg"]';
var IsSuccess = '@TempData["IsSuccess"]';
console.log(IsSuccess + msg);
if (msg != '') {
showAlert(IsSuccess, msg);
}
</script>
}
......@@ -21,13 +21,13 @@
<div class="card-body">
<h4 class="card-title">新增TokenVault</h4>
<form class="forms-sample" method="post" asp-action="CreateDepartment" autocomplete="off">
<form class="forms-sample" method="post" asp-action="CreateTokenVault" autocomplete="off">
<div id="errorMsg" asp-validation-summary="All" class="text-danger"></div>
<p class="form-title card-description">基本資料</p>
<div class="row">
<div class="col-md-6 form-group required">
<select id="selectDepartmentList" class="form-control" asp-items="ViewBag.DepartmentsList">
<select id="selectDepartmentList" class="form-control" asp-for="merchant_id" asp-items="ViewBag.DepartmentsList">
<option value="">選擇部門</option>
</select>
......@@ -54,7 +54,7 @@
<button type="submit" class="btn btn-primary mr-2">新增</button>
<a type="button" class="btn btn-light" asp-action="ListDepartments">返回列表</a>
<a type="button" class="btn btn-light" asp-action="List">返回列表</a>
</form>
</div>
</div>
......
......@@ -3,7 +3,35 @@
ViewData["Title"] = "Fields列表管理";
}
@section header{
<script>
//欄位檢查
function validateForm() {
var nameInput = document.getElementsByName("name")[0];
var nameValue = nameInput.value.trim();
var nameRegex = /^[a-zA-Z0-9_]+$/;
var nameErrorDiv = document.getElementById("nameError");
var submitButton = document.querySelector("button[type='submit']");
if (nameValue === "") {
nameErrorDiv.textContent = "名稱不能為空";
submitButton.disabled = true; // 禁用提交按鈕
return false; // 阻止表單提交
} else if (!nameRegex.test(nameValue)) {
nameErrorDiv.textContent = "名稱只能包含英文字母、數字和底線";
submitButton.disabled = true; // 禁用提交按鈕
return false; // 阻止表單提交
} else {
nameErrorDiv.textContent = "";
submitButton.disabled = false; // 啟用提交按鈕
return true; // 允許表單提交
}
}
</script>
}}
<div class="page-header">
<h3 class="page-title">Fields列表管理列表管理</h3>
<input id="msg" hidden value="@TempData["msg"]" />
......@@ -13,6 +41,7 @@
}
<div id="msgDiv"></div>
</div>
<div class="row">
<div class="col-lg-12 grid-margin stretch-card">
......@@ -29,6 +58,26 @@
</div>
</div>
<div style="display: flex; justify-content: space-between;">
<div style="float: left; width: 50%;">
<div class="table-responsive">
<table class="table table-striped table-hover0 table-bordered0" id="memberGoTbl_dataDetail">
<tbody>
<tr>
<th>保險庫</th>
<td class="item">ID</td>
<td class="content">@ViewBag.VaultInfo.vault_id</td>
<td class="item">名稱</td>
<td class="content">@ViewBag.VaultInfo.name</td>
</tr>
</tbody>
</table>
</div>
</div>
<div style="float: right;">
<a type="button" class="btn btn-info float-right mb-2" data-toggle="modal" data-target="#myModal">Create</a>
</div>
</div>
<div>
<div class="rank-table">
<div class="table-responsive">
......@@ -59,7 +108,7 @@
<td>
<!-- <button class="btn btnPermission btn-sm" data-toggle="modal" data-target="#permission">資料遮罩</button> -->
<a href="tokenVault_fields_masks.html" class="btn btnPermission btn-sm">資料遮罩</a>
<a class="btn btnPermission btn-sm masksBtn">資料遮罩</a>
<a class="btn btnPermission btn-sm usersBtn">使用者</a>
</td>
</tr>
......@@ -80,7 +129,46 @@
</div>
</div>
<!-- MODAL -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
<div class="modal-dialog" role="document">
<div class="modal-content">
<form class="forms-sample" method="post" asp-action="CreateField" autocomplete="off">
<div id="errorMsg" asp-validation-summary="All" class="text-danger"></div>
<h4 class="modal-title">基本資料</h4>
<div class="modal-body">
<div class="form-group">
<input name="merchant_id" value=@ViewBag.Merchant_id hidden />
<input name="vault_id" value=@ViewBag.vault_id hidden />
</div>
<div class="form-group required">
<label class="control-label">name</label>
<input name="name" type="text" class="form-control" oninput="validateForm()">
<div id="nameError" class="text-danger"></div>
</div>
<div class="form-group required">
<label class="control-label">desc</label>
<input name="desc" type="text" class="form-control">
</div>
<div class="form-group required">
<label class="control-label">format_exp</label>
<input name="format_exp" type="text" class="form-control">
</div>
<div class="form-group required">
<label class="control-label">Enabled</label>
<input name="enabled" type="checkbox" class="form-check-input" checked>
</div>
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-primary" id="createFieldBtn" disabled>送出</button>
<button type="button" class="btn btn-light" data-dismiss="modal">取消</button>
</div>
</form>
</div>
</div>
</div>
......@@ -96,14 +184,42 @@
}
//user按鈕
$(document).on('click', '.usersBtn', function () {
var merchant_id = parseInt('@ViewBag.Merchant_id');
var vault_id = parseInt('@ViewBag.vault_id');
var field_id = parseInt($(this).closest('tr').attr('id'));
//user按鈕
$(document).on('click', '.usersBtn', function () {
var merchant_id = parseInt('@ViewBag.Merchant_id');
var vault_id = parseInt('@ViewBag.vault_id');
var field_id = parseInt($(this).closest('tr').attr('id'));
window.location.href = '/tokenvault/ListUsers/' + "?vault_id=" + vault_id + "&Merchant_id=" + merchant_id+"&field_id="+field_id;
});
//mask按鈕
$(document).on('click', '.masksBtn', function () {
var merchant_id = parseInt('@ViewBag.Merchant_id');
var vault_id = parseInt('@ViewBag.vault_id');
var field_id = parseInt($(this).closest('tr').attr('id'));
window.location.href = '/tokenvault/ListMasks/' + "?vault_id=" + vault_id + "&Merchant_id=" + merchant_id+"&field_id="+field_id;
});
////Modal按鈕
//$("#createFieldBtn").on("click", function () {
// // 確認按鈕被點擊時的處理程式碼
// // 在這裡呼叫您的 API
// $('form').submit(function (e) {
// e.preventDefault(); // 防止表單自動提交
// $.post('/TokenVault/CreateField', $('form').serialize()).done(function (data) {
// console.log(data);
window.location.href = '/tokenvault/ListUsers/' + "?vault_id=" + vault_id + "&Merchant_id=" + merchant_id+"&field_id="+field_id;
});
// })
// });
//});
})
......
@model List<backstage.Models.TokenVault.Mask>
@{
ViewData["Title"] = "Mask列表管理";
}
<div class="page-header">
<h3 class="page-title">Mask列表管理</h3>
<input id="msg" hidden value="@TempData["msg"]" />
@if (TempData["isSuccess"] != null)
{
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
}
<div id="msgDiv"></div>
</div>
<div class="row">
<div class="col-lg-12 grid-margin stretch-card">
<div class="card">
<div class="card-body">
<div class="row">
@*路徑列*@
<div class="col-md-12">
<ul class="breadcrumb breadcrumb_memberGo">
<li class="breadcrumb-item active"><a asp-action="List" asp-route-merchantId="@ViewBag.Merchant_id">資料代碼保險庫</a></li>
<li class="breadcrumb-item active"><a asp-action="ListFields" asp-route-merchant_id="@ViewBag.Merchant_id" asp-route-vault_id="@ViewBag.vault_id">欄位資料</a></li>
<li class="breadcrumb-item ">資料遮罩</li>
</ul>
</div>
</div>
<table class="table table-striped table-hover0 table-bordered0" id="memberGoTbl_dataDetail">
<!-- <thead>
<tr>
<th colspan="9" >欄位資料列表</th>
</tr>
</thead> -->
<tbody>
<tr>
<th>保險庫</th>
<td class="item">ID</td>
<td class="content">@ViewBag.vault_id</td>
<td class="item">名稱</td>
<td class="content">@ViewBag.VaultName</td>
</tr>
<tr>
<th>欄位</th>
<td class="item">ID</td>
<td class="content">@ViewBag.field_id</td>
<td class="item">名稱</td>
<td class="content">@ViewBag.FieldName</td>
</tr>
</tbody>
</table>
<div style="float: right;">
<a type="button" class="btn btn-info float-right mb-2" data-toggle="modal" data-target="#myModal">Create</a>
</div>
<div class="table-responsive">
<table class="table table-striped table-hover0 table-bordered" id="memberGoTbl_masksList">
<thead>
<tr>
<th colspan="9">資料遮罩列表</th>
</tr>
</thead>
<tbody>
<tr>
<th style=" border-left: solid 1px #d9d9d9;">ID</th>
<th>種類</th>
<th>唯一值</th>
<th style=" border-right: solid 1px #d9d9d9;">設定</th>
</tr>
@if (Model.Count > 0)
{
@foreach (var m in Model)
{
<tr>
<td class="item">@m.id</td>
<td class="content">@m.type</td>
<td class="item">@m.is_unique</td>
<td class="content">@m.setting</td>
</tr>
}
}
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<!-- MODAL -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
<div class="modal-dialog" role="document">
<div class="modal-content">
<form class="forms-sample" method="post" asp-action="CreateField" autocomplete="off">
<div id="errorMsg" asp-validation-summary="All" class="text-danger"></div>
<h4 class="modal-title">基本資料</h4>
<div class="modal-body">
<div class="form-group">
<input name="merchant_id" value=@ViewBag.Merchant_id hidden />
<input name="vault_id" value=@ViewBag.vault_id hidden />
</div>
<div class="form-group required">
<label class="control-label">種類</label>
<input name="type" type="text" class="form-control" oninput="validateForm()">
<div id="typeError" class="text-danger"></div>
</div>
<div class="form-group required">
<label class="control-label">唯一直</label>
<input name="is_unique" type="text" class="form-control">
</div>
<div class="form-group required">
<label class="control-label">設定</label>
<input name="setting" type="checkbox" class="form-check-input" checked>
</div>
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-primary" id="createFieldBtn" disabled>送出</button>
<button type="button" class="btn btn-light" data-dismiss="modal">取消</button>
</div>
</form>
</div>
</div>
</div>
@section Scripts{
<script nonce="KUY8VewuvyUYVEIvEFue4vwyiuf">
$('document').ready(function () {
var msg = '@TempData["msg"]';
var IsSuccess = '@TempData["IsSuccess"]';
console.log(IsSuccess + msg);
if (msg != '') {
showAlert(IsSuccess, msg);
}
//user按鈕
$(document).on('click', '.usersBtn', function () {
var merchant_id = parseInt('@ViewBag.Merchant_id');
var vault_id = parseInt('@ViewBag.vault_id');
var field_id = parseInt($(this).closest('tr').attr('id'));
window.location.href = '/tokenvault/ListUsers/' + "?vault_id=" + vault_id + "&Merchant_id=" + merchant_id+"&field_id="+field_id;
});
})
</script>
}
\ No newline at end of file
......@@ -31,7 +31,7 @@
<div>
<a type="button" class="btn btn-info float-right mb-2" data-toggle="modal" data-target="#myModal">加入使用者</a>
<a type="button" class="btn btn-info float-right mb-2" data-toggle="modal" data-target="#myModal">Add User</a>
<div class="rank-table">
<div class="table-responsive">
<table class="table table-striped expense-color">
......@@ -54,21 +54,32 @@
{
@foreach (var i in Model)
{
<tr id="@i.id" class="expense-color">
<td>@i.id</td>
<td>@i.name</td>
<td>@i.username</td>
<td>@i.masksText</td>
<td>@i.allow_decrypt</td>
<td>@i.allow_new</td>
<td>@i.allow_update</td>
<td>@i.allow_del</td>
<td>@i.default_mask_id</td>
<td>
<a href="tokenVault_fields_users.html" class="btn btnPermission btn-sm">移除使用者</a>
</td>
</tr>
<tr id="@i.id" class="expense-color">
<td>@i.id</td>
<td>@i.name</td>
<td>@i.username</td>
<td>@i.masksText</td>
<td>
@if (i.allow_decrypt == 1)
{<span>&#x2714;</span>}
</td>
<td>
@if (i.allow_new == 1)
{<span>&#x2714;</span>}
</td>
<td>
@if (i.allow_update == 1)
{<span>&#x2714;</span>}
</td>
<td>@if (i.allow_del == 1)
{<span>&#x2714;</span>}</td>
<td>@i.default_mask_id</td>
<td>
<a href="tokenVault_fields_users.html" class="btn btnPermission btn-sm">移除使用者</a>
</td>
</tr>
}
}
......@@ -87,7 +98,7 @@
</div>
</div>
<!-- 模态框 -->
<!-- MODAL -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
<div class="modal-dialog" role="document">
<div class="modal-content">
......@@ -98,13 +109,13 @@
</button>
</div>
<div class="modal-body">
<select class="form-control" asp-items="ViewBag.users">
<select id="selectUser" class="form-control" asp-items="ViewBag.users">
<!-- 其他用户选项 -->
</select>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-primary" data-dismiss="modal">確認</button>
<button type="button" class="btn btn-primary" id="confirmBtn" data-dismiss="modal">確認</button>
</div>
</div>
</div>
......@@ -122,13 +133,33 @@
}
$("#confirmBtn").on("click", function () {
// 確認按鈕被點擊時的處理程式碼
// 在這裡呼叫您的 API
var merchant_id = parseInt('@ViewBag.Merchant_id');
var vault_id = parseInt('@ViewBag.vault_id');
var field_id = parseInt('@ViewBag.field_id');
var selectedUser = parseInt($("#selectUser").val()); // 替換為您實際使用的選取元素的 ID
$.ajax({
url: "/TokenVault/Addusers",
method: "POST",
contentType: "application/json",
data: JSON.stringify({ Merchant_id: merchant_id, vault_id: vault_id, field_id: field_id, user_id: selectedUser}),
success: function (response) {
// API 呼叫成功的處理程式碼
},
error: function (xhr, status, error) {
// API 呼叫失敗的處理程式碼
}
});
});
})
})
</script>
}
\ No newline at end of file
......@@ -20,7 +20,7 @@
<div class="card">
<div class="card-body">
<h4 class="card-title">編輯部門</h4>
<a type="button" class="btn btn-info float-right mb-2" data-toggle="modal" data-target="#myModal">加入使用者</a>
<div>
<form class="forms-sample" method="post" asp-action="CreateDepartment" autocomplete="off">
<div id="errorMsg" asp-validation-summary="All" class="text-danger"></div>
......
@model backstage.Models.Users.DepartmentsResponse
<div class="page-header">
<h3 class="page-title">部門列表管理</h3>
<h3 class="page-title">Department List</h3>
<input id="msg" hidden value="@TempData["msg"]" />
@if (TempData["isSuccess"] != null)
{
......@@ -13,11 +13,11 @@
<div class="col-lg-12 grid-margin stretch-card">
<div class="card">
<div class="card-body">
<a type="button" class="btn btn-info float-right mb-2" asp-action="CreateDepartment">新增部門</a>
<a type="button" class="btn btn-info float-right mb-2" asp-action="CreateDepartment">Create</a>
@*列表*@
<div class="">
<table class="table table-striped">
<table class="table table-striped ">
<thead>
<tr>
<th>merchant_id</th>
......
@model backstage.Models.Users.UserResponse
<div class="page-header">
<h3 class="page-title">使用者列表管理</h3>
<h3 class="page-title">User List</h3>
<input id="msg" hidden value="@TempData["msg"]" />
@if (TempData["isSuccess"] != null)
{
......@@ -14,8 +14,8 @@
<div class="col-lg-12 grid-margin stretch-card">
<div class="card">
<div class="card-body">
<div id="adminStatus" style="float: left;">User數量:@ViewBag.userCount / Admin 數量:@ViewBag.adminCount </div>
<a type="button" class="btn btn-info float-right mb-2" asp-action="CreateUser">新增使用者</a>
<div id="adminStatus" style="float: left;">User count:@ViewBag.userCount / Admin count:@ViewBag.adminCount </div>
<a type="button" class="btn btn-info float-right mb-2" asp-action="CreateUser">Create</a>
@*列表*@
<div class="">
......@@ -30,7 +30,7 @@
@*<th>locked</th>*@
<th>creation_date</th>
<th>enabled</th>
<th>管理員</th>
<th>Admin</th>
@*<th>birthdate</th>
<th>marital_status</th>
<th>gender</th>
......@@ -53,7 +53,7 @@
<td>@i.name</td>
@*<td>@i.name_en</td>*@
<td>@i.username</td>
@if (i.email!=null)
@if (i.email != null)
@if (i.email.Count > 0)
{
<td>@i.email[0].email</td>
......@@ -65,7 +65,8 @@
@*<td>@i.locked</td>*@
<td>@i.created_date</td>
<td>@i.enabled</td>
<td> <input type="checkbox" class="toggleButton" @(i.enabled==1 ? "checked" : "") disabled></td>
<td> <input type="checkbox" class="toggleButton" @(i.isAdmin ? "checked" : "")></td>
@*@if (i.isAdmin)
{ <td>是</td>}
......
......@@ -42,9 +42,9 @@
<div class="col-lg-4 mx-auto">
<div class="auth-form-light text-left p-5">
<div class="brand-logo">
@*<img src="~/images/logo.svg">*@
<img src="~/images/LOGO_nsecured.svg">
</div>
<h4 class="text-center">TokenVault管理後台</h4>
<h4 class="text-center">Tokenization Manager</h4>
<input id="msg" hidden value="@TempData["msg"]" />
@if (TempData["isSuccess"] != null)
{
......@@ -56,16 +56,16 @@
<div id="errorMsg" asp-validation-summary="All" class="text-danger"></div>
<div class="form-group">
<input class="form-control form-control-lg" asp-for="username" placeholder="帳號" />
<input class="form-control form-control-lg" asp-for="username" placeholder="username" />
<span asp-validation-for="username" class="text-danger"></span>
</div>
<div class="form-group">
<input class="form-control form-control-lg" type="password" asp-for="pwd" placeholder="密碼" />
<input class="form-control form-control-lg" type="password" asp-for="pwd" placeholder="password" />
<span asp-validation-for="pwd" class="text-danger"></span>
</div>
<div class="mt-3">
<button type="submit" class="btn btn-block btn-gradient-primary btn-lg font-weight-medium">登入</button>
<button type="submit" class="btn btn-block btn-gradient-primary btn-lg font-weight-medium">Login</button>
</div>
@*<div class="my-2 d-flex justify-content-between align-items-center">
<div class="form-check">
......@@ -79,7 +79,7 @@
<button type="button" class="btn btn-block btn-facebook">
<i class="mdi mdi-facebook mr-2"></i>使用facebook登入</button>
</div>*@
<div class="text-center mt-4 font-weight-light">沒有帳號?<a asp-action="Register" class="text-primary">建立</a></div>
@*<div class="text-center mt-4 font-weight-light">沒有帳號?<a asp-action="Register" class="text-primary">建立</a></div>*@
</form>
</div>
......
......@@ -19265,3 +19265,11 @@ tbody {
overflow: hidden;
}
.languageIcon img {
width: 26px !important;
height: 26px !important;
}
.departmentRow {
cursor: pointer;
}
\ No newline at end of file
/* ********************************* 全 共用 *********************************
*-----------------------------------------------------------------------------------------------*/
/* +common
*----------------------------------------------------------------------------*/
* {
margin: 0;
padding: 0;
}
html {
height: 100%;
margin: 0;
}
body {
margin:0;
/* font-size: 14px; */
height: 100%;
}
.modal-open-second{
overflow: hidden;
}
div, h1, h2, h3, h4, h5, h6, hr, p, form, label, input, textarea, img, ul, li {
text-align: left;
vertical-align: middle;
margin: 0;
padding: 0;
word-wrap: normal;
word-break: normal;
line-height: 170%;
border-width: 0;
font-family: "微軟正黑體", "蘋果儷中黑", "Lucida Grande", "Arial", "Arial Narrow";
}
/*th {
font-weight: normal;
}*/
ul, ol {
list-style: none;
}
p.lineHeight {
line-height:170%;
}
p.marginTop {
margin:10px 0;
}
p.marginLeft {
margin: 0 10px;
}
fieldset {
border: 0;
}
input,button,select,textarea {
outline:none
}
img {
max-width: 100%;
}
.show{
display: block !important;
}
/*當table裡的dropdpnw menu點開之後超過table的高度時,table高度自動增加
(加在table-responsive)
---------------------------------------------------------*/
/*.tableContentOverlap{
overflow-x: visible !important;
overflow-y: visible !important;
}*/
/**
*
* =anchor
*
**/
a:link, a:visited {
color: #337ab7;
font-weight: normal;
text-decoration: none;
}
a:hover {
color: #337ab7;
text-decoration: underline;
}
/**
*
* =clear,clearfix
*
**/
/* regular clearing apply to column that should drop below previous ones. */
.clear {
clear: both;
}
/* this needs to be first because FF3 is now supporting this */
.clearfix {
display: inline-block;
}
/* clearing floats without extra markup */
.clearfix:after {
display: block;
visibility: hidden;
clear: both;
height: 0;
font-size: 0;
content: ".";
}
/* hides from IE-mac \*/
* html .clearfix {
height: 1%;
}
.clearfix {
display: block;
}
/* end hide from IE-mac */
livedemo00.template-help.com/media="screen":after, :before {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
.cursor-context-menu{
cursor: context-menu !important;
}
.marginTop5{margin-top: 5px !important;}
.marginTop10{margin-top: 10px !important;}
.marginTop20{margin-top: 20px !important;}
.marginTop30{margin-top: 30px !important;}
.marginTop40{margin-top: 40px !important;}
.marginBottom5{margin-bottom: 5px !important;}
.marginBottom20{margin-bottom: 20px !important;}
.marginBottom30{margin-bottom: 30px !important;}
.marginBottom40{margin-bottom: 40px !important;}
.marginLeft20{margin-left: 20px !important}
.marginLeft15{margin-left: 15px !important}
.marginLeft5{margin-left: 5px !important}
.marginRight5{margin-right: 5px !important}
.paddingLeft0{padding-left: 0px !important !important;}
.paddingLeft10{padding-left: 10px !important;}
.paddingLeft15{padding-left: 15px !important;}
.paddingRight0{padding-right: 0px !important;}
.paddingRight10{padding-right: 10px !important;}
.paddingTop40{padding-top: 40px !important;}
/* +gotop
*----------------------------------------------------------------------------*/
#gotop {
display: none;
position: fixed;
bottom: 2%;
right: 20px;
width: 43px;
height: 43px;
background: url(../images/02/all/totop.png) no-repeat 0 0;
text-indent: -100000px;
filter: alpha(opacity=40);
-moz-opacity: 0.4;
-khtml-opacity: 0.4;
cursor: pointer;
z-index: 200;
}
#gotop:hover {
background-position: -43px 0;
}
.font_bold{
font-weight: bold;
}
/* memberGo footer
*----------------------------------------------------------------------------*/
footer {
/*overflow: hidden;*/
padding: 15px 0;
background: #f4f4f4;
color: #5c5c5c;
/* position: absolute;
bottom: 0;
right: 0;
left: 0;*/
width:100%;
}
footer a{
color: #2d2d2d !important;
text-decoration: none !important;
}
footer .conta {
text-align: center;
margin-top: 10px;
margin-bottom: 10px;
display: inline-block;
font-size: 16px;
color: #5c5c5c;
}
/*footer .conta p{
margin-top: 10px;
margin-bottom: 20px;
display: inline-block;
font-size: 16px;
color: #5c5c5c;
text-align: center;
}
#copyrightDiv{
text-align: center !important;
}
*/
/*footer .conta p i{
color: #5c5c5c;
}
*/
/* ********************************* 登入頁 login page *********************************
*-----------------------------------------------------------------------------------------------*/
.veryTop_logoBar_wrap{
/* width: 100% !important; */
/* margin: 0px 0px 0px 0px !important; */
/* background-color: #fff !important; */
/*color:#e4e4e4;*/
/* border-bottom: 3px solid #3c3c3c; */
/*box-shadow: 0px 0.5px 1px 1px rgba(181,179,181,0.7);*/
box-shadow: 0px 1px 5px 1px rgba(181,179,181,0.4);
padding-top: 6px;
padding-bottom: 6px;
}
.logoBar{
margin: 0px 0px 0px 0px !important;
padding: 15px 0px 10px 0px !important;
line-height: 120% !important;
}
.logoBar img{
height: 40px;
}
.bgDiv{
background-image: url(../images/memberGo/MemberGoLoginBG.jpg);
/* Full height */
height: 100%;
/* Center and scale the image nicely */
background-position: center;
background-repeat: no-repeat;
background-size: cover;
}
.loginBlock{
padding-top: 50px;
padding-left: 15px;
padding-right: 15px;
}
.ServiceLogoRow {
padding-top: 10px;
padding-bottom: 10px;
padding-left: 0px !important;
padding-right: 0px !important;
text-align: center;
}
.ServiceLogoRow img{
/*height: 35px; */
margin-bottom: 50px;
}
.loginField{
padding-top: 50px;
padding-bottom: 50px;
padding-left: 40px !important;
padding-right: 40px !important;
margin-bottom: 40px;
box-shadow: 3px 3px 3px 3px rgba(0,0,0,0.3);
-moz-box-shadow: 3px 3px 3px 3px rgba(0,0,0,0.3);
-webkit-box-shadow: 8px 8px 10px 1px rgba(0,0,0,0.3);
background-color: #fff;
}
.loginForm .form-group{
margin-bottom: 30px;
}
.loginForm input{
height: 40px;
background-color: #e8e8e8;
border-top-right-radius: 4px !important;
border-bottom-right-radius: 4px !important;
border: 0px;
box-shadow: none;
padding-left: 3px;
}
.loginForm .input-group-addon{
border: 0px;
padding-left: 15px;
padding-right: 15px;
padding-top: 7px;
background-color: #e8e8e8;
border-top-left-radius: 4px !important;
border-bottom-left-radius: 4px !important;
}
.loginSubmit{
margin-top: 60px;
margin-bottom: 0px !important;
}
.loginBtnDiv{
text-align: center;
}
.btn-loginSubmit{
width: 60%;
height: 40px;
background-color: #e8e8e8 !important;
}
.miscellaneous{
text-align: right;
}
.miscellaneous img{
margin-left: 5px;
vertical-align: middle;
width: 25px;
height:auto;
}
/* ********************************* 登入之後 After login 共用 *********************************
*-----------------------------------------------------------------------------------------------*/
/* memberGo after login - very top bar
*----------------------------------------------------------------------------*/
.veryTop_Bar_wrap{
/* width: 100% !important; */
/* margin: 0px 0px 0px 0px !important; */
/* background-color: #fff !important; */
/* border-bottom: 3px solid #3c3c3c; */
vertical-align: middle !important;
/*box-shadow: 0px 0.5px 1px 1px rgba(181,179,181,0.7);*/
box-shadow: 0px 1px 5px 1px rgba(181,179,181,0.4);
padding-top: 6px;
padding-bottom: 6px;
}
.navbar-tokenizationPlatform{
background-color: #fff!important;
font-size: 0.875rem;
}
.navbar-tokenizationPlatform > .container-fluid{
padding-left: 0px;
padding-right: 0px
}
.navbar-tokenizationPlatform .navbar-brand img.logo{
width: 300px;
}
.navbar-tokenizationPlatform .navbar-collapse{
flex-grow: unset;
}
.navbar-tokenizationPlatform .dropdown-menu{
left: unset;
right: 0px;
}
.logoBlock{
padding: 5px 0px 5px 0px !important;
line-height: 4em!important;
}
.logoBlock img{
height: 40px;
vertical-align: middle;
}
.topBarCompanyName{
text-align: right;
margin: 0px 0px 0px 0px !important;
padding: 5px 0px 5px 0px !important;
line-height: 4em !important;
}
.topBarSelectBlock{
display: flex;
justify-content: end;
}
@media screen and (max-width: 767px){
.topBarSelectBlock{
padding-top: 10px;
}
.navbar-tokenizationPlatform ul.navbar-nav {
flex-direction: row;
}
}
.topBarSelect{
margin: 0px 0px 0px 0px;
font-size: 0.85em;
color: #5C5C5C;
border:none;
outline:none;
display: inline-block;
/* appearance:none; */
cursor:pointer;
background-color: #f8f8f8;
height: ;
border-radius: 3px;
border:0.5px solid #707070;
padding: 1px;
box-shadow: 0px 1px 1px 1px rgba(181,179,181,0.8);
}
.topBarCounts{
display: flex;
align-items: center;
justify-content: end;
margin-top: 10px;
line-height: 100%;
/* margin: 0px 0px 0px 0px !important;
padding: 5px 0px 5px 10px !important;
line-height: 4em !important; */
}
.countDown{
text-align: left;
color: #d9534f;
font-weight: bold;
line-height: 100%;
}
.dropdown-menu-tokenizationPlatform .dropdown-item:active{
background-color: #35a9e1;
}
/* memberGo after login - very top bar - buttons
*----------------------------------------------------------------------------*/
.btn.btnLogout{
/* margin-bottom: 3px; */
margin-left: 10px;
/* text-align: center; */
/* vertical-align: middle; */
font-size: 1em;
/* display: inline-block; */
padding-top: 2px;
padding-bottom: 2px;
padding-left: 8px;
padding-right: 8px;
color:#fff !important;
/* background-color: #9fbf49; */
background-color: #35a9e1;
-webkit-transition-duration: 0.2s;
transition-duration: 0.2s;
/* cursor: pointer; */
/* border-radius: 3px; */
border: 1px solid #35a9e1;
/* box-shadow: 0px 1px 1px 1px rgba(181,179,181,0.8); */
}
.btn.btnLogout:hover {
color: #ffffff;
text-decoration: none;
/* background-color: #90af3d; */
opacity: 0.8;
}
.btn.btnLogout:focus{
color: #ffffff;
}
.btn.btnSettings{
/* margin-bottom: 3px; */
margin-left: 10px;
/* text-align: center; */
/* vertical-align: middle; */
font-size: 1em;
/* display: inline-block; */
padding-top: 2px;
padding-bottom: 2px;
padding-left: 8px;
padding-right: 8px;
color:#35a9e1 !important;
background-color: #fff;
-webkit-transition-duration: 0.2s;
transition-duration: 0.2s;
cursor: pointer;
/* border-radius: 3px; */
border: 1px solid #35a9e1;
/* box-shadow: 0px 1px 1px 1px rgba(181,179,181,0.8); */
}
.btn.btnSettings:hover {
color: #ffffff;
text-decoration: none;
/* background-color: #dda14b; */
background-color: #f2f2f2;
}
.btn.btnSettings:focus{
color: #ffffff;
}
/* gotop Button
*----------------------------------------------------------------------------*/
#gotop {
display: none;
position: fixed;
bottom: 2%;
right: 20px;
width: 43px;
height: 43px;
background: url(../images/common/totop.png) no-repeat 0 0;
text-indent: -100000px;
filter: alpha(opacity=40);
-moz-opacity: 0.4;
-khtml-opacity: 0.4;
cursor: pointer;
z-index: 200;
}
#gotop:hover {
background-position: -43px 0;
}
/* MemberGo main content - tilte and body
*----------------------------------------------------------------------------*/
.contentTitle{
margin-bottom: 30px;
font-size: 22px;
font-weight: 400;
padding: 0px 0px 0px 10px;
vertical-align: middle;
clear: both;
}
.contentTitle img{
height: 60px;
vertical-align: middle;
margin-right: 10px;
/*width: 26px;*/
}
.contentSubtitle{
margin-left: 0px;
margin-bottom: 20px;
font-size: 20px;
font-weight: 700;
padding: 0px 0px 0px 10px;
vertical-align: middle;
clear: both;
}
.contentSubtitle a{
font-weight: 700;
}
.contentSubtitle a:hover{
text-decoration: none;
}
.contentSubtitle img{
height: 30px;
vertical-align: middle;
}
.contentBody{
margin-top:0px;
margin-right: 0px;
margin-bottom: 60px;
margin-left: 0px;
padding-top: 10px;
padding-right: 10px;
padding-bottom: 10px;
padding-left: 10px;
}
/* small buttom style for 修改 儲存 取消
*----------------------------------------------------------------------------*/
.btn.btnModify{
font-size: 0.9em;
display: inline-block;
padding: 3px 8px;
color: #ffffff;
background-color: #eb852b;
border: none;
-webkit-transition-duration: 0.2s;
transition-duration: 0.2s;
cursor: pointer;
}
.btn.btnModify:hover{
color: #ffffff;
background-color: #f6ae6e;
border: none;
}
.btn.btnModify:focus{
color: #ffffff;
}
.btn.btnModify2{
font-size: 0.75em;
display: inline-block;
padding: 3px 8px;
color: #ffffff;
background-color: #eb852b;
border: none;
-webkit-transition-duration: 0.2s;
transition-duration: 0.2s;
cursor: pointer;
}
.btn.btnModify2:hover{
color: #ffffff;
background-color: #f6ae6e;
border: none;
}
.btn.btnModify2:focus{
color: #ffffff;
}
.btn.btnMore{
font-size: 8px;
display: inline-block;
padding: 2px 8px;
color: #ffffff;
background-color: #8c8c8c;
border: none;
-webkit-transition-duration: 0.2s;
transition-duration: 0.2s;
cursor: pointer;
}
.btn.btnMore:hover{
color: #ffffff;
background-color: #636262;
border: none;
}
.btn.btnMore:focus{
color: #ffffff;
}
.btn.btnModifyDis2{
font-size: 0.75em;
display: inline-block;
padding: 3px 8px;
color: #ffffff;
background-color: #5e5e5e;
border: none;
-webkit-transition-duration: 0.2s;
transition-duration: 0.2s;
cursor: pointer;
}
.btn.btnModifyDis2:hover{
color: #ffffff;
background-color: #b8b8b8;
border: none;
}
.btn.btnModifyDis2:focus{
color: #ffffff;
}
.btn.btnSave{
font-size: 0.75em;
display: inline-block;
padding: 3px 8px;
color: #ffffff;
background-color: #696969;
border: none;
-webkit-transition-duration: 0.2s;
transition-duration: 0.2s;
cursor: pointer;
margin-left:5px;
}
.btn.btnSave:hover{
color: #ffffff;
background-color: #a9a9a9;
border: none;
}
.btn.btnSave:focus{
color: #ffffff;
}
.btn.btnChange{
font-size: 0.75em;
display: inline-block;
padding: 3px 8px;
color: #ffffff;
background-color: #c83210;
border: none;
-webkit-transition-duration: 0.2s;
transition-duration: 0.2s;
cursor: pointer;
margin-left:5px;
}
.btn.btnChange:hover{
color: #ffffff;
background-color: #f0856d;
border: none;
}
.btn.btnChange:focus{
color: #ffffff;
}
.btn.btnRight{
font-size: 0.9em;
display: inline-block;
padding: 3px 8px;
color: #ffffff;
background-color: #5bc0de;
border: none;
-webkit-transition-duration: 0.2s;
transition-duration: 0.2s;
cursor: pointer;
margin-left:5px;
margin-bottom: 5px;
}
.btn.btnRight:hover{
color: #ffffff;
background-color: #aae5f6;
border: none;
}
.btn.btnRight:focus{
color: #ffffff;
}
.btn.btnTempStop{
font-size: 0.9em;
display: inline-block;
padding: 3px 8px;
color: #ffffff;
background-color: #f29818;
border: none;
-webkit-transition-duration: 0.2s;
transition-duration: 0.2s;
cursor: pointer;
margin-left:5px;
margin-bottom: 5px;
}
.btn.btnTempStop:hover{
color: #ffffff;
background-color: #f6b75e;
border: none;
}
.btn.btnTempStop:focus{
color: #ffffff;
}
.btn.btnReStart{
font-size: 0.9em;
display: inline-block;
padding: 3px 8px;
color: #ffffff;
background-color: #5cb85c;
border: none;
-webkit-transition-duration: 0.2s;
transition-duration: 0.2s;
cursor: pointer;
margin-left:5px;
margin-bottom: 5px;
}
.btn.btnReStart:hover{
color: #ffffff;
background-color: #8ce78c;
border: none;
}
.btn.btnReStart:focus{
color: #ffffff;
}
.btn.btnReStart2{
font-size: 0.75em;
display: inline-block;
padding: 3px 8px;
color: #ffffff;
background-color: #5cb85c;
border: none;
-webkit-transition-duration: 0.2s;
transition-duration: 0.2s;
cursor: pointer;
}
.btn.btnReStart2:hover{
color: #ffffff;
background-color: #8ce78c;
border: none;
}
.btn.btnReStart2:focus{
color: #ffffff;
}
.btn.btnStop{
font-size: 0.9em;
display: inline-block;
padding: 3px 8px;
color: #ffffff;
background-color: #696969;
border: none;
-webkit-transition-duration: 0.2s;
transition-duration: 0.2s;
cursor: pointer;
margin-left:5px;
margin-bottom: 5px;
}
.btn.btnStop:hover{
color: #ffffff;
background-color: #a9a9a9;
border: none;
}
.btn.btnStop:focus{
color: #ffffff;
}
.btn.btnDelete{
font-size: 0.9em;
display: inline-block;
padding: 3px 8px;
color: #ffffff;
background-color: #d9534f;
border: none;
-webkit-transition-duration: 0.2s;
transition-duration: 0.2s;
cursor: pointer;
margin-left:5px;
margin-bottom: 5px;
}
.btn.btnDelete:hover{
color: #ffffff;
background-color: #ed9795;
border: none;
}
.btn.btnDelete:focus{
color: #ffffff;
}
.btn.btnResetPwd{
font-size: 0.9em;
display: inline-block;
padding: 3px 8px;
color: #ffffff;
background-color: #1b67bc;
border: none;
-webkit-transition-duration: 0.2s;
transition-duration: 0.2s;
cursor: pointer;
margin-left:5px;
margin-bottom: 5px;
}
.btn.btnResetPwd:hover{
color: #ffffff;
background-color: #438cde;
border: none;
}
.btn.btnResetPwd:focus{
color: #ffffff;
}
.btn.btnTempStop2{
font-size: 0.75em;
display: inline-block;
padding: 3px 8px;
color: #ffffff;
background-color: #f29818;
border: none;
-webkit-transition-duration: 0.2s;
transition-duration: 0.2s;
cursor: pointer;
}
.btn.btnTempStop2:hover{
color: #ffffff;
background-color: #f6b75e;
border: none;
}
.btn.btnTempStop2:focus{
color: #ffffff;
}
.btn.btnDelete2{
font-size: 0.75em;
display: inline-block;
padding: 3px 8px;
color: #ffffff;
background-color: #d9534f;
border: none;
-webkit-transition-duration: 0.2s;
transition-duration: 0.2s;
cursor: pointer;
}
.btn.btnDelete2:hover{
color: #ffffff;
background-color: #ed9795;
border: none;
}
.btn.btnDelete2:focus{
color: #ffffff;
}
.btn.btnRight2{
font-size: 0.75em;
display: inline-block;
padding: 3px 8px;
color: #ffffff;
background-color: #5bc0de;
border: none;
-webkit-transition-duration: 0.2s;
transition-duration: 0.2s;
cursor: pointer;
}
.btn.btnRight2:hover{
color: #ffffff;
background-color: #aae5f6;
border: none;
}
.btn.btnRight2:focus{
color: #ffffff;
}
.btn.btnCancelTrans{
font-size: 0.75em;
display: inline-block;
padding: 3px 8px;
color: #ffffff;
background-color: #d9534f;
border: none;
-webkit-transition-duration: 0.2s;
transition-duration: 0.2s;
cursor: pointer;
}
.btn.btnCancelTrans:hover{
color: #ffffff;
background-color: #ed9795;
border: none;
}
.btn.btnCancelTrans:focus{
color: #ffffff;
}
.btn.btnDetail{
font-size: 0.75em;
display: inline-block;
padding: 3px 8px;
color: #ffffff;
background-color: #1b67bc;
border: none;
-webkit-transition-duration: 0.2s;
transition-duration: 0.2s;
cursor: pointer;
}
.btn.btnDetail:hover{
color: #ffffff;
background-color: #438cde;
border: none;
}
.btn.btnDetail:focus{
color: #ffffff;
}
/* ********************************* MemberGo page 樣式*********************************
*-----------------------------------------------------------------------------------------------*/
/*MemberGo項目頁****************************
---------------------------------------------------*/
.memberGo_imgMenuPage{
margin-top: 150px;
margin-bottom: 60px;
}
/* MemberGo項目頁 - 左邊 "Token Vault"
---------------------------------------*/
#left_tVualt{
text-align: center;
}
#left_tVualt img{
height: 200px;
}
#left_tVualt p{
font-size: 1.2em;
text-align: center;
margin-top: 40px;
margin-bottom: 100px;
}
/* MemberGo項目頁 - 中間 "Transaction List"
---------------------------------------*/
#center_trsactionList{
text-align: center;
}
#center_trsactionList img{
height: 200px;
}
#center_trsactionList p{
font-size: 1.2em;
text-align: center;
margin-top: 40px;
margin-bottom: 100px;
}
/* MemberGo項目頁 - 右邊 "console"
---------------------------------------*/
#rigth_console{
text-align: center;
}
#rigth_console img{
height: 200px;
}
#rigth_console p{
font-size: 1.2em;
text-align: center;
margin-top: 40px;
margin-bottom: 100px;
}
/* MemberGo "設定"drapdown按鈕樣式 settings dropdown menu list
------------------------------------------------------------------*/
.dropdown-menu.dropdown-menu-right.settingsListForMemberGo{
min-width: 140px !important;
margin-top: -15px !important;
background-color: #b5b5b5;
}
.settingsListForMemberGo li{
text-align: center !important;
}
.settingsListForMemberGo li a{
text-align: center !important;
color: #fff !important;
}
.settingsListForMemberGo li a:hover{
text-align: center !important;
color: #000 !important;
transition: 0.1s;
}
/* Console項目頁 - 左邊 "Token IP Binder"
---------------------------------------*/
#left_tokenIPBinder{
text-align: center;
}
#left_tokenIPBinder img{
height: 200px;
}
#left_tokenIPBinder p{
font-size: 1.2em;
text-align: center;
margin-top: 40px;
margin-bottom: 100px;
}
/* Console項目頁 - 右邊 "API Key"
---------------------------------------*/
#right_APIKey{
text-align: center;
}
#right_APIKey img{
height: 200px;
}
#right_APIKey p{
font-size: 1.2em;
text-align: center;
margin-top: 40px;
margin-bottom: 100px;
}
/* Console項目頁 - "商家銀行帳戶管理"
---------------------------------------*/
#MerBankAcc{
text-align: center;
}
#MerBankAcc img{
height: 200px;
}
#MerBankAcc p{
font-size: 1.2em;
text-align: center;
margin-top: 40px;
margin-bottom: 100px;
}
/* MemberGo modal - 彈出視窗 pop up form 共用樣式
--------------------------------------------------*/
.modalforMemberGo .modal-header{
color: #3b3b3b;
background-color: #f4f4f4;
border-bottom: 1.5px solid #878787;
}
.modalforMemberGo .modal-body{
padding-left: 1.5rem;
padding-right: 1.5rem
}
.modalforMemberGo .modal-footer{
background-color: #d7d7d7;
}
.modalforMemberGo .close{
font-size: 2rem;
}
.modalforMemberGo .modalBody_pwdReset{
padding-top:35px;
padding-bottom: 35px;
}
.modalforMemberGo .modal-title{
font-size: 1.625rem;
}
.modalforMemberGo .modal-title img{
height: 32px;
vertical-align: middle;
margin-right: 0px;
}
.modalforMemberGo .modal-title i{
color: #35a9e1;
}
.modalforMemberGo .selectpicker-tokenization + .dropdown-toggle{
border: 1px solid #ccc;
background-color: #eaf0f2;
}
.secondModal{
padding-right: 0px !important;
}
/* Submit Block Div
*--------------------------------*/
.modalforMemberGo .SubmitBlock{
text-align: center;
margin-top: 70px;
margin-bottom: 20px;
}
.modalforMemberGo .SubmitBlock_sm{
margin-top: 50px !important;
margin-bottom: 0px !important;
}
.SubmitBlock input[type="reset"]{
margin-bottom: 3px;
margin-left: 5px;
margin-right: 5px;
display: inline-block;
padding: 8px 50px;
color: #ffffff;
background-color: #eb852b;
border: none;
-webkit-transition-duration: 0.2s;
transition-duration: 0.2s;
cursor: pointer;
border-radius: 4px;
line-height: 1.42857143;
}
.SubmitBlock input[type="reset"]:hover{
opacity: 0.6;
}
.btn.btnSubmit{
margin-bottom: 3px;
margin-left: 5px;
margin-right: 5px;
display: inline-block;
padding: 8px 60px;
-webkit-transition-duration: 0.2s;
transition-duration: 0.2s;
cursor: pointer;
}
.btn.btnReset{
margin-bottom: 3px;
margin-left: 5px;
margin-right: 5px;
display: inline-block;
padding: 8px 60px;
-webkit-transition-duration: 0.2s;
transition-duration: 0.2s;
cursor: pointer;
}
.btn.btnConfirmSmall{
margin-bottom: ;
margin-left: ;
margin-right:;
display: inline-block;
padding: 4px 12px;
color: #3b3b3b;
background-color: #d5d5d5;
border: none;
-webkit-transition-duration: 0.2s;
transition-duration: 0.2s;
cursor: pointer;
}
.btn.btnConfirmSmall:hover{
color: #ffffff;
background-color: #7c7c7c;
border: none;
}
.btn.btnSubmitSmall:focus{
color: #ffffff;
}
.btn.btnResetSmall{
margin-left:;
margin-right:;
display: inline-block;
padding: 4px 12px;
color: #ffffff;
background-color: #eb852b;
border: none;
-webkit-transition-duration: 0.2s;
transition-duration: 0.2s;
cursor: pointer;
}
.btn.btnResetSmall:hover{
color: #ffffff;
background-color: #eba92b;
border: none;
}
.btn.btnResetSmall:focus{
color: #ffffff;
}
/* breadcrumb
*---------------------*/
.breadcrumb_memberGo{
background-color: #fff !important;
margin-top: 20px !important; /*edit at 11.22*/
/* margin-bottom: 50px !important; */
padding-left: 0px !important;
padding-right: 0px !important;
padding-top: 0px !important;
font-size: 0.875rem;
}
.storeIDBlock{
font-weight: 500;
font-size: 1.15em;
padding-left: 0px !important;
padding-right: 0px !important;
margin-right: 0px !important;
margin-left: 0px !important;
margin-top: 10px !important;
}
.storeIDBlock img{
height: 1.7em !important;
padding-right: 3px;
vertical-align: middle;
}
.breadcrumbBlock{
margin-right: 0px !important;
margin-left: 0px !important;
}
/* select
*---------------------*/
.selectpicker-tokenization + .dropdown-toggle{
border: 1px solid #ccc;
background-color: #eaf0f2;
}
/****** MemberGo - 交易紀錄明細 頁面 TransactionList *******
*--------------------------------------------------------------------------*/
/* 條件式查詢
*----------------------------------------*/
#filterSearch_memberGo_TransactionList{
font-size: 15px !important;
margin-top: 5px !important;
margin-bottom: 40px !important;
display: block !important;
color: #4e4f51 !important;
font-weight: 600 !important;
}
#filterSearch_memberGo_TransactionList a{
color: #1488e0;
text-decoration: none;
cursor: pointer;
}
#filterSearch_memberGo_TransactionList a:after{
font-family: "Glyphicons Halflings";
content: "\e114";
margin-left: 5px;
}
#filterSearch_memberGo_TransactionList a.collapsed:after {
content: "\e080";
}
#advSearchContent .form-group{
margin-bottom: 8px;
margin-right: 30px;
}
.SubmitResetButton_filterSearch{
text-align: center;
margin-top: 20px;
margin-bottom:30px;
}
.SubmitResetButton_filterSearch .butSubmit{
margin-bottom: 3px;
margin-left: 5px;
margin-right: 5px;
display: inline-block;
padding: 8px 60px;
border: none;
-webkit-transition-duration: 0.2s;
transition-duration: 0.2s;
cursor: pointer;
}
.SubmitResetButton_filterSearch .btnReset{
margin-bottom: 3px;
margin-left: 5px;
margin-right: 5px;
display: inline-block;
padding: 8px 60px;
border: none;
-webkit-transition-duration: 0.2s;
transition-duration: 0.2s;
cursor: pointer;
}
.SubmitResetButton_filterSearch .btnSearchReset{
margin-bottom: 3px;
margin-left: 5px;
margin-right: 5px;
display: inline-block;
padding: 8px 60px;
border: none;
background-color: #dddddd;
cursor: pointer;
color: #333;
}
.userSelect{
}
/* -----------日曆 calendar---------*/
#sandbox-container input[type="text"]{
border-radius: 3px !important;
}
#sandbox-container .datepicker{
line-height: 100% !important;
}
#sandbox-container{
width: auto !important;
}
/* MemberGo - 交易紀錄明細 頁面 - 交易紀錄列表 table
*------------------------------------------------*/
#memberGoTbl_transactionList{
width: 99%;
/*margin-bottom: 80px;*/
margin-bottom: 115px;
font-size: 1em;
}
#memberGoTbl_transactionList a{
text-decoration: none;
color: #1488e0;
cursor: pointer;
}
#memberGoTbl_transactionList tbody tr:last-child{
border-bottom:solid 1px #d9d9d9;
}
#memberGoTbl_transactionList thead th{
font-size: 17px;
border: none;
vertical-align: middle;
background: #c5c5c5 !important;
background: linear-gradient(45deg, #c5c5c5 0%, #c5c5c5 80%, #fec946 80%, #fec946 100%) !important;
background: -webkit-linear-gradient(45deg, #c5c5c5 0%, #c5c5c5 80%, #fec946 80%, #fec946 100%) !important;
background: -o-linear-gradient(45deg, #c5c5c5 0%, #c5c5c5 80%, #fec946 80%, #fec946 100%) !important;
background: -moz-linear-gradient(45deg, #c5c5c5 0%, #c5c5c5 80%, #fec946 80%, #fec946 100%) !important;
color: #000 !important;
padding: 6px 15px !important;
border-top-left-radius: 4px !important;
border-top-right-radius: 0px !important;
}
#memberGoTbl_transactionList tbody th{
font-weight: bold;
padding: 10px 10px 10px 10px;
text-align: center;
vertical-align: middle !important;
background-color:
}
#memberGoTbl_transactionList tbody td{
padding: 10px 10px 10px 10px;
vertical-align: middle !important;
}
#memberGoTbl_transactionList tbody td:first-child {
text-align: center;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_transactionList tbody td:nth-last-child(6) {
text-align: left;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_transactionList tbody td:nth-last-child(5) {
text-align: left;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_transactionList tbody td:nth-last-child(4) {
text-align: left;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_transactionList tbody td:nth-last-child(3) {
text-align: left;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_transactionList tbody td:nth-last-child(2) {
text-align: left;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_transactionList tbody td:nth-last-child(1) {
text-align: center;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_transactionList tbody td:nth-last-child(2) img{
vertical-align: middle;
cursor: pointer;
}
/* MemberGo - 交易紀錄明細 頁面 - 交易紀錄列表 table - 服務設定
*--------------------------------------------------------------------*/
#transaction_setting{
text-align: center;
}
#transaction_setting a{
cursor: pointer;
color: #333;
font-size: 0.95em;
}
.refund{
width: 26px;
height: auto;
margin-right: 2px;
margin-bottom: 3px;
}
.capture{
width: 28px;
height: auto;
margin-bottom: 0px;
}
.cancel{
width: 25px;
height: auto;
margin-right: 3px;
margin-bottom: 3px;
}
.transDetail{
width: 25px;
height: auto;
margin-right: 3px;
margin-bottom: 3px;
}
.imgSuccess{
width: 60px;
height: auto;
}
.imgAttention{
width: 60px;
height: auto;
}
.imgFailure{
width: 60px;
height: auto;
}
/* MemberGo - 交易紀錄明細 頁面 - 交易紀錄列表 table - 是否處理切換switch
*--------------------------------------------------------------------*/
/*
.switch {
position: relative;
display: inline-block;
width: 34px;
height: 20px;
margin-bottom: 0px;
}
.switch input {display:none;}
.slider {
position: absolute;
cursor: pointer;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: #f0ad4e;
-webkit-transition: .4s;
transition: .4s;
}
.slider:before {
position: absolute;
content: "";
height: 14px;
width: 14px;
left: 3px;
bottom: 3px;
background-color: white;
-webkit-transition: .4s;
transition: .4s;
}
input:checked + .slider {
background-color: #8c8c8c;
}
input:focus + .slider {
box-shadow: 0 0 1px #8c8c8c;
}
input:checked + .slider:before {
-webkit-transform: translateX(14px);
-ms-transform: translateX(14px);
transform: translateX(14px);
}
.slider.round {
border-radius: 4px;
}
.slider.round:before {
border-radius: 20%;
}
.btn-switch{
margin: 0;
padding: 0;
position: relative;
border: none;
height: 20px;
width: 50px;
border-radius: 50px;
}
.btn-switch:before, .btn-switch:after {
line-height: 100%;
text-align: center;
font-weight: 600;
color: red;
font-size: 12px;
position: absolute;
bottom: 0;
transition: opacity .25s;
}
.btn-switch:before {
content: '否';
left: 4px;
}
.btn-switch:after {
content: "是";
right: 4px;
opacity: .5;
}
.btn-switch > .handle {
position: absolute;
top: 2px;
left: 10px;
width: 17px;
height: 17px;
border-radius: 50%;
background: #fff;
transition: left .25s;
}
.btn-switch.active {
transition: background-color .25s;
}
.btn-switch .active > .handle {
left: 20px;
transition: left .25s;
}
.btn-switch.active > .handle:before {
opacity: .5;
}
.btn-switch.active > .handle:after {
opacity: 1;
}
#toggleSwtich{
text-align: center;
}
#switch1.btn-default{
display: none;
}
*/
/* MemberGo - 交易紀錄明細 頁面 - Transaction Pagination
*--------------------------------------*/
.transPaginationDiv_memberGo{
margin-top: 10px !important;
}
.transPaginationDiv_memberGo{
margin-top: 0px !important;
}
.transPaginationDiv_memberGo>li>a{
color:#6e6e6e !important;
}
.transPaginationDiv_memberGo>li:last-child{
margin-right: 20px !important;
}
.transPaginationDiv_memberGo>li>a:hover{
border-color: #eb852b !important;
background-color: #f4f4f4 !important;
color:#6e6e6e !important;
}
.transPaginationDiv_memberGo>.active>a{
border-color: #4c4c4c !important;
background-color: #4c4c4c !important;
color:#fff !important;
}
.text{
margin-top: 0px !important;
}
/* MemberGo - 交易紀錄明細 頁面 - 交易異動紀錄 popup form 裡的 交易異動紀錄 form-inlin 的 line (上半部)
*------------------------------------------------------------------------------------------------*/
#formField_info{
margin-top: 10px;
margin-bottom: 0px;
margin-left: auto;
margin-right: auto;
width:90%;
}
#formField_info .form-group{
margin-bottom: 18px;
margin-right: 20px;
}
#formField_description{
margin-bottom: 30px;
margin-left: auto;
margin-right: auto;
width: 90%;
}
#formField_description .form-group{
margin-bottom: 18px;
margin-right: 10px;
}
/* MemberGo - 交易紀錄明細 頁面 - 交易異動紀錄 popup form 裡的 交易異動紀錄 tabel (下半部)
*------------------------------------------------------------------------------------------------*/
#memberGoTbl_transactionLog{
width: 90%;
margin-top: 0px;
margin-bottom: 20px;
margin-left: auto;
margin-right: auto;
}
#memberGoTbl_transactionLog a{
text-decoration: none;
color: #1488e0;
cursor: pointer;
}
#memberGoTbl_transactionLog tbody tr:last-child{
border-bottom:solid 1px #d9d9d9;
}
#memberGoTbl_transactionLog thead th{
font-size: 17px;
border: none;
vertical-align: middle;
background: #e0e0e0 !important;
background: linear-gradient(45deg, #e0e0e0 0%, #e0e0e0 80%, #aaaaaa 80%, #aaaaaa 100%) !important;
background: -webkit-linear-gradient(45deg, #e0e0e0 0%, #e0e0e0 80%, #aaaaaa 80%, #aaaaaa 100%) !important;
background: -o-linear-gradient(45deg, #e0e0e0 0%, #e0e0e0 80%, #aaaaaa 80%, #aaaaaa 100%) !important;
background: -moz-linear-gradient(45deg, #e0e0e0 0%, #e0e0e0 80%, #aaaaaa 80%, #aaaaaa 100%) !important;
color: #000 !important;
padding: 6px 15px !important;
border-top-left-radius: 4px !important;
border-top-right-radius: 0px !important;
}
#memberGoTbl_transactionLog tbody th{
font-size: 0.9em;
font-weight: bold;
padding: 10px 10px 10px 10px;
text-align: center;
vertical-align: middle !important;
background-color:
}
#memberGoTbl_transactionLog tbody td{
padding: 10px 10px 10px 10px;
vertical-align: middle !important;
}
#memberGoTbl_transactionLog tbody td:first-child {
text-align: center;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_transactionLog tbody td:nth-last-child(3) {
text-align: left;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_transactionLog tbody td:nth-last-child(2) {
text-align: left;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_transactionLog tbody td:nth-last-child(1) {
text-align: left;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
/************************* 代碼化資料庫 Token Vault 頁面 ************************************
*----------------------------------------------------------------------------------------------------------*/
/* MemberGo - 代碼化資料庫 頁面 - 代碼化資料庫列表 table
*--------------------------------------------------*/
#memberGoTbl_tokenVaultList{
/* width: 99%; */
margin-bottom: 40px;
font-size: 0.875rem;
}
#memberGoTbl_tokenVaultList a{
text-decoration: none;
color: #6e6e6e;
}
#memberGoTbl_tokenVaultList tbody tr:last-child{
border-bottom:solid 1px #d9d9d9;
}
#memberGoTbl_tokenVaultList thead th{
font-size: 17px;
border: none;
vertical-align: middle;
background: #e0e0e0 !important;
background: linear-gradient(45deg, #e0e0e0 0%, #e0e0e0 80%, #aaaaaa 80%, #aaaaaa 100%) !important;
background: -webkit-linear-gradient(45deg, #e0e0e0 0%, #e0e0e0 80%, #aaaaaa 80%, #aaaaaa 100%) !important;
background: -o-linear-gradient(45deg, #e0e0e0 0%, #e0e0e0 80%, #aaaaaa 80%, #aaaaaa 100%) !important;
background: -moz-linear-gradient(45deg, #e0e0e0 0%, #e0e0e0 80%, #aaaaaa 80%, #aaaaaa 100%) !important;
color: #000 !important;
padding: 6px 15px !important;
border-top-left-radius: 4px !important;
border-top-right-radius: 0px !important;
}
#memberGoTbl_tokenVaultList tbody th{
font-weight: bold;
padding: 10px 10px 10px 10px;
text-align: center;
vertical-align: middle !important;
background-color:
}
#memberGoTbl_tokenVaultList tbody td{
padding: 10px 10px 10px 10px;
vertical-align: middle !important;
line-height: 130%;
}
#memberGoTbl_tokenVaultList tbody td:first-child {
text-align: center;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_tokenVaultList tbody td:nth-last-child(8) {
text-align: left;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_tokenVaultList tbody td:nth-last-child(7) {
text-align: left;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_tokenVaultList tbody td:nth-last-child(6) {
text-align: left;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_tokenVaultList tbody td:nth-last-child(5) {
text-align: left;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_tokenVaultList tbody td:nth-last-child(4) {
text-align: center;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_tokenVaultList tbody td:nth-last-child(3) {
text-align: center;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
line-height: 200%;
}
#memberGoTbl_tokenVaultList tbody td:nth-last-child(2) {
text-align: center;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_tokenVaultList tbody td:nth-last-child(1) {
text-align: center;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_tokenVaultList tbody td:nth-last-child(1) img{
vertical-align: middle;
cursor: pointer;
margin-left: 3px;
}
.btn.btnPermission{
display: inline-block;
padding: 3px 8px;
color: #ffffff !important;
background-color: #818181;
border: none;
-webkit-transition-duration: 0.2s;
transition-duration: 0.2s;
cursor: pointer;
}
.btn.btnPermission:hover{
color: #ffffff;
background-color: #636262;
border: none;
}
.btn.btnPermission:focus{
color: #ffffff;
}
/* MemberGo - 代碼化資料庫 頁面 - 代碼化資料庫列表 table - 最後一格 Details
*--------------------------------------------------------------------*/
.btnVaultDetails:hover{
background-color: #f0ad4e !important;
color: #fff !important;
border-color: #eea236 !important;
}
/* MemberGo - 代碼化資料庫 頁面 - 代碼化資料庫列表 table - 權限popup form 裡的 table
*--------------------------------------------------------------------------------------------*/
.permissionTableDiv{
/* margin-left: 10px; */
/* margin-right: 10px; */
}
#memberGoTbl_permission{
font-size: 0.875rem;
}
#memberGoTbl_permission tbody tr:last-child{
border-bottom:solid 1px #d9d9d9;
}
#memberGoTbl_permission tbody th{
font-weight: bold;
padding: 10px 10px 10px 10px;
text-align: center;
vertical-align: middle !important;
background-color:
}
#memberGoTbl_permission tbody td{
padding: 10px 10px 10px 10px;
vertical-align: middle !important;
border:solid 1px #d9d9d9;
text-align: center;
}
.permissionList{
text-align: center;
padding-top: 90px !important;
}
#memberGoTbl_permission .dropdown-menu{
font-size: 0.9em !important;
}
#memberGoTbl_permission .filter-option{
font-size: 0.9em !important;
}
#memberGoTbl_permission .filter-option-inner{
font-size: 0.9em !important;
}
.newPerm{
margin: 0px 0px 10px 0px;
}
#newPermission{
margin: 0px 10px 0px 10px;
}
#newPermission .dropdown-menu{
font-size: 0.9em !important;
}
#newPermission .filter-option{
font-size: 0.9em !important;
}
#newPermission .dropdown-menu a.active{
background-color: #f0ad4e !important;
}
.newPermConfirmBtn{
width: 100% !important;
}
@media screen and (min-width: 768px) and (max-width: 991px) {
.newPermConfirmBtn{
padding-left: 0.25rem;
padding-right: 0.25rem;
}
}
#memberGoTbl_fieldsList{
margin-bottom: 40px;
font-size: 0.96em;
}
#memberGoTbl_fieldsList a{
text-decoration: none;
color: #6e6e6e;
}
#memberGoTbl_fieldsList tbody tr:last-child{
border-bottom:solid 1px #d9d9d9;
}
#memberGoTbl_fieldsList thead th{
font-size: 17px;
border: none;
vertical-align: middle;
background: #e0e0e0 !important;
background: linear-gradient(45deg, #e0e0e0 0%, #e0e0e0 80%, #aaaaaa 80%, #aaaaaa 100%) !important;
background: -webkit-linear-gradient(45deg, #e0e0e0 0%, #e0e0e0 80%, #aaaaaa 80%, #aaaaaa 100%) !important;
background: -o-linear-gradient(45deg, #e0e0e0 0%, #e0e0e0 80%, #aaaaaa 80%, #aaaaaa 100%) !important;
background: -moz-linear-gradient(45deg, #e0e0e0 0%, #e0e0e0 80%, #aaaaaa 80%, #aaaaaa 100%) !important;
color: #000 !important;
padding: 6px 15px !important;
border-top-left-radius: 4px !important;
border-top-right-radius: 0px !important;
}
#memberGoTbl_fieldsList tbody th{
font-weight: bold;
padding: 10px 10px 10px 10px;
text-align: center;
vertical-align: middle !important;
}
#memberGoTbl_fieldsList tbody td{
padding: 10px 10px 10px 10px;
vertical-align: middle !important;
line-height: 130%;
}
#memberGoTbl_fieldsList tbody td:first-child{
text-align: center;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_fieldsList tbody td:nth-last-child(5) {
text-align: center;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_fieldsList tbody td:nth-last-child(4) {
text-align: left;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_fieldsList tbody td:nth-last-child(3) {
text-align: center;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_fieldsList tbody td:nth-last-child(2) {
text-align: center !important;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_fieldsList tbody td:nth-last-child(1) {
text-align: center;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
line-height: 200%;
}
#memberGoTbl_dataDetail{
margin-bottom: 30px;
}
#memberGoTbl_dataDetail tbody th{
font-weight: bold;
padding: 5px;
text-align: center;
vertical-align: middle !important;
background-color: #7c7c7c;
color: #fff;
border: solid 1px #d9d9d9;
font-size: 0.875rem;
}
#memberGoTbl_dataDetail tbody td{
padding: 5px;
vertical-align: middle !important;
line-height: 130%;
border: solid 1px #d9d9d9;
font-size: 0.875rem;
}
#memberGoTbl_dataDetail tbody td.item{
padding: 5px;
font-weight: bold;
background-color: #f2f2f2;
text-align: center;
}
#memberGoTbl_dataDetail tbody td.content{
padding: 5px;
background-color: #fff;
}
#memberGoTbl_masksList{
margin-bottom: 40px;
font-size: 0.96em;
}
#memberGoTbl_masksList a{
text-decoration: none;
color: #6e6e6e;
}
#memberGoTbl_masksList tbody tr:last-child{
border-bottom:solid 1px #d9d9d9;
}
#memberGoTbl_masksList thead th{
font-size: 17px;
border: none;
vertical-align: middle;
background: #e0e0e0 !important;
background: linear-gradient(45deg, #e0e0e0 0%, #e0e0e0 80%, #aaaaaa 80%, #aaaaaa 100%) !important;
background: -webkit-linear-gradient(45deg, #e0e0e0 0%, #e0e0e0 80%, #aaaaaa 80%, #aaaaaa 100%) !important;
background: -o-linear-gradient(45deg, #e0e0e0 0%, #e0e0e0 80%, #aaaaaa 80%, #aaaaaa 100%) !important;
background: -moz-linear-gradient(45deg, #e0e0e0 0%, #e0e0e0 80%, #aaaaaa 80%, #aaaaaa 100%) !important;
color: #000 !important;
padding: 6px 15px !important;
border-top-left-radius: 4px !important;
border-top-right-radius: 0px !important;
}
#memberGoTbl_masksList tbody th{
font-weight: bold;
padding: 10px 10px 10px 10px;
text-align: center;
vertical-align: middle !important;
}
#memberGoTbl_masksList tbody td{
padding: 10px 10px 10px 10px;
vertical-align: middle !important;
line-height: 130%;
}
#memberGoTbl_masksList tbody td:first-child{
text-align: center;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_masksList tbody td:nth-last-child(3) {
text-align: center;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_masksList tbody td:nth-last-child(2) {
text-align: center !important;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_masksList tbody td:nth-last-child(1) {
text-align: left;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_usersList{
margin-bottom: 40px;
font-size: 0.96em;
}
#memberGoTbl_usersList a{
text-decoration: none;
color: #6e6e6e;
}
#memberGoTbl_usersList tbody tr:last-child{
border-bottom:solid 1px #d9d9d9;
}
#memberGoTbl_usersList thead th{
font-size: 17px;
border: none;
vertical-align: middle;
background: #e0e0e0 !important;
background: linear-gradient(45deg, #e0e0e0 0%, #e0e0e0 80%, #aaaaaa 80%, #aaaaaa 100%) !important;
background: -webkit-linear-gradient(45deg, #e0e0e0 0%, #e0e0e0 80%, #aaaaaa 80%, #aaaaaa 100%) !important;
background: -o-linear-gradient(45deg, #e0e0e0 0%, #e0e0e0 80%, #aaaaaa 80%, #aaaaaa 100%) !important;
background: -moz-linear-gradient(45deg, #e0e0e0 0%, #e0e0e0 80%, #aaaaaa 80%, #aaaaaa 100%) !important;
color: #000 !important;
padding: 6px 15px !important;
border-top-left-radius: 4px !important;
border-top-right-radius: 0px !important;
}
#memberGoTbl_usersList tbody th{
font-weight: bold;
padding: 10px 10px 10px 10px;
text-align: center;
vertical-align: middle !important;
}
#memberGoTbl_usersList tbody td{
padding: 10px 10px 10px 10px;
vertical-align: middle !important;
line-height: 130%;
}
#memberGoTbl_usersList tbody td:first-child{
text-align: center;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_usersList tbody td:nth-last-child(9) {
text-align: center;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_usersList tbody td:nth-last-child(8) {
text-align: center;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_usersList tbody td:nth-last-child(7) {
text-align: center;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_usersList tbody td:nth-last-child(6) {
text-align: center;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_usersList tbody td:nth-last-child(5) {
text-align: center;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_usersList tbody td:nth-last-child(4) {
text-align: center;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_usersList tbody td:nth-last-child(3) {
text-align: center;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_usersList tbody td:nth-last-child(2) {
text-align: center !important;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_usersList tbody td:nth-last-child(1) {
text-align: center;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
line-height: 200%;
}
/************************* 代碼及IP綁定服務 Token and IP binder 頁面 ************************************
*----------------------------------------------------------------------------------------------------------*/
/* MemberGo - 代碼及IP綁定服務 頁面 - 產生Token與IP綁定 panel
*--------------------------------------------------------------*/
.tokenIPBiner .card {
margin-bottom: 30px;
border: 0;
}
.tokenIPBiner .card .card-header {
border: 0;
-webkit-box-shadow: 0 0 20px 0 rgba(213, 213, 213, 0.5);
box-shadow: 0 0 20px 0 rgba(213, 213, 213, 0.5);
border-radius: 2px;
padding: 0;
}
.tokenIPBiner .card .card-header .btn-header-link {
color: #fff;
display: block;
text-align: left;
background: #FFE472;
color: #222;
padding: 20px;
}
.tokenIPBiner .card .card-header .btn-header-link:after {
content: "\f107";
font-family: 'Font Awesome 5 Free';
font-weight: 900;
float: right;
}
.tokenIPBiner .card .card-header .btn-header-link.collapsed {
background: #A541BB;
color: #fff;
}
.tokenIPBiner .card .card-header .btn-header-link.collapsed:after {
content: "\f106";
}
.tokenIPBiner .card .collapsing {
background: #FFE472;
line-height: 30px;
}
.tokenIPBiner .card .collapse {
border: 0;
}
.tokenIPBiner .card .collapse.show {
background: #FFE472;
line-height: 30px;
color: #222;
}
.tokenIPBinerPanel{
margin-top: 0px;
margin-bottom: 50px !important;
border: 1px solid #d9d9d9 !important;
/* width: 99%; */
box-shadow: 0px 1px 3px rgba(0,0,0,.15) !important;;
}
.tokenIPBinerPanel .panel-heading{
background: #e0e0e0 !important;
background: linear-gradient(45deg, #e0e0e0 0%, #e0e0e0 80%, #aaaaaa 80%, #aaaaaa 100%) !important;
background: -webkit-linear-gradient(45deg, #e0e0e0 0%, #e0e0e0 80%, #aaaaaa 80%, #aaaaaa 100%) !important;
background: -o-linear-gradient(45deg, #e0e0e0 0%, #e0e0e0 80%, #aaaaaa 80%, #aaaaaa 100%) !important;
background: -moz-linear-gradient(45deg, #e0e0e0 0%, #e0e0e0 80%, #aaaaaa 80%, #aaaaaa 100%) !important;
color: #000 !important;
border-top-right-radius: 0px !important;
display: block;
padding: 0px !important;
margin: 0px !important;
}
.tokenIPBinerPanel .panel-heading .panel-title{
line-height: 100% !important;
}
.tokenIPBinerPanel .panel-heading .panel-title a{
font-size: 16px;
text-decoration: none;
padding: 12px 15px 12px 15px;
display: block;
vertical-align: middle;
color: #000;
}
.tokenIPBinerPanel .panel-heading .panel-title a:after{
font-family: "Font Awesome 6 Free";
content: "\f078";
margin-left: 3px;
font-size: 12px;
}
.tokenIPBinerPanel .panel-heading .panel-title a.collapsed:after {
content: "\f077";
}
.tokenIPBinerPanel .panel-collapse .panel-body{
padding-top: 25px;
padding-bottom: 15px;
padding-left: 20px;
padding-right: 20px;
}
.tokenIPBinerPanel .instruction_tokenBind{
/* padding-left: 0px !important; */
/* padding-right: 0px !important; */
}
.tokenIPBinerPanel .form_tokenIPBind label{
/*margin-top: 5px !important;*/
}
.tokenIPBinerPanel .form_tokenIPBind input[type="text"]{
/*margin-top: 5px !important;*/
}
.tokenIPBinerPanel .form_tokenIPBind select{
/*margin-top: 5px !important;*/
}
.tokenIPBinerPanel .form_tokenIPBind button{
/*margin-top: 5px !important;*/
/*width: 100% !important;*/
/*padding-left: 5px !important; */
/*padding-right: 5px !important;*/
}
.tokenIPBinerPanel .form_tokenIPBind a.active{
background-color: #35a9e1 !important;
}
.message_tokenIPBind{
margin-top: 10px;
font-weight: bold;
padding-top: 8px !important;
padding-bottom: 8px !important;
padding-left: 20px !important;
font-size: 12px;
}
.buttonArea{
margin-top: 40px;;
}
.form_tokenIPBindInModal label{
padding-right: 0px !important;
}
.tokenInModal{
/* margin-left: 15px; */
/* margin-right: 15px; */
}
#tokenValue{
white-space: normal;
word-wrap: break-word;
}
/* MemberGo - 代碼及IP綁定服務 頁面 - token與IP綁定紀錄列表 table
*----------------------------------------------------------------*/
/* MemberGo - 代碼及IP綁定服務 頁面 - token與IP綁定紀錄列表 table 自訂 class = "table-striped_rowsapn"
*------------------------------------------------------------------------------------------------------*/
.table-striped_rowsapn tr:nth-child(4n+1){
background-color: #f9f9f9;
}
.table-striped_rowsapn tr:nth-child(4n+2){
background-color: #f9f9f9;
}
/* MemberGo - 代碼及IP綁定服務 頁面 - token與IP綁定紀錄列表 table
*------------------------------------------------------------------------*/
#memberGoTbl_tokenIPList{
/* width: 99%; */
margin-bottom: 40px;
}
#memberGoTbl_tokenIPList a{
text-decoration: none;
color: #1488e0;
cursor: pointer;
}
#memberGoTbl_tokenIPList tbody tr:last-child{
border-bottom: solid 1px #d9d9d9;
}
#memberGoTbl_tokenIPList thead th{
font-size: 16px;
border: none;
vertical-align: middle;
background: #e0e0e0 !important;
background: linear-gradient(45deg, #e0e0e0 0%, #e0e0e0 80%, #aaaaaa 80%, #aaaaaa 100%) !important;
background: -webkit-linear-gradient(45deg, #e0e0e0 0%, #e0e0e0 80%, #aaaaaa 80%, #aaaaaa 100%) !important;
background: -o-linear-gradient(45deg, #e0e0e0 0%, #e0e0e0 80%, #aaaaaa 80%, #aaaaaa 100%) !important;
background: -moz-linear-gradient(45deg, #e0e0e0 0%, #e0e0e0 80%, #aaaaaa 80%, #aaaaaa 100%) !important;
color: #000 !important;
padding: 8px 15px !important;
border-top-left-radius: 4px !important;
border-top-right-radius: 0px !important;
}
#memberGoTbl_tokenIPList tbody th{
font-size: 16px;
border: none;
vertical-align: middle;
background: #e0e0e0 !important;
background: linear-gradient(45deg, #e0e0e0 0%, #e0e0e0 80%, #aaaaaa 80%, #aaaaaa 100%) !important;
background: -webkit-linear-gradient(45deg, #e0e0e0 0%, #e0e0e0 80%, #aaaaaa 80%, #aaaaaa 100%) !important;
background: -o-linear-gradient(45deg, #e0e0e0 0%, #e0e0e0 80%, #aaaaaa 80%, #aaaaaa 100%) !important;
background: -moz-linear-gradient(45deg, #e0e0e0 0%, #e0e0e0 80%, #aaaaaa 80%, #aaaaaa 100%) !important;
color: #000 !important;
padding: 8px 15px !important;
border-top-left-radius: 4px !important;
border-top-right-radius: 0px !important;
}
#memberGoTbl_tokenIPList tbody td{
padding-top: 7px;
padding-bottom: 7px;
vertical-align: middle !important;
border:solid 1px #d9d9d9;
}
#memberGoTbl_tokenIPList .td_order{
text-align: center;
font-weight: bold;
width: 5%;
}
#memberGoTbl_tokenIPList .td_title{
font-weight: bold;
text-align: center;
/* width: 7%; */
padding-left: 4px;
padding-right: 4px;
}
#tokenTitle{
width: 10%;
}
#ipTitle{
width: 10%;
}
#userNameTitle{
width: 10% ;
}
#userNameContent{
width: 25%;
}
#dateTitle{
width: 10%;
}
#dateContent{
width: 25%;
}
#memberGoTbl_tokenIPList .td_content{
text-align: left;
/* padding: 6px 3px 6px 3px; */
/* padding-left: 6px; */
}
#memberGoTbl_tokenIPList .td_contentExpDate{
text-align: left;
padding: 6px 3px 6px 3px;
padding-left: 6px;
/* width: 9%; */
}
#memberGoTbl_tokenIPList .td_delBtn{
text-align: center;
width: 10%;
letter-spacing: 1px;
}
.btnDelTokenIP{
font-size: 14px !important;
padding: 3px 10px !important;
}
.input-group-copyToken{
position: relative;
}
.copiedAlreadyText-copyToken{
display: none;
position: absolute;
right: -57px;
top: 2px;
z-index: 3;
color: #36c956;
border: 1px solid #36c956;
background-color: #fff;
border-radius: 4px;
padding: 2px 6px;
font-size: 0.875rem;
}
.input-group-copyToken .input-group-append button{
border-top-right-radius: 2px !important;
border-bottom-right-radius: 2px !important;
}
/* MemberGo - API金鑰管理頁面 - project管理 table
*------------------------------------------------*/
.newBlock{
padding: 0px 10px 20px 0px;
text-align: right;
}
.newBlock img{
height: 30px;
margin-right: 3px;
}
#memberGoTbl_newProjec{
width: 99%;
/*margin-bottom: 80px;*/
margin-bottom: 80px;
font-size: 1em;
}
#memberGoTbl_newProjec a{
text-decoration: none;
color: #1488e0;
cursor: pointer;
}
#memberGoTbl_newProjec tbody tr:last-child{
border-bottom:solid 1px #d9d9d9;
}
#memberGoTbl_newProjec thead th{
font-size: 17px;
border: none;
vertical-align: middle;
background: #e0e0e0 !important;
background: linear-gradient(45deg, #e0e0e0 0%, #e0e0e0 80%, #aaaaaa 80%, #aaaaaa 100%) !important;
background: -webkit-linear-gradient(45deg, #e0e0e0 0%, #e0e0e0 80%, #aaaaaa 80%, #aaaaaa 100%) !important;
background: -o-linear-gradient(45deg, #e0e0e0 0%, #e0e0e0 80%, #aaaaaa 80%, #aaaaaa 100%) !important;
background: -moz-linear-gradient(45deg, #e0e0e0 0%, #e0e0e0 80%, #aaaaaa 80%, #aaaaaa 100%) !important;
color: #000 !important;
padding: 6px 15px !important;
border-top-left-radius: 4px !important;
border-top-right-radius: 0px !important;
}
#memberGoTbl_newProjec tbody th{
font-weight: bold;
padding: 10px 10px 10px 10px;
text-align: center;
vertical-align: middle !important;
background-color:
}
#memberGoTbl_newProjec tbody td{
padding: 10px 10px 10px 10px;
vertical-align: middle !important;
}
#memberGoTbl_newProjec tbody td:first-child {
text-align: center;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_newProjec tbody td:nth-last-child(6) {
text-align: left;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_newProjec tbody td:nth-last-child(5) {
text-align: left;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_newProjec tbody td:nth-last-child(4) {
text-align: left;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_newProjec tbody td:nth-last-child(3) {
text-align: center;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_newProjec tbody td:nth-last-child(2) {
text-align: center;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_newProjec tbody td:nth-last-child(1) {
text-align: center;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#projectDisabled{
color: #a0a0a0 !important;
}
#projectDisabled a{
color: #a0a0a0 !important;
pointer-events: none;
cursor: not-allowed;
}
/* MemberGo - API金鑰管理頁面 - 專案細節管理(App) table
*--------------------------------------------------------------------*/
.projectIdNumer{
margin-bottom: 20px;
font-size: 17px;
}
.projectIdNumer .form-inline{
margin-bottom: 10px;
}
.projectIdNumer .form-inline input{
margin-right: 20px;
}
.projectIdNumer label{
font-weight: normal !important;
}
.projectIdNumer img{
height: 30px;
margin-right: 5px;
}
#memberGoTbl_app{
/* width: 99%; */
margin-bottom: 30px;
/*margin-bottom: 115px;*/
font-size: 0.875em;
}
#memberGoTbl_app a{
text-decoration: none;
color: #1488e0;
cursor: pointer;
}
#memberGoTbl_app tbody tr:last-child{
border-bottom:solid 1px #d9d9d9;
}
#memberGoTbl_app thead th{
font-size: 17px;
border: none;
vertical-align: middle;
background: #e0e0e0 !important;
background: linear-gradient(45deg, #e0e0e0 0%, #e0e0e0 80%, #aaaaaa 80%, #aaaaaa 100%) !important;
background: -webkit-linear-gradient(45deg, #e0e0e0 0%, #e0e0e0 80%, #aaaaaa 80%, #aaaaaa 100%) !important;
background: -o-linear-gradient(45deg, #e0e0e0 0%, #e0e0e0 80%, #aaaaaa 80%, #aaaaaa 100%) !important;
background: -moz-linear-gradient(45deg, #e0e0e0 0%, #e0e0e0 80%, #aaaaaa 80%, #aaaaaa 100%) !important;
color: #000 !important;
padding: 6px 15px !important;
border-top-left-radius: 4px !important;
border-top-right-radius: 0px !important;
}
#memberGoTbl_app tbody th{
font-weight: bold;
padding: 10px 10px 10px 10px;
text-align: center;
vertical-align: middle !important;
background-color:
}
#memberGoTbl_app tbody td{
padding: 10px 10px 10px 10px;
vertical-align: middle !important;
}
#memberGoTbl_app tbody td:first-child {
text-align: center;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
width: 5%;
}
/*#memberGoTbl_app tbody td:nth-last-child(7) {
text-align: left;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
width: 8%;
}
#memberGoTbl_app tbody td:nth-last-child(6) {
text-align: left;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_app tbody td:nth-last-child(5) {
text-align: left;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
width: 15%;
}*/
/*#memberGoTbl_app tbody td:nth-last-child(4) {
text-align: center;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
width: ;
}*/
#memberGoTbl_app tbody td:nth-last-child(3) {
/*text-align: center;*/
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
width: 8%;
}
#memberGoTbl_app tbody td:nth-last-child(2) {
/*text-align: center;*/
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
width: 72%;
}
#memberGoTbl_app tbody td:nth-last-child(1) {
text-align: center;
padding: 10px 10px 10px 10px;
border: solid 1px #d9d9d9;
width: 15%;
}
.appNameAndSettingList{
display: table;
width: 100%;
/*margin-right: -10px; 1206*/
/*margin-left: -10px; 1206*/
}
.appNameAndSetting{
display: table-row;
width: 100%;
/*padding: 5px 10px 5px 10px; 1206*/
}
.appNameStyle{ /*.appName -> .appNameStyle 1206*/
display: table-cell;
width: 60%;
text-align: left;
/*padding: 0px 10px 0px 10px; 1206*/
vertical-align: middle !important; /*1206*/
}
.appSetting{
/* display: table-cell; */
/* width: 40%; */
/* text-align: right; */
/* padding: 0px 10px 0px 10px; */
}
.ahDropDownStyle{ /*#ahDropDown -> .ahDropDownStyle 1206*/
/*display: table;*/
/*background-color: #e9f2f4 !important;blue-grey-lighter*/
background-color: #d0e1e6 !important;/*blue-grey-darker*/
margin-top: 10px !important;
margin-right: -10px !important;
margin-left: -10px !important;
margin-bottom: -10px !important;
}
/*
.ahList{
display: table;
font-size: 10px;
margin-top: 0px;
margin-right: 0px;
margin-left: 0px;
margin-bottom: 0px;
border-top: 1px solid #d9d9d9;
background-color: #d0e1e6;
}
*/
.ahListHead,.ahListDiv{
display: table;
font-size: 10px;
margin-top: 0px;
margin-right: 0px;
margin-left: 0px;
margin-bottom: 0px;
/*padding-bottom: 10px;*/
border-top: 1px solid #d9d9d9;
background-color: #d0e1e6; /*blue-grey-darker*/
/*background-color: #e9f2f4; blue-grey-lighter*/
/*background-color: #f3e4cf; orange-grey*/
}
.ahTitle{
display: table-row;
font-weight: 900;
/*text-align: center;*/
padding: 5px 10px 5px 10px;
}
.shaTitle{
display: table-cell;
font-weight: 900;
text-align: center;
padding: 5px 10px 5px 10px;
width: 50%;
}
.shaTitle a i{
color: #d9534f;
}
.remarkTitle{
display: table-cell;
font-weight: 900;
text-align: center;
padding: 5px 10px 5px 10px;
width: 50%;
}
.delAhTitle{
display: table-cell;
padding: 5px 10px 5px 0px;
/*width: 10%;*/
}
.ah{
display: table-row;
padding: 5px 10px 5px 10px;
width: 100%;
}
.sha{
display: table-cell;
width: 55%;
padding: 5px 10px 5px 10px;
}
.sha input[type="text"]{
display: block;
width: 100%;
padding: 2px 2px;
border: 1px solid #d9d9d9;
}
.delAh{
display: table-cell;
/*width: 10%;*/
padding: 5px 10px 5px 0px;
}
.delAh a i{
color: #d9534f;
}
.remark{
display: table-cell;
width: 45%;
padding: 5px 10px 5px 10px;
}
.remark input[type="text"]{
display: block;
width: 100%;
padding: 2px 2px;
border: 1px solid #d9d9d9;
}
.ahBtn{
/* margin: 3px; */
}
.ahBtn img{
height: 13px;
margin-right: 3px;
}
.newAhRow{
display: table-row;
}
.newAh{
display: table-cell;
padding: 15px 10px 10px 10px;
/*background-color: #ccc;*/
width: 100%;
}
.newAh button{
margin-right: 10px;
}
.apiKeyInModal{
margin-left: 15px;
margin-right: 15px;
position: relative;
}
#apiKeyValue{
white-space: normal;
word-wrap: break-word;
}
.copiedAlreadyText-copyApiKey{
display: none;
position: absolute;
right: 0px;
bottom: -37px;
z-index: 3;
color: #36c956;
border: 1px solid #36c956;
background-color: #fff;
border-radius: 4px;
padding: 2px 6px;
font-size: 0.875rem;
}
/* MemberGo - API金鑰管理頁面 - ah列表 table
*--------------------------------------------------------------------*/
#memberGoTbl_ah{
width: 99%;
margin-bottom: 80px;
/*margin-bottom: 115px;*/
font-size: 1em;
}
#memberGoTbl_ah a{
text-decoration: none;
color: #1488e0;
cursor: pointer;
}
#memberGoTbl_ah tbody tr:last-child{
border-bottom:solid 1px #d9d9d9;
}
#memberGoTbl_ah thead th{
font-size: 17px;
border: none;
vertical-align: middle;
background: #e0e0e0 !important;
background: linear-gradient(45deg, #e0e0e0 0%, #e0e0e0 80%, #aaaaaa 80%, #aaaaaa 100%) !important;
background: -webkit-linear-gradient(45deg, #e0e0e0 0%, #e0e0e0 80%, #aaaaaa 80%, #aaaaaa 100%) !important;
background: -o-linear-gradient(45deg, #e0e0e0 0%, #e0e0e0 80%, #aaaaaa 80%, #aaaaaa 100%) !important;
background: -moz-linear-gradient(45deg, #e0e0e0 0%, #e0e0e0 80%, #aaaaaa 80%, #aaaaaa 100%) !important;
color: #000 !important;
padding: 6px 15px !important;
border-top-left-radius: 4px !important;
border-top-right-radius: 0px !important;
}
#memberGoTbl_ah tbody th{
font-weight: bold;
padding: 10px 10px 10px 10px;
text-align: center;
vertical-align: middle !important;
background-color:
}
#memberGoTbl_app tbody td{
padding: 10px 10px 10px 10px;
vertical-align: middle !important;
}
#memberGoTbl_app tbody td button{
padding: 0.125rem 0.25rem;
font-size: 0.825rem;
}
#memberGoTbl_app tbody td.appSettingTD{
vertical-align: top !important;
}
#memberGoTbl_ah tbody td:first-child {
text-align: center;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_ah tbody td:nth-last-child(5) {
text-align: left;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_ah tbody td:nth-last-child(4) {
text-align: left;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_ah tbody td:nth-last-child(3) {
text-align: left;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_ah tbody td:nth-last-child(2) {
text-align: center;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_ah tbody td:nth-last-child(1) {
text-align: center;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
/* MemberGo - API金鑰管理頁面 - app project table - Android詳細資訊
*--------------------------------------------------------------------*/
.androidDetailImg{
width: auto;
height: 30px;
}
.andoridAdv{
display: none;
/*border: 1px solid #ccc;*/
/*border-radius: 4px;*/
/*padding: 10px 20px 10px 20px;*/
margin-bottom: 40px;
}
.iOSAdv{
display: none;
margin-bottom: 40px;
}
.androidDetailTitle{
margin-bottom: 20px;
font-weight: bold;
}
.appDescription{
font-size: 8px;
color: red; /*#d9534f*/
margin-top: 5px;
margin-bottom: 30px;
}
.ahDescription{
font-size: 8px;
color: #d9534f;
margin-top: 5px;
margin-bottom: 0px;
}
.tooltip {
position: relative;
display: inline-block;
}
.tooltip .tooltiptext {
visibility: hidden;
width: 140px;
background-color: #555;
color: #fff;
text-align: center;
border-radius: 6px;
padding: 5px;
position: absolute;
z-index: 1;
bottom: 150%;
left: 50%;
margin-left: -75px;
opacity: 0;
transition: opacity 0.3s;
}
.tooltip .tooltiptext::after {
content: "";
position: absolute;
top: 100%;
left: 50%;
margin-left: -5px;
border-width: 5px;
border-style: solid;
border-color: #555 transparent transparent transparent;
}
.tooltip:hover .tooltiptext {
visibility: visible;
opacity: 1;
}
/* MemberGo - 商家銀行管理頁面 - 銀行帳戶列表 table
*------------------------------------------------*/
#memberGoTbl_newBankAcc{
width: 99%;
/*margin-bottom: 80px;*/
margin-bottom: 80px;
font-size: 1em;
}
#memberGoTbl_newBankAcc a{
text-decoration: none;
color: #1488e0;
cursor: pointer;
}
#memberGoTbl_newBankAcc tbody tr:last-child{
border-bottom:solid 1px #d9d9d9;
}
#memberGoTbl_newBankAcc thead th{
font-size: 17px;
border: none;
vertical-align: middle;
background: #e0e0e0 !important;
background: linear-gradient(45deg, #e0e0e0 0%, #e0e0e0 80%, #aaaaaa 80%, #aaaaaa 100%) !important;
background: -webkit-linear-gradient(45deg, #e0e0e0 0%, #e0e0e0 80%, #aaaaaa 80%, #aaaaaa 100%) !important;
background: -o-linear-gradient(45deg, #e0e0e0 0%, #e0e0e0 80%, #aaaaaa 80%, #aaaaaa 100%) !important;
background: -moz-linear-gradient(45deg, #e0e0e0 0%, #e0e0e0 80%, #aaaaaa 80%, #aaaaaa 100%) !important;
color: #000 !important;
padding: 6px 15px !important;
border-top-left-radius: 4px !important;
border-top-right-radius: 0px !important;
}
#memberGoTbl_newBankAcc tbody th{
font-weight: bold;
padding: 10px 10px 10px 10px;
text-align: center;
vertical-align: middle !important;
background-color:
}
#memberGoTbl_newBankAcc tbody th:first-child{
border-left: solid 0.1px #d9d9d9;
}
#memberGoTbl_newBankAcc tbody th:last-child{
border-right: solid 0.1px #d9d9d9;
}
#memberGoTbl_newBankAcc tbody td{
padding: 10px 10px 10px 10px;
vertical-align: middle !important;
}
#memberGoTbl_newBankAcc tbody td:first-child {
text-align: center;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_newBankAcc tbody td:nth-last-child(6) {
text-align: left;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_newBankAcc tbody td:nth-last-child(5) {
text-align: left;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_newBankAcc tbody td:nth-last-child(4) {
text-align: left;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_newBankAcc tbody td:nth-last-child(3) {
text-align: center;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_newBankAcc tbody td:nth-last-child(2) {
text-align: center;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_newBankAcc tbody td:nth-last-child(1) {
text-align: center;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
.chinaTrustAdv{
display: none;
/*border: 1px solid #ccc;*/
/*border-radius: 4px;*/
/*padding: 10px 20px 10px 20px;*/
/*margin-bottom: 40px;*/
}
.taishinAdv{
display: none;
/*margin-bottom: 40px;*/
}
#memberGoTbl_bankAccDetail{
font-size: 1em;
}
#memberGoTbl_bankAccDetail a{
text-decoration: none;
color: #1488e0;
cursor: pointer;
}
#memberGoTbl_bankAccDetail tbody tr:last-child{
border-bottom:solid 1px #d9d9d9;
}
#memberGoTbl_bankAccDetail tbody th{
font-weight: bold;
padding: 10px 10px 10px 10px;
text-align: center;
vertical-align: middle !important;
background-color:
}
#memberGoTbl_bankAccDetail tbody th:first-child{
border-left: solid 0.1px #d9d9d9;
}
#memberGoTbl_bankAccDetail tbody th:last-child{
border-right: solid 0.1px #d9d9d9;
}
#memberGoTbl_bankAccDetail tbody td{
padding: 10px 10px 10px 10px;
vertical-align: middle !important;
}
#memberGoTbl_bankAccDetail tbody td:first-child {
text-align: right;
border:solid 1px #d9d9d9;
font-weight: 700;
}
#memberGoTbl_bankAccDetail tbody td:last-child {
text-align: left;
border:solid 1px #d9d9d9;
}
.fa_orange{
color: #f0924e;
}
.fa_grey{
color: #666666;
}
.fa_green{
color: #5cb85c;
}
.fa_red{
color: #d9534f;
}
.btn.historyBankAccBtn{
display: inline-block;
color: #ffffff;
background-color: #818181;
border: none;
-webkit-transition-duration: 0.2s;
transition-duration: 0.2s;
cursor: pointer;
}
.btn.historyBankAccBtn:hover{
color: #ffffff;
background-color: #636262;
border: none;
}
.btn.historyBankAccBtn:focus{
color: #ffffff;
}
#formField_info_hist{
margin-top: 10px;
margin-bottom: 10px;
margin-left: 10px;
margin-right: 10px;
}
#formField_info_hist .form-inline .form-group{
margin-right: 30px;
}
#memberGoTbl_bankAccHistory{
width: 99%;
margin-top: 0px;
margin-bottom: 20px;
margin-left: auto;
margin-right: auto;
}
#memberGoTbl_bankAccHistory a{
text-decoration: none;
color: #1488e0;
}
#memberGoTbl_bankAccHistory tbody tr:last-child{
border-bottom:solid 1px #d9d9d9;
}
/*#memberGoTbl_bankAccHistory thead th{
padding-left:20px;
color: #ffffff;
font-size: 17px;
border:none;
vertical-align: middle;
background-image: url("../../images/12/taipay/tableTitlebar.png")
}*/
#memberGoTbl_bankAccHistory thead th{
font-size: 0.9em;
border: none;
vertical-align: middle;
background: #e0e0e0 !important;
background: linear-gradient(45deg, #e0e0e0 0%, #e0e0e0 80%, #aaaaaa 80%, #aaaaaa 100%) !important;
background: -webkit-linear-gradient(45deg, #e0e0e0 0%, #e0e0e0 80%, #aaaaaa 80%, #aaaaaa 100%) !important;
background: -o-linear-gradient(45deg, #e0e0e0 0%, #e0e0e0 80%, #aaaaaa 80%, #aaaaaa 100%) !important;
background: -moz-linear-gradient(45deg, #e0e0e0 0%, #e0e0e0 80%, #aaaaaa 80%, #aaaaaa 100%) !important;
color: #000 !important;
padding: 6px 15px !important;
border-top-left-radius: 4px !important;
border-top-right-radius: 0px !important;
}
#memberGoTbl_bankAccHistory tbody th{
font-size: 0.85em;
font-weight: bold;
padding: 10px 10px 10px 10px;
text-align: center;
vertical-align: middle !important;
background-color:
}
/*#memberGoTbl_bankAccHistory tbody th:first-child{
border-left: solid 0.1px #d9d9d9;
}
#memberGoTbl_bankAccHistory tbody th:last-child{
border-right: solid 0.1px #d9d9d9;
}
*/
.no_history th{
border-right: solid 0.1px #d9d9d9;
border-left: solid 0.1px #d9d9d9;
}
#memberGoTbl_bankAccHistory tbody td{
font-size: 0.85em;
padding: 10px 10px 10px 10px;
vertical-align: middle !important;
}
#memberGoTbl_bankAccHistory tbody td:first-child {
text-align: center;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_bankAccHistory tbody td:nth-last-child(8) {
text-align: left;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_bankAccHistory tbody td:nth-last-child(7) {
text-align: left;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_bankAccHistory tbody td:nth-last-child(6) {
text-align: left;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_bankAccHistory tbody td:nth-last-child(5) {
text-align: left;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_bankAccHistory tbody td:nth-last-child(4) {
text-align: left;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_bankAccHistory tbody td:nth-last-child(3) {
text-align: left;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_bankAccHistory tbody td:nth-last-child(2) {
text-align: center;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_bankAccHistory tbody td:nth-last-child(1) {
text-align: center;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
/* MemberGo - 使用者管理頁面 - 使用者列表 table
*------------------------------------------------*/
#memberGoTbl_userList{
width: 99%;
margin-bottom: 40px;
}
#memberGoTbl_userList tbody tr:last-child{
border-bottom:solid 1px #d9d9d9;
}
#memberGoTbl_userList thead th{
font-size: 17px;
border: none;
vertical-align: middle;
background: #e0e0e0 !important;
background: linear-gradient(45deg, #e0e0e0 0%, #e0e0e0 80%, #aaaaaa 80%, #aaaaaa 100%) !important;
background: -webkit-linear-gradient(45deg, #e0e0e0 0%, #e0e0e0 80%, #aaaaaa 80%, #aaaaaa 100%) !important;
background: -o-linear-gradient(45deg, #e0e0e0 0%, #e0e0e0 80%, #aaaaaa 80%, #aaaaaa 100%) !important;
background: -moz-linear-gradient(45deg, #e0e0e0 0%, #e0e0e0 80%, #aaaaaa 80%, #aaaaaa 100%) !important;
color: #000 !important;
padding: 6px 15px !important;
border-top-left-radius: 4px !important;
border-top-right-radius: 0px !important;
}
#memberGoTbl_userList tbody th{
font-weight: bold;
padding: 10px 10px 10px 10px;
text-align: center;
vertical-align: middle !important;
background-color:
}
#memberGoTbl_userList tbody th:first-child{
border-left: solid 0.1px #d9d9d9;
}
#memberGoTbl_userList tbody th:last-child{
border-right: solid 0.1px #d9d9d9;
}
#memberGoTbl_userList tbody td{
padding: 10px 10px 10px 10px;
vertical-align: middle !important;
font-size: 0.875rem;
}
#memberGoTbl_userList tbody td:first-child {
text-align: left;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_userList tbody td:nth-last-child(3) {
text-align: left;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_userList tbody td:nth-last-child(3) {
text-align: left;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
font-size: 0.9em;
}
#memberGoTbl_userList tbody td:nth-last-child(2) {
text-align: center;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_userList tbody td:nth-last-child(1) {
text-align: center;
padding: 10px 10px 10px 10px;
border:solid 1px #d9d9d9;
}
#memberGoTbl_userList .checksquare{
margin-top: 0px;
margin-bottom: 0px;
}
#memberGoTbl_userList .checksquare div{
/* padding-right: 0px !important; */
/* padding-left: 0px !important; */
}
/*#memberGoTbl_userList .checksquare div i{
color: #444;
font-size: 0.7em;
}*/
#memberGoTbl_userList a{
text-decoration: none;
color: #1488e0;
cursor: pointer;
}
#memberGoTbl_userList i.fa-square-xmark{
color: #ea5962;
}
#memberGoTbl_userList i.fa-square-check{
color: #36c956;
}
.form-check-tokenizationPlatform .form-check-input{
margin-top: 10px;
}
.rowForformCheck{
padding-left: 15px;
padding-right: 15px;
}
/*check box (check box 本身)
-----------------------------*/
.checkboxArea{
margin-bottom: 30px;
}
.checkboxItem{
margin-top: 5px;
margin-bottom: 5px;
padding-left: 5px !important;
}
.regular-checkbox {
display: none;
}
.regular-checkbox + label {
background-color: #fafafa;
border: 1px solid #cacece;
box-shadow: 0 1px 2px rgba(0,0,0,0.05), inset 0px -15px 10px -12px rgba(0,0,0,0.05);
padding: 9px;
border-radius: 3px;
display: inline-block;
position: relative;
}
.regular-checkbox + label:active, .regular-checkbox:checked + label:active {
box-shadow: 0 1px 2px rgba(0,0,0,0.05), inset 0px 1px 3px rgba(0,0,0,0.1);
}
.regular-checkbox:checked + label {
background-color: #e9ecee;
border: 1px solid #adb8c0;
box-shadow: 0 1px 2px rgba(0,0,0,0.05), inset 0px -15px 10px -12px rgba(0,0,0,0.05), inset 15px 10px -12px rgba(255,255,255,0.1);
color: #f0924e;
}
.regular-checkbox:checked + label:after {
content: '\2714';
font-size: 14px;
position: absolute;
top: -2px;
left: 3px;
color: #f0924e;
}
/*switch (bootstrap switch 樣式 - tiny版 )
-----------------------------*/
.cusTinySwitch{
text-align: center;
}
.cusTinySwitch .bootstrap-switch-container{
height: 15px !important;
}
.cusTinySwitch .bootstrap-switch-container span{
vertical-align: top !important;
font-size: 10px !important;
padding: 1px 3px !important;
line-height: 1 !important;
}
<svg width="132" height="56" xmlns="http://www.w3.org/2000/svg">
<g fill="none" fill-rule="evenodd">
<path fill="#35A9E1" d="m15.34 30.66.66-3.403L8.924 20H5.105L2 37h3.833l2.473-13.57z"/>
<path fill="#35A9E1" d="M22 20h-3.56l-2.306 13.57-6.558-7.203L9 29.796 15.545 37h3.573zM25.57 32.64c.11.36.32.679.605.916.295.253.643.431 1.017.519.419.118.851.175 1.286.173.336-.003.672-.03 1.004-.08.36-.05.711-.152 1.042-.306.335-.142.638-.355.888-.625.26-.276.43-.63.489-1.01a1.36 1.36 0 0 0-.232-1.076 2.566 2.566 0 0 0-.952-.678 8.09 8.09 0 0 0-1.415-.478c-.54-.133-1.081-.293-1.622-.452-.55-.154-1.09-.34-1.62-.558a4.454 4.454 0 0 1-1.352-.864 3.068 3.068 0 0 1-.849-1.33 3.836 3.836 0 0 1-.077-1.9c.126-.78.43-1.519.888-2.153a6.149 6.149 0 0 1 1.595-1.528 7.016 7.016 0 0 1 2.059-.917A8.146 8.146 0 0 1 30.485 20a9.358 9.358 0 0 1 2.33.28c.673.172 1.304.49 1.852.93.515.42.902.982 1.12 1.621a4.9 4.9 0 0 1 .115 2.406h-3.345a2.723 2.723 0 0 0-.09-1.17 1.619 1.619 0 0 0-.54-.757 2.5 2.5 0 0 0-.901-.386 6.21 6.21 0 0 0-1.158-.186 3.73 3.73 0 0 0-.85.093c-.286.052-.562.16-.81.319a2.46 2.46 0 0 0-.67.558 1.853 1.853 0 0 0-.36.877 1.478 1.478 0 0 0 0 .771c.14.243.352.435.605.545.435.211.887.38 1.351.505l2.278.638c.396.084.786.19 1.17.32.51.173.989.434 1.416.77.473.364.854.844 1.106 1.395.295.723.354 1.526.168 2.286a5.42 5.42 0 0 1-.772 2.074 5.698 5.698 0 0 1-1.519 1.648 7.1 7.1 0 0 1-2.238 1.076 9.837 9.837 0 0 1-2.895.386 9.353 9.353 0 0 1-2.47-.32 5.28 5.28 0 0 1-1.982-1.036 4.107 4.107 0 0 1-1.184-1.807 5.203 5.203 0 0 1-.09-2.592h3.358c-.083.465-.052.945.09 1.395M52 20l-.531 2.957h-8.575l-.61 3.427h7.87l-.49 2.735h-7.872l-.69 3.924h8.748L49.319 36H37l2.814-16zM63.225 24.68a3.038 3.038 0 0 0-.645-.893 2.873 2.873 0 0 0-.995-.613 3.376 3.376 0 0 0-1.237-.214 4.8 4.8 0 0 0-2.152.467 5.101 5.101 0 0 0-1.613 1.253 7.123 7.123 0 0 0-1.09 1.8 9.996 9.996 0 0 0-.605 2.08c-.12.658-.16 1.33-.12 2 .014.6.146 1.194.39 1.745.258.514.66.944 1.156 1.24.609.332 1.296.494 1.99.467a4.058 4.058 0 0 0 2.77-1 5.842 5.842 0 0 0 1.613-2.666h3.497a9.5 9.5 0 0 1-1.197 2.76 8.957 8.957 0 0 1-1.896 2.106 8.369 8.369 0 0 1-2.447 1.333c-.927.308-1.9.462-2.878.453a7.835 7.835 0 0 1-3.281-.64 5.692 5.692 0 0 1-2.219-1.8 6.495 6.495 0 0 1-1.116-2.666 9.241 9.241 0 0 1 0-3.32c.253-1.2.698-2.352 1.318-3.412a10.45 10.45 0 0 1 2.07-2.666 9.092 9.092 0 0 1 2.878-1.827 8.94 8.94 0 0 1 3.51-.666 7.886 7.886 0 0 1 2.501.386 5.487 5.487 0 0 1 1.963 1.134c.56.505.988 1.135 1.25 1.84.3.8.414 1.655.337 2.506H63.48c.008-.41-.08-.816-.256-1.187M79.385 35.344a8.793 8.793 0 0 1-5.383 1.63 6.447 6.447 0 0 1-4.884-1.617c-1.036-1.086-1.346-2.715-.955-5.024L69.966 20h3.62l-1.804 10.333a7.417 7.417 0 0 0-.12 1.358c-.008.403.09.801.282 1.154.207.357.516.641.888.815.538.234 1.123.34 1.709.312a3.902 3.902 0 0 0 2.825-.869 4.933 4.933 0 0 0 1.211-2.715l1.803-10.334H84l-1.803 10.334a7.66 7.66 0 0 1-2.812 4.956M92.252 27.235a3.18 3.18 0 0 0 1.984-.536c.546-.445.887-1.08.95-1.766a1.815 1.815 0 0 0-.312-1.701 2.487 2.487 0 0 0-1.794-.523h-4.076l-.813 4.5 4.061.026zm2.634-7.234a5.204 5.204 0 0 1 1.944.34c.523.213.99.54 1.359.955.342.41.59.888.718 1.4a4.006 4.006 0 0 1 0 1.713 5.3 5.3 0 0 1-1.058 2.447 4.903 4.903 0 0 1-2.296 1.57c.38.102.731.29 1.02.549.245.252.435.55.556.876.126.359.194.734.204 1.112a9.09 9.09 0 0 1 0 1.217c0 .249 0 .55-.124.89-.12.34-.08.693-.107 1.06-.027.34-.027.68 0 1.02.019.282.098.558.23.81h-3.68a5.671 5.671 0 0 1 0-1.818c.081-.693.135-1.373.161-2.014a2.649 2.649 0 0 0-.447-1.832 2.414 2.414 0 0 0-1.876-.588h-3.693L86.6 36H83l2.922-16h8.964zM115 20l-.519 2.957h-8.575l-.61 3.427h7.858l-.464 2.735h-7.886l-.702 3.924h8.748L112.317 36H100l2.866-16zM121.2 33.04a4.84 4.84 0 0 0 1.575-.3 4.04 4.04 0 0 0 1.442-.809 5.62 5.62 0 0 0 1.205-1.473 7.12 7.12 0 0 0 .728-2.243c.14-.717.195-1.449.159-2.178a3.577 3.577 0 0 0-.49-1.655 2.64 2.64 0 0 0-1.243-1.07 5.355 5.355 0 0 0-2.144-.365h-2.542L118.09 33l3.11.04zM123.847 20c.964-.01 1.92.158 2.82.496.813.3 1.53.808 2.077 1.473.562.719.939 1.56 1.1 2.452.208 1.147.208 2.32 0 3.468a12.309 12.309 0 0 1-1.033 3.208 8.839 8.839 0 0 1-1.827 2.607 8.282 8.282 0 0 1-2.647 1.682 8.703 8.703 0 0 1-3.335.613H114L116.86 20h6.987z"/>
<path d="M0 0h132v56H0z"/>
</g>
</svg>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment