#wip: Basic GUI structure and starting the server developt.
This commit is contained in:
parent
f09499b641
commit
dda74c1116
4
.gitignore
vendored
Normal file
4
.gitignore
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
/Data
|
||||
/Public/data
|
||||
*[Ss]ecrets*
|
||||
.sass-cache
|
186
JSON/Sizerboard.languages_iso.json
Normal file
186
JSON/Sizerboard.languages_iso.json
Normal file
@ -0,0 +1,186 @@
|
||||
{
|
||||
"aa" : "afar",
|
||||
"ab" : "abjasio",
|
||||
"ae" : "avéstico",
|
||||
"af" : "afrikáans",
|
||||
"ak" : "akano",
|
||||
"am" : "amhárico",
|
||||
"an" : "aragonés",
|
||||
"ar" : "alarabiyah",
|
||||
"as" : "asamés",
|
||||
"av" : "avar",
|
||||
"ay" : "aimara",
|
||||
"az" : "azerbaycanca",
|
||||
"ba" : "baskir",
|
||||
"be" : "bielorruso",
|
||||
"bg" : "búlgaro",
|
||||
"bh" : "bhoyapurí",
|
||||
"bi" : "bislama",
|
||||
"bm" : "bambara",
|
||||
"bn" : "bengalí",
|
||||
"bo" : "tibetano",
|
||||
"br" : "bretón",
|
||||
"bs" : "bosnio",
|
||||
"ca" : "catalan",
|
||||
"ce" : "checheno",
|
||||
"ch" : "chamorro",
|
||||
"co" : "corso",
|
||||
"cr" : "cree",
|
||||
"cs" : "cestina",
|
||||
"cu" : "eslavo eclesiástico antiguo",
|
||||
"cv" : "chuvasio",
|
||||
"cy" : "galés",
|
||||
"da" : "dansk",
|
||||
"de" : "alemán",
|
||||
"dv" : "maldivo",
|
||||
"dz" : "dzongkha",
|
||||
"ee" : "ewé",
|
||||
"el" : "ellinika",
|
||||
"en" : "english",
|
||||
"eo" : "esperanto",
|
||||
"es" : "espanol",
|
||||
"et" : "estonio",
|
||||
"eu" : "euskera",
|
||||
"fa" : "farsi",
|
||||
"ff" : "fula",
|
||||
"fi" : "suomi",
|
||||
"fj" : "fiyiano",
|
||||
"fo" : "feroés",
|
||||
"fr" : "francais",
|
||||
"fy" : "frisón",
|
||||
"ga" : "gaeilge",
|
||||
"gd" : "gaélico escocés",
|
||||
"gl" : "gallego",
|
||||
"gn" : "guaraní",
|
||||
"gu" : "guyaratí",
|
||||
"gv" : "manés",
|
||||
"ha" : "hausa",
|
||||
"he" : "ivrit",
|
||||
"hi" : "hindi",
|
||||
"ho" : "hiri motu",
|
||||
"hr" : "croata",
|
||||
"ht" : "haitiano",
|
||||
"hu" : "magyar",
|
||||
"hy" : "armenio",
|
||||
"hz" : "herero",
|
||||
"ia" : "interlingua",
|
||||
"id" : "indonesia",
|
||||
"ie" : "occidental",
|
||||
"ig" : "igbo",
|
||||
"ii" : "yi de Sichuán",
|
||||
"ik" : "iñupiaq",
|
||||
"io" : "ido",
|
||||
"is" : "islandés",
|
||||
"it" : "italiano",
|
||||
"iu" : "inuktitut",
|
||||
"ja" : "nihongo",
|
||||
"jv" : "javanés",
|
||||
"ka" : "georgiano",
|
||||
"kg" : "kongo",
|
||||
"ki" : "kikuyu",
|
||||
"kj" : "kuanyama",
|
||||
"kk" : "kazajo",
|
||||
"kl" : "groenlandés",
|
||||
"km" : "camboyano",
|
||||
"kn" : "canarés",
|
||||
"ko" : "hangugeo",
|
||||
"kr" : "kanuri",
|
||||
"ks" : "cachemiro",
|
||||
"ku" : "kurdo",
|
||||
"kv" : "komi",
|
||||
"kw" : "córnico",
|
||||
"ky" : "kirguís",
|
||||
"la" : "latín",
|
||||
"lb" : "luxemburgués",
|
||||
"lg" : "luganda",
|
||||
"li" : "limburgués",
|
||||
"ln" : "lingala",
|
||||
"lo" : "lao",
|
||||
"lt" : "lituano",
|
||||
"lu" : "luba-katanga",
|
||||
"lv" : "letón",
|
||||
"mg" : "malgache",
|
||||
"mh" : "marshalés",
|
||||
"mi" : "maorí",
|
||||
"mk" : "macedonio",
|
||||
"ml" : "malayalam",
|
||||
"mn" : "mongol",
|
||||
"mr" : "maratí",
|
||||
"ms" : "malayo",
|
||||
"mt" : "maltés",
|
||||
"my" : "birmano",
|
||||
"na" : "nauruano",
|
||||
"nb" : "noruego bokmål",
|
||||
"nd" : "ndebele del norte",
|
||||
"ne" : "nepalí",
|
||||
"ng" : "ndonga",
|
||||
"nl" : "nederlands",
|
||||
"nn" : "nynorsk",
|
||||
"no" : "noruego",
|
||||
"nr" : "ndebele del sur",
|
||||
"nv" : "navajo",
|
||||
"ny" : "chichewa",
|
||||
"oc" : "occitano",
|
||||
"oj" : "ojibwa",
|
||||
"om" : "oromo",
|
||||
"or" : "oriya",
|
||||
"os" : "osético",
|
||||
"pa" : "panyabí",
|
||||
"pi" : "pali",
|
||||
"pl" : "polski",
|
||||
"ps" : "pastú",
|
||||
"pt" : "portugues",
|
||||
"qc" : "quechua",
|
||||
"rm" : "romanche",
|
||||
"rn" : "kirundi",
|
||||
"ro" : "rumano",
|
||||
"ru" : "russkiy",
|
||||
"rw" : "ruandés",
|
||||
"sa" : "sánscrito",
|
||||
"sc" : "sardo",
|
||||
"sd" : "sindhi",
|
||||
"se" : "sami septentrional",
|
||||
"sg" : "sango",
|
||||
"si" : "cingalés",
|
||||
"sk" : "eslovaco",
|
||||
"sl" : "slovencina",
|
||||
"sm" : "samoano",
|
||||
"sn" : "shona",
|
||||
"so" : "somalí",
|
||||
"sq" : "albanés",
|
||||
"sr" : "serbio",
|
||||
"ss" : "suazi",
|
||||
"st" : "sesotho",
|
||||
"su" : "sundanés",
|
||||
"sv" : "svenska",
|
||||
"sw" : "suajili",
|
||||
"ta" : "tamil",
|
||||
"te" : "télugu",
|
||||
"tg" : "tayiko",
|
||||
"th" : "thai",
|
||||
"ti" : "tigriña",
|
||||
"tk" : "turcomano",
|
||||
"tl" : "tagalo",
|
||||
"tn" : "setsuana",
|
||||
"to" : "tongano",
|
||||
"tr" : "turkce",
|
||||
"ts" : "tsonga",
|
||||
"tt" : "tártaro",
|
||||
"tw" : "twi",
|
||||
"ty" : "tahitiano",
|
||||
"ug" : "uigur",
|
||||
"uk" : "ukrainska",
|
||||
"ur" : "urdu",
|
||||
"uz" : "uzbeko",
|
||||
"ve" : "venda",
|
||||
"vi" : "vietnamita",
|
||||
"vo" : "volapük",
|
||||
"wa" : "valón",
|
||||
"wo" : "wolof",
|
||||
"xh" : "xhosa",
|
||||
"yi" : "yídish",
|
||||
"yo" : "yoruba",
|
||||
"za" : "chuan",
|
||||
"zh" : "zhongwen",
|
||||
"zu" : "zulú"
|
||||
}
|
143
PHP/Sizerboard.php
Normal file
143
PHP/Sizerboard.php
Normal file
@ -0,0 +1,143 @@
|
||||
<?php
|
||||
|
||||
class Sizerboard{
|
||||
|
||||
private static $default_settings = [];
|
||||
private $inputs = null;
|
||||
private $custom_settings = [];
|
||||
private $slash;
|
||||
private static $root_paths = ["", __DIR__, __DIR__ . "/.."];
|
||||
const root_project_path = __DIR__ . "/..";
|
||||
|
||||
public function __construct($inputs = null){
|
||||
$this->slash = strpos(__DIR__, '/') === null ? '\\' : '/';
|
||||
|
||||
$this->inputs = $inputs;
|
||||
|
||||
}
|
||||
|
||||
public function nulls($nulls = null){
|
||||
return is_bool($nulls) ? $nulls : $this->settings("nulls", null, false, false);
|
||||
}
|
||||
|
||||
public function default_value($default = null, $nulls = null){
|
||||
return $default !== null || $this->nulls($nulls) ? $default : $this->settings("default_value", null, null, true);
|
||||
}
|
||||
|
||||
public static function is_dictionary($value){
|
||||
return is_array($value) && array_values($value) != $value;
|
||||
}
|
||||
|
||||
public function settings($keys, $inputs = null, $default = null, $nulls = null){
|
||||
|
||||
$keys = array_filter(array_unique(array_map(fn($key) => is_string($key) && ($key = trim($key)) ? $key : null, $keys)), fn($key) => $key);
|
||||
|
||||
if(count($keys)){
|
||||
|
||||
$nulls = $this->nulls($nulls);
|
||||
|
||||
foreach(array_merge(
|
||||
is_array($inputs) ? (self::is_dictionary($inputs) ? [$inputs] : $inputs) : [],
|
||||
[$this->inputs, $this->custom_settings, self::$default_settings]
|
||||
) as $subinputs)
|
||||
if(self::is_dictionary($subinputs))
|
||||
foreach($keys as $key)
|
||||
if(isset($subinputs[$key]) && ($nulls || $subinputs[$key] !== null))
|
||||
return $subinputs[$key];
|
||||
};
|
||||
return $this->default_value($default, $nulls);
|
||||
}
|
||||
|
||||
public static function string_variables($string, $variables = null, $default = null){
|
||||
|
||||
$variables = array_filter(is_array($variables) ? (self::is_dictionary($variables) ? [$variables] : $variables) : [], fn($item) => self::is_dictionary($item));
|
||||
|
||||
return preg_replace_callback('/\{([^\{\}]+)\}/', function($values) use($variables){
|
||||
foreach($variables as $subset)
|
||||
if(isset($subset[$values[1]]))
|
||||
return $subset[$values[1]];
|
||||
return $default ?? $values[0];
|
||||
}, $string);
|
||||
}
|
||||
|
||||
public static function check($conditions, $shift = 0){
|
||||
|
||||
$error = 0;
|
||||
$k = 0;
|
||||
$i = -1;
|
||||
|
||||
if(is_array($conditions) && !self::is_dictionary($conditions))
|
||||
foreach($conditions as $condition){
|
||||
$ignore = false;
|
||||
$i ++;
|
||||
if(is_array($condition)){
|
||||
if(($l = count($condition)) == 2)
|
||||
list($condition, $ignore) = $condition;
|
||||
else
|
||||
list($suberror, $sub_k) = self::check($condition);
|
||||
};
|
||||
if(is_callable($condition) ? $condition() : (is_bool($condition) ? $condition : false)){
|
||||
$ignore ||
|
||||
($error |= 1 << ($shift + $k + $i));
|
||||
break;
|
||||
};
|
||||
};
|
||||
|
||||
return [$error, $k + $shift + $i];
|
||||
}
|
||||
|
||||
public function fix_path($path){
|
||||
|
||||
$error = self::check([
|
||||
fn() => $path === null,
|
||||
fn() => !is_string($path),
|
||||
[fn() => !$path, true]
|
||||
], 1)[0];
|
||||
$results = null;
|
||||
|
||||
$error ||
|
||||
($results = preg_replace('/[\/\\\\]+/', $this->slash, self::string_variables($path, [
|
||||
"project_path" => self::root_project_path
|
||||
])));
|
||||
|
||||
return [$results, $error];
|
||||
}
|
||||
|
||||
public function get_absolute_path($path){
|
||||
|
||||
$error = self::check([
|
||||
fn() => $path === null,
|
||||
fn() => !is_string($path),
|
||||
[fn() => !$path, true]
|
||||
], 1)[0];
|
||||
$absolute_path = null;
|
||||
|
||||
if(!$error){
|
||||
foreach($this->root_paths as $root)
|
||||
if(file_exists($full_path = $this->fix_path($root . '/' . $path)[0])){
|
||||
$absolute_path = $full_path;
|
||||
break;
|
||||
};
|
||||
$absolute_path === null &&
|
||||
($error |= 1 << 4);
|
||||
};
|
||||
|
||||
return [$absolute_path, $error];
|
||||
}
|
||||
|
||||
public function load_file($path){
|
||||
|
||||
list($path, $error) = $this->absolute_path($path);
|
||||
$data = null;
|
||||
|
||||
if(!$error)
|
||||
try{
|
||||
$data = file_get_contents($path);
|
||||
}catch(\Exception $exception){
|
||||
$error |= 1 << 0;
|
||||
};
|
||||
|
||||
return [$data, $error];
|
||||
}
|
||||
|
||||
};
|
6
Public/.htaccess
Executable file
6
Public/.htaccess
Executable file
@ -0,0 +1,6 @@
|
||||
Header set Access-Control-Allow-Origin "*"
|
||||
RewriteEngine On
|
||||
RewriteBase /
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
RewriteCond %{REQUEST_FILENAME} !-d
|
||||
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
|
12
Public/css/Sizerboard.icons.css
Normal file
12
Public/css/Sizerboard.icons.css
Normal file
@ -0,0 +1,12 @@
|
||||
.sizerboard [data-icon=home]::before{content : "\f015"; font-family : "FA5FS";}
|
||||
.sizerboard [data-icon=documentation]::before{content : "\f05a"; font-family : "FA5FS";}
|
||||
.sizerboard [data-icon=git]::before{content : "\f841"; font-family : "FA5FB";}
|
||||
.sizerboard [data-icon=search]::before{content : "\f002"; font-family : "FA5FS";}
|
||||
.sizerboard [data-icon=add]::before{content : "\f067"; font-family : "FA5FS";}
|
||||
.sizerboard [data-icon=html]::before{content : "\f121"; font-family : "FA5FS";}
|
||||
.sizerboard [data-icon=canvas]::before{content : "\f1c5"; font-family : "FA5FR";}
|
||||
.sizerboard [data-icon=svg]::before{content : "\f279"; font-family : "FA5FS";}
|
||||
.sizerboard [data-icon=text]::before{content : "\f1c9"; font-family : "FA5FR";}
|
||||
.sizerboard [data-icon=upload]::before{content : "\f093"; font-family : "FA5FS";}
|
||||
.sizerboard [data-icon=save]::before{content : "\f0c7"; font-family : "FA5FS";}
|
||||
.sizerboard [data-icon=download]::before{content : "\f019"; font-family : "FA5FS";}
|
103
Public/ecma/Sizerboard.Base.ecma.js
Normal file
103
Public/ecma/Sizerboard.Base.ecma.js
Normal file
@ -0,0 +1,103 @@
|
||||
Sizerboard.Base = function(sizerboard, inputs){
|
||||
|
||||
const self = this,
|
||||
screen_cache = {x : 0, y : 0},
|
||||
texts_cache = {}
|
||||
let started = false,
|
||||
thread = null;
|
||||
|
||||
const construct = () => {
|
||||
|
||||
sizerboard.print("info", "sizerboard_base_building");
|
||||
|
||||
sizerboard.print("ok", "sizerboard_base_built");
|
||||
|
||||
};
|
||||
|
||||
const changes_thread_method = () => {
|
||||
|
||||
if(screen_cache.x != sizerboard.item_self.offsetWidth || screen_cache.y != sizerboard.item_self.offsetHeight){
|
||||
|
||||
screen_cache.x = sizerboard.item_self.offsetWidth;
|
||||
screen_cache.y = sizerboard.item_self.offsetHeight;
|
||||
|
||||
sizerboard.item_self.style.fontSize = (screen_cache[screen_cache.x < screen_cache.y ? "x" : "y"] / Number(sizerboard.item_self.getAttribute("data-cells"))) + "px";
|
||||
|
||||
};
|
||||
|
||||
["projects_menu", "draw_box"].forEach(key => {
|
||||
|
||||
const text_box = sizerboard.item_self.querySelector("p[data-i18n=" + key + "_text]");
|
||||
let y;
|
||||
|
||||
if(text_box && (
|
||||
!texts_cache[key] ||
|
||||
text_box.innerText != texts_cache[key].text ||
|
||||
(y = text_box.offsetHeight / Number(sizerboard.item_self.style.fontSize.slice(0, -2))) != texts_cache[key].y
|
||||
)){
|
||||
|
||||
(texts_cache[key] || (texts_cache[key] = {})).text = text_box.innerText;
|
||||
texts_cache[key].y = y;
|
||||
|
||||
text_box.parentNode.querySelector("p+ul").style.top = y + "em";
|
||||
text_box.parentNode.querySelector("p+ul+*").style.top = (1.4 + y) + "em";
|
||||
|
||||
};
|
||||
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
this.start = callback => {
|
||||
|
||||
const end = status => typeof callback == "function" && callback(status);
|
||||
|
||||
sizerboard.print("info", "sizerboard_base_starting");
|
||||
|
||||
if(started){
|
||||
sizerboard.print("warn", "sizerboard_base_already_started");
|
||||
end(false);
|
||||
return false;
|
||||
};
|
||||
started = true;
|
||||
|
||||
sizerboard.preload(sizerboard.settings("position"), (position, error, asynchronous) => {
|
||||
if(error)
|
||||
return;
|
||||
|
||||
const classes = sizerboard.settings("class"),
|
||||
hash = sizerboard.hash();
|
||||
|
||||
position.innerHTML = sizerboard.views.get("base_view", {
|
||||
application : sizerboard.settings(["application_name", "application"]),
|
||||
git : sizerboard.settings(["application_git", "git"]),
|
||||
url : sizerboard.settings(["application_url", "url"]),
|
||||
hash : hash,
|
||||
classes : classes ? " " + classes : "",
|
||||
cells : sizerboard.settings("cells"),
|
||||
main_menu_items : sizerboard.views.get_multiple_items("main_menu_item", sizerboard.settings("main_menu_items"))[0],
|
||||
preloader : sizerboard.build_preloader((view, error, asynchronous) => {
|
||||
if(error)
|
||||
return;
|
||||
|
||||
const self_error = sizerboard.set_self(view, hash);
|
||||
|
||||
if(self_error)
|
||||
return;
|
||||
|
||||
thread = sizerboard.thread_add(changes_thread_method);
|
||||
|
||||
sizerboard.print("ok", "sizerboard_base_started");
|
||||
end(true);
|
||||
|
||||
}),
|
||||
projects : sizerboard.views.get_multiple_items("project_option", [])[0]
|
||||
})[0];
|
||||
});
|
||||
|
||||
return true;
|
||||
};
|
||||
|
||||
construct();
|
||||
|
||||
};
|
48
Public/ecma/Sizerboard.DrawBox.ecma.js
Normal file
48
Public/ecma/Sizerboard.DrawBox.ecma.js
Normal file
@ -0,0 +1,48 @@
|
||||
Sizerboard.DrawBox = function(sizerboard, inputs){
|
||||
|
||||
const self = this;
|
||||
let started = false;
|
||||
|
||||
const construct = () => {
|
||||
|
||||
sizerboard.print("info", "sizerboard_draw_box_building");
|
||||
|
||||
sizerboard.print("ok", "sizerboard_draw_box_built");
|
||||
|
||||
};
|
||||
|
||||
this.start = callback => {
|
||||
|
||||
const end = status => typeof callback == "function" && callback(status);
|
||||
|
||||
sizerboard.print("info", "sizerboard_draw_box_starting");
|
||||
|
||||
if(started){
|
||||
sizerboard.print("warn", "sizerboard_draw_box_already_started");
|
||||
end(false);
|
||||
return false;
|
||||
};
|
||||
started = true;
|
||||
|
||||
sizerboard.print("ok", "sizerboard_draw_box_started");
|
||||
end(true);
|
||||
|
||||
return true;
|
||||
};
|
||||
|
||||
this.show = (item, event, key) => {
|
||||
if(item.hasAttribute("disabled"))
|
||||
return;
|
||||
|
||||
sizerboard.item_self.querySelector(".draw-box").setAttribute("data-mode", key);
|
||||
sizerboard.item_self.querySelectorAll(".draw-box .fields>[data-visible=true]").forEach(section => section.setAttribute("data-visible", false));
|
||||
item.parentNode.parentNode.querySelectorAll("[disabled]").forEach(button => button.removeAttribute("disabled"));
|
||||
|
||||
sizerboard.item_self.querySelector(".draw-box .fields>." + key).setAttribute("data-visible", true);
|
||||
item.setAttribute("disabled", true);
|
||||
|
||||
};
|
||||
|
||||
construct();
|
||||
|
||||
};
|
90
Public/ecma/Sizerboard.Projects.ecma.js
Normal file
90
Public/ecma/Sizerboard.Projects.ecma.js
Normal file
@ -0,0 +1,90 @@
|
||||
Sizerboard.Projects = function(sizerboard, inputs){
|
||||
|
||||
const self = this;
|
||||
let started = false,
|
||||
cache = "",
|
||||
autosearch_thread;
|
||||
|
||||
const construct = () => {
|
||||
|
||||
sizerboard.print("info", "sizerboard_projects_building");
|
||||
|
||||
sizerboard.print("ok", "sizerboard_projects_built");
|
||||
|
||||
};
|
||||
|
||||
this.start = callback => {
|
||||
|
||||
const end = status => typeof callback == "function" && callback(status);
|
||||
|
||||
sizerboard.print("info", "sizerboard_projects_starting");
|
||||
|
||||
if(started){
|
||||
sizerboard.print("warn", "sizerboard_projects_already_started");
|
||||
end(false);
|
||||
return false;
|
||||
};
|
||||
started = true;
|
||||
|
||||
sizerboard.preload("#projects_menu_search", (item, error, asynchronous) => (
|
||||
error ||
|
||||
(autosearch_thread = sizerboard.thread_add(autosearch_thread_method))
|
||||
));
|
||||
|
||||
sizerboard.print("ok", "sizerboard_projects_started");
|
||||
end(true);
|
||||
|
||||
return true;
|
||||
};
|
||||
|
||||
const autosearch_thread_method = () => {
|
||||
|
||||
const text = sizerboard.item_self.querySelector(".projects-menu .search-box [name=search]").value;
|
||||
|
||||
if(text != cache){
|
||||
cache = text;
|
||||
sizerboard.item_self.querySelectorAll(".projects-menu nav li").forEach(item => item.setAttribute("data-visible", !cache || item.innerText.includes(cache)));
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
this.search = (item, event) => {};
|
||||
|
||||
this.add = (item, event) => {
|
||||
|
||||
let name = item.parentNode.parentNode.querySelector("[type=text]").value,
|
||||
error = (
|
||||
name === undefined ? 1 << 0 :
|
||||
name === null ? 1 << 1 :
|
||||
typeof name != "string" ? 1 << 2 :
|
||||
!name ? 1 << 3 :
|
||||
!(name = name.trim()) ? 1 << 4 :
|
||||
/[^a-z0-9_\- ]/i.test(name) ? 1 << 5 :
|
||||
sizerboard.item_self.querySelector(".projects-menu nav li[data-name=" + name + "]") ? 1 << 6 :
|
||||
["null"].includes(name) ? 1 << 7 :
|
||||
0) << 1;
|
||||
|
||||
error ||
|
||||
(sizerboard.item_self.querySelector(".projects-menu nav>ul").innerHTML += sizerboard.views.get("project_option", {
|
||||
name : name,
|
||||
i : sizerboard.item_self.querySelectorAll(".projects-menu nav li").length
|
||||
})[0]);
|
||||
|
||||
};
|
||||
|
||||
this.get_in_gui = (item, event) => {
|
||||
|
||||
sizerboard.item_self.querySelectorAll(".projects-menu nav li[data-selected=true]").forEach(item => {
|
||||
item.hasAttribute("disabled") && item.removeAttribute("disabled");
|
||||
item.setAttribute("data-selected", false);
|
||||
});
|
||||
|
||||
sizerboard.item_self.querySelector(".draw-box").setAttribute("data-selected", item.getAttribute("data-name"));
|
||||
item.setAttribute("data-selected", true);
|
||||
item.setAttribute("disabled", true);
|
||||
|
||||
};
|
||||
|
||||
construct();
|
||||
|
||||
};
|
186
Public/ecma/Sizerboard.Views.ecma.js
Normal file
186
Public/ecma/Sizerboard.Views.ecma.js
Normal file
@ -0,0 +1,186 @@
|
||||
Sizerboard.Views = function(sizerboard, inputs){
|
||||
|
||||
const self = this,
|
||||
views = {};
|
||||
let started = false,
|
||||
default_overwrite = false;
|
||||
|
||||
const construct = () => {
|
||||
|
||||
sizerboard.print("info", "sizerboard_views_building");
|
||||
|
||||
sizerboard.print("ok", "sizerboard_views_built");
|
||||
|
||||
};
|
||||
|
||||
this.start = callback => {
|
||||
|
||||
const end = status => typeof callback == "function" && callback(status);
|
||||
|
||||
sizerboard.print("info", "sizerboard_views_starting");
|
||||
|
||||
if(started){
|
||||
sizerboard.print("warn", "sizerboard_views_already_started");
|
||||
end(false);
|
||||
return false;
|
||||
};
|
||||
started = true;
|
||||
|
||||
default_overwrite = sizerboard.settings(["views_overwrite", "overwrite"]);
|
||||
|
||||
sizerboard.execute_array_items(["default_views_files", "views_files"], (key, callback) => {
|
||||
self.add(sizerboard.settings(key), true, callback);
|
||||
}, () => {
|
||||
sizerboard.print("ok", "sizerboard_views_started");
|
||||
end(true);
|
||||
});
|
||||
|
||||
return true;
|
||||
};
|
||||
|
||||
const add_json = (data, overwrite, callback) => {
|
||||
|
||||
let json;
|
||||
|
||||
try{
|
||||
json = JSON.parse(data);
|
||||
}catch(exception){};
|
||||
|
||||
if(json)
|
||||
add(json instanceof Array ? json : [json], overwrite, callback, 0);
|
||||
else
|
||||
callback();
|
||||
|
||||
};
|
||||
|
||||
const add = (inputs, overwrite, callback, i) => {
|
||||
|
||||
if(!inputs || (i || (i = 0)) >= inputs.length){
|
||||
typeof callback == "function" && callback();
|
||||
return;
|
||||
};
|
||||
|
||||
const end = () => add(inputs, overwrite, callback, i + 1);
|
||||
|
||||
if(!inputs[i]){
|
||||
end();
|
||||
return;
|
||||
};
|
||||
|
||||
switch(typeof inputs[i]){
|
||||
case "string":
|
||||
if(/^(\[(.+|[\r\n]+)\]|\{(.+|[\r\n]+)\})$/.test(inputs[i].trim()))
|
||||
add_json(inputs[i], overwrite, end);
|
||||
else if(/^[^\s][^\r\n]+[^\s]$/.test(inputs[i]))
|
||||
sizerboard.load_file(inputs[i], response => add([response], overwrite, end, 0));
|
||||
else{
|
||||
|
||||
let matches;
|
||||
|
||||
while(matches = inputs[i].match(/\<\!\-{2} *\[{2}([^\[\]]+)\]{2} *\-{2}\>/)){
|
||||
|
||||
const key = matches[1].trim();
|
||||
|
||||
inputs[i] = inputs[i].substring(matches.index + matches[0].length);
|
||||
|
||||
if(matches = inputs[i].match(new RegExp("\\<\\!\\-{2} *\\[{2} *" + key + " *\\]{2} *\\-{2}\\>"))){
|
||||
(overwrite || views[key] === undefined) && (views[key] = inputs[i].substring(0, matches.index));
|
||||
inputs[i] = inputs[i].substring(matches.index + matches[0].length);
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
end();
|
||||
|
||||
};
|
||||
break;
|
||||
case "object":
|
||||
if(inputs[i] instanceof Array)
|
||||
add(inputs[i], overwrite, end, 0);
|
||||
else{
|
||||
for(const key in inputs[i])
|
||||
typeof inputs[i] == "string" && (overwrite || views[key] === undefined) && (views[key] = inputs[i]);
|
||||
end();
|
||||
};
|
||||
break;
|
||||
default:
|
||||
end();
|
||||
break;
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
this.add = (inputs, overwrite, callback) => add(
|
||||
typeof inputs == "object" && inputs instanceof Array ? inputs : [inputs],
|
||||
typeof overwrite == "boolean" ? overwrite : default_overwrite,
|
||||
callback,
|
||||
0
|
||||
);
|
||||
|
||||
this.validate = key => (
|
||||
key === undefined ? 1 << 0 :
|
||||
key === null ? 1 << 1 :
|
||||
typeof key != "string" ? 1 << 2 :
|
||||
!key ? 1 << 3 :
|
||||
!(key = key.trim()) ? 1 << 4 :
|
||||
views[key] === undefined ? 1 << 5 :
|
||||
0);
|
||||
|
||||
const set_variables = (view, variables, _default) => view.replace(/(object_name)/g, "{$1}").replace(/\{([^\{\}]+)\}|\{{2}([^\{\}]+)\}{2}/g, (all, key, i18n) => {
|
||||
if(key){
|
||||
for(let i = 0, l = variables.length; i < l; i ++)
|
||||
if(variables[i][key] !== undefined)
|
||||
return variables[i][key];
|
||||
}else{
|
||||
|
||||
for(let i = 0, l = variables.length; i < l; i ++)
|
||||
if(variables[i][i18n] !== undefined){
|
||||
i18n = variables[i][i18n];
|
||||
break;
|
||||
};
|
||||
|
||||
const text = sizerboard.i18n(i18n, variables, _default === undefined ? null : _default);
|
||||
|
||||
return text !== null ? text : i18n;
|
||||
};
|
||||
return all;
|
||||
});
|
||||
|
||||
const get_variables_array = variables => (
|
||||
variables && typeof variables == "object" ? variables instanceof Array ? variables : [variables] : []
|
||||
).filter(subset => subset && typeof subset == "object");
|
||||
|
||||
this.get = (key, variables, _default) => {
|
||||
|
||||
let error = self.validate(key) << 1,
|
||||
view = _default;
|
||||
|
||||
!error && (view = set_variables(views[key], get_variables_array(variables).concat([{
|
||||
object_name : sizerboard.object_name
|
||||
}]), _default));
|
||||
|
||||
return [view, error];
|
||||
};
|
||||
|
||||
this.get_multiple_items = (key, items, variables, _default) => {
|
||||
|
||||
let error = (
|
||||
(self.validate(key) << 0) |
|
||||
((
|
||||
items === undefined ? 1 << 0 :
|
||||
items === null ? 1 << 1 :
|
||||
typeof items != "object" ? 1 << 2 :
|
||||
!(items instanceof Array) ? 1 << 3 :
|
||||
items.some(item => !item || typeof item != "object") ? 1 << 4 :
|
||||
0) << 7) |
|
||||
0),
|
||||
results = null;
|
||||
|
||||
!error && (results = items.map(item => set_variables(views[key], get_variables_array(variables).concat([item]), _default)).join(""));
|
||||
|
||||
return [results, error];
|
||||
};
|
||||
|
||||
construct();
|
||||
|
||||
};
|
@ -7,19 +7,88 @@ Sizerboard = function(inputs){
|
||||
default_text : "",
|
||||
autostart : true,
|
||||
default_language : "english",
|
||||
timeout : 2000
|
||||
timeout : 2000,
|
||||
print_format : "[{type}] {yyyy}{mm}{dd} {hh}{ii}{ss} [{line}]{file}({method}): {message}",
|
||||
gui_mode : "light",
|
||||
frames_per_second : 24,
|
||||
position : "body",
|
||||
default_settings_files : [
|
||||
"/json/Sizerboard.settings.json",
|
||||
"/json/Sizerboard.settings.secrets.json"
|
||||
],
|
||||
object_name : "sizerboard"
|
||||
},
|
||||
settings = {},
|
||||
sentences = {};
|
||||
sentences = {},
|
||||
print_types = [
|
||||
["unkn", "unknown"],
|
||||
["info", "information"],
|
||||
[" ok ", "ok", "yes", "y"],
|
||||
["erro", "error", "wrong"],
|
||||
["warn", "warning"],
|
||||
["exce", "except", "exception"],
|
||||
["note", "test", "tests", "notes", "data"]
|
||||
],
|
||||
print_styles = {
|
||||
unkn : {
|
||||
dark : "color : #AAA;",
|
||||
light : "color : #666;"
|
||||
},
|
||||
info : {
|
||||
dark : "color : #99F;",
|
||||
light : "color : #009;"
|
||||
},
|
||||
ok : {
|
||||
dark : "color : #9F9;",
|
||||
light : "color : #090;"
|
||||
},
|
||||
note : {
|
||||
dark : "color : #222;",
|
||||
light : "color : #EFEFEF;"
|
||||
}
|
||||
},
|
||||
threads = [],
|
||||
hashes = [];
|
||||
let started = false,
|
||||
language, default_language,
|
||||
allow_settings_nulls, default_text, default_value,
|
||||
ajax_timeout;
|
||||
ajax_timeout,
|
||||
print_format = "[{type}] {yyyy}{mm}{dd} {hh}{ii}{ss} [{line}]{file}({method}): {message}",
|
||||
gui_mode = "light",
|
||||
threads_interval,
|
||||
frames_per_second = 24,
|
||||
preload_timeout = 2000,
|
||||
hashes_alphabet, hashes_length;
|
||||
|
||||
const re_trace_block = new RegExp("^(" + [
|
||||
/\s*at\s+(([^\s]+)\s+\()?(([^\(\)\:]+\:)?[^\(\)\:]+)(\:([0-9]+)\:[0-9]+)?\)?/.source, // Webkit
|
||||
/([^\@]+)\@([^:]+\:[^\:]+)\:([0-9]+)\:[0-9]+/.source, // Gecko
|
||||
].join("|") + ")$");
|
||||
|
||||
let object_name = this.object_name;
|
||||
let item_self = this.item_self = document;
|
||||
let hash_self = this.hash_self;
|
||||
|
||||
let base = this.base;
|
||||
let views = this.views;
|
||||
let projects = this.projects;
|
||||
let draw_box = this.draw_box;
|
||||
|
||||
const construct = () => {
|
||||
|
||||
basic_values();
|
||||
|
||||
self.print("info", "sizerboard_building");
|
||||
|
||||
object_name = self.object_name = self.settings("object_name");
|
||||
|
||||
base = self.base = new Sizerboard.Base(self, inputs);
|
||||
views = self.views = new Sizerboard.Views(self, inputs);
|
||||
projects = self.projects = new Sizerboard.Projects(self, inputs);
|
||||
draw_box = self.draw_box = new Sizerboard.DrawBox(self, inputs);
|
||||
|
||||
self.print("ok", "sizerboard_built");
|
||||
|
||||
self.settings("autostart") && self.start();
|
||||
|
||||
};
|
||||
@ -32,6 +101,8 @@ Sizerboard = function(inputs){
|
||||
language = self.settings(["language", "default_language"]);
|
||||
default_language = self.settings(["default_language", "language"]);
|
||||
ajax_timeout = self.settings(["ajax_timeout", "timeout"]);
|
||||
print_format = self.settings("print_format");
|
||||
gui_mode = self.settings("gui_mode");
|
||||
|
||||
};
|
||||
|
||||
@ -39,19 +110,43 @@ Sizerboard = function(inputs){
|
||||
|
||||
const end = status => typeof callback == "function" && callback(status);
|
||||
|
||||
self.print("info", "sizerboard_starting");
|
||||
|
||||
if(started){
|
||||
self.print("warn", "sizerboard_already_started");
|
||||
end(false);
|
||||
return false;
|
||||
};
|
||||
started = true;
|
||||
|
||||
basic_values();
|
||||
|
||||
self.print("info", "settings_loading");
|
||||
self.execute_array_items(["default_settings_files", "settings_files"], (key, callback) => {
|
||||
self.settings_add(self.settings(key), true, callback);
|
||||
basic_values();
|
||||
}, () => {
|
||||
self.print("ok", "settings_loaded");
|
||||
|
||||
frames_per_second = self.settings("frames_per_second");
|
||||
preload_timeout = self.settings(["preload_timeout", "timeout"]);
|
||||
hashes_alphabet = self.settings(["hashes_alphabet", "alphabet"]);
|
||||
hashes_length = self.settings(["hashes_length", "length"]);
|
||||
|
||||
threads_interval = setInterval(threads_method, 1000 / frames_per_second);
|
||||
|
||||
self.print("info", "i18n_loading");
|
||||
self.execute_array_items(["default_i18n_files", "i18n_files"], (key, callback) => {
|
||||
self.i18n_add(self.settings(key), true, callback);
|
||||
}, () => {
|
||||
end(true);
|
||||
self.print("ok", "i18n_loaded");
|
||||
|
||||
self.execute_array_items([views, base, projects, draw_box], (item, callback) => {
|
||||
item.start(callback);
|
||||
}, () => {
|
||||
self.print("ok", "sizerboard_started");
|
||||
end(true);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@ -62,14 +157,16 @@ Sizerboard = function(inputs){
|
||||
|
||||
this.default_value = (_default, nulls) => _default !== undefined && (_default !== null || self.nulls(nulls)) ? _default : default_value;
|
||||
|
||||
this.settings = (keys, inputs, _default, nulls) => {
|
||||
this.set_keys = keys => (typeof keys == "object" && keys instanceof Array ? keys : [keys]).filter(key => typeof key == "string" && key.trim()).map(key => key.trim());
|
||||
|
||||
const m = (keys = (typeof inputs == "object" && inputs instanceof Array ? inputs : [inputs]).filter(subinputs => typeof subinpunts == "string" && subinputs.trim()).map(subinputs => subinputs.trim())).length;
|
||||
this.settings = (keys, own_inputs, _default, nulls) => {
|
||||
|
||||
const m = (keys = self.set_keys(keys)).length;
|
||||
|
||||
if(m){
|
||||
|
||||
const l = (inputs = (
|
||||
inputs == "object" ? inputs instanceof Array ? inputs : [inputs] : []
|
||||
const l = (own_inputs = (
|
||||
own_inputs == "object" ? own_inputs instanceof Array ? own_inputs : [own_inputs] : []
|
||||
).concat(
|
||||
[inputs, settings, default_settings]
|
||||
)).length;
|
||||
@ -77,10 +174,10 @@ Sizerboard = function(inputs){
|
||||
nulls = self.nulls(nulls);
|
||||
|
||||
for(let i = 0; i < l; i ++)
|
||||
if(typeof inputs[i] == "object")
|
||||
if(own_inputs[i] && typeof own_inputs[i] == "object")
|
||||
for(let j = 0; j < m; j ++)
|
||||
if(inputs[i][keys[j]] !== undefined && (nulls || inputs[i][keys[j]] !== null))
|
||||
return inputs[i][keys[j]];
|
||||
if(own_inputs[i][keys[j]] !== undefined && (nulls || own_inputs[i][keys[j]] !== null))
|
||||
return own_inputs[i][keys[j]];
|
||||
};
|
||||
return self.default_value(_default, nulls);
|
||||
};
|
||||
@ -93,7 +190,7 @@ Sizerboard = function(inputs){
|
||||
timeout = ajax_timeout,
|
||||
date = Date.now();
|
||||
|
||||
ajax.send("get", url, true);
|
||||
ajax.open("get", url, true);
|
||||
ajax.timeout = timeout;
|
||||
ajax.onreadystatechange = () => {
|
||||
if(ended)
|
||||
@ -112,16 +209,31 @@ Sizerboard = function(inputs){
|
||||
return ajax;
|
||||
};
|
||||
|
||||
this.execute_json = (data, yes, no) => {
|
||||
|
||||
let json;
|
||||
|
||||
try{
|
||||
json = JSON.parse(data);
|
||||
}catch(exception){};
|
||||
|
||||
if(json)
|
||||
typeof yes == "function" && yes(json);
|
||||
else
|
||||
typeof no == "function" && no();
|
||||
|
||||
};
|
||||
|
||||
this.execute_array_dictionaries = (inputs, partial_callback, full_callback, i) => {
|
||||
|
||||
if(typeof inputs != "object" || inputs instanceof Array || (i || (i = 0)) >= inputs.length){
|
||||
if(!inputs || typeof inputs != "object" || !(inputs instanceof Array) || (i || (i = 0)) >= inputs.length){
|
||||
typeof full_callback == "function" && full_callback();
|
||||
return;
|
||||
};
|
||||
|
||||
const end = () => {
|
||||
inputs[i] && typeof partial_callback == "function" && partial_callback(inputs[i]);
|
||||
execute_array_dictionaries(inputs, partial_callback, full_callback, i + 1);
|
||||
inputs[i] && typeof inputs[i] == "object" && typeof partial_callback == "function" && partial_callback(inputs[i]);
|
||||
self.execute_array_dictionaries(inputs, partial_callback, full_callback, i + 1);
|
||||
};
|
||||
|
||||
if(!inputs[i]){
|
||||
@ -130,25 +242,16 @@ Sizerboard = function(inputs){
|
||||
};
|
||||
|
||||
if(typeof inputs[i] == "object"){
|
||||
if(inputs[i] instanceof Array){
|
||||
if(inputs[i] instanceof Array)
|
||||
self.execute_array_dictionaries(inputs[i], partial_callback, end, 0);
|
||||
return;
|
||||
};
|
||||
else
|
||||
end();
|
||||
}else if(typeof inputs[i] == "string"){
|
||||
|
||||
let json;
|
||||
|
||||
if(/^(\{(.|[\r\n])*\}|\[(.|[\r\n])*)\])$/.test(inputs[i].trim())){
|
||||
try{
|
||||
json = JSON.parse(inputs[i]);
|
||||
}catch(exception){};
|
||||
json && self.execute_array_dictionaries(json instanceof Array ? json : [json], partial_callback, end, 0);
|
||||
}else
|
||||
if(/^(\{(.|[\r\n])*\}|\[(.|[\r\n])*\])$/.test(inputs[i].trim()))
|
||||
self.execute_json(inputs[i], json => self.execute_array_dictionaries(json instanceof Array ? json : [json], partial_callback, end, 0), end);
|
||||
else
|
||||
self.load_file(inputs[i], data => {
|
||||
try{
|
||||
json = JSON.parse(data);
|
||||
}catch(exception){};
|
||||
json && self.execute_array_dictionaries(json instanceof Array ? json : [json], partial_callback, end, 0);
|
||||
self.execute_json(data, json => self.execute_array_dictionaries(json instanceof Array ? json : [json], partial_callback, end, 0), end);
|
||||
});
|
||||
}else
|
||||
end();
|
||||
@ -158,12 +261,12 @@ Sizerboard = function(inputs){
|
||||
this.execute_array_items = (items, action, callback, i) => {
|
||||
(typeof items != "object" || !(items instanceof Array)) && (items = [items]);
|
||||
|
||||
if(!items || i >= items.length){
|
||||
if(!items || (i || (i = 0)) >= items.length){
|
||||
typeof callback == "function" && callback();
|
||||
return;
|
||||
};
|
||||
|
||||
const end = () => execute_array_items(items, action, callback, i + 1);
|
||||
const end = () => self.execute_array_items(items, action, callback, i + 1);
|
||||
|
||||
if(typeof action == "function")
|
||||
action(items[i], end);
|
||||
@ -176,8 +279,9 @@ Sizerboard = function(inputs){
|
||||
typeof overwrite != "boolean" && (overwrite = settings_overwrite);
|
||||
self.execute_array_dictionaries(inputs, data => {
|
||||
for(const key in data)
|
||||
if(overwrite || settings[key] === undefined)
|
||||
settings[key] = data[key];
|
||||
(overwrite || settings[key] === undefined) &&
|
||||
!/^Sizerboard.*_(start|end)$/.test(key) &&
|
||||
(settings[key] = data[key]);
|
||||
}, callback);
|
||||
};
|
||||
|
||||
@ -189,6 +293,7 @@ Sizerboard = function(inputs){
|
||||
if(typeof data[language] == "object")
|
||||
for(const key in data[language])
|
||||
(overwrite || sentences[language][key] === undefined) &&
|
||||
!/^Sizerboard.*_(start|end)$/.test(key) &&
|
||||
(sentences[language][key] = data[language][key]);
|
||||
};
|
||||
}, callback);
|
||||
@ -200,7 +305,7 @@ Sizerboard = function(inputs){
|
||||
typeof variables == "object" && variables instanceof Array ? variables : [variables]
|
||||
).filter(variables => typeof variables == "object")).length;
|
||||
|
||||
return string.replace(/\{([^\{\}]+)\}/g, (all, key) => {
|
||||
return ("" + string).replace(/\{([^\{\}]+)\}/g, (all, key) => {
|
||||
for(let i = 0; i < l; i ++)
|
||||
if(variables[i][key] !== undefined)
|
||||
return variables[i][key];
|
||||
@ -212,24 +317,285 @@ Sizerboard = function(inputs){
|
||||
|
||||
const i18n = (keys, _default) => {
|
||||
|
||||
const j = (keys = (typeof keys == "object" && keys instanceof Array ? keys : [keys]).filter(key => typeof key == "string").map(key => key.trim()).filter(key => key));
|
||||
const m = (keys = self.set_keys(keys)).length;
|
||||
|
||||
if(j){
|
||||
if(m){
|
||||
|
||||
const languages = [language, default_language].concat(Object.keys(sentences)),
|
||||
const languages = [language, default_language].concat(Object.keys(sentences)).filter((language, i, array) => array.indexOf(language) == i),
|
||||
l = languages.length;
|
||||
|
||||
for(let i = 0; i < l; i ++)
|
||||
if(languages[i] && typeof languages[i] == "object")
|
||||
for(let j = 0; j < l; j ++)
|
||||
if(languages[i][keys[j]] !== undefined)
|
||||
return languages[i][keys[j]];
|
||||
if(sentences[languages[i]])
|
||||
for(let j = 0; j < m; j ++)
|
||||
if(sentences[languages[i]][keys[j]] !== undefined)
|
||||
return sentences[languages[i]][keys[j]];
|
||||
return keys[0];
|
||||
};
|
||||
return self.default_text(_default);
|
||||
};
|
||||
|
||||
this.i18n = (keys, variables, _default) => self.string_variables(i18n(keys, _default), variables, _default);
|
||||
this.i18n = (keys, variables, _default) => {
|
||||
|
||||
const text = i18n(keys, _default);
|
||||
|
||||
return self.string_variables(typeof text == "object" ? text.join("") : text, variables, _default);
|
||||
};
|
||||
|
||||
this.get_print_type = type => {
|
||||
|
||||
const l = print_types.length;
|
||||
|
||||
type = type.toLowerCase();
|
||||
|
||||
for(let i = 0; i < l; i ++)
|
||||
if(print_types[i].includes(type))
|
||||
return print_types[i][0].toUpperCase();
|
||||
return print_types[0][0];
|
||||
};
|
||||
|
||||
this.get_trace = i => (new Error()).stack.replace(/^Error\s*?[\r\n]+/, "").trim().split(/[\r\n]+/).slice(1 + (i || 0)).map(line => {
|
||||
|
||||
const matches = line.match(re_trace_block);
|
||||
|
||||
return matches ? {
|
||||
file : matches[4] || matches[9],
|
||||
method : matches[3] || matches[8] || "",
|
||||
line : Number(matches[7] || matches[10])
|
||||
} : null;
|
||||
}).filter(line => line);
|
||||
|
||||
this.print = (type, message, variables, i) => {
|
||||
|
||||
const date = new Date(),
|
||||
own = {
|
||||
...((
|
||||
variables ? typeof variables == "object" ? [variables] : variables instanceof Array ? variables : [] : []
|
||||
).reduce((results, set) => typeof set == "object" ? {...results, ...set} : results, {})),
|
||||
...self.get_trace(i || 1)[0],
|
||||
raw_type : type,
|
||||
type : self.get_print_type(type)
|
||||
};
|
||||
|
||||
["year", "month", "day", "hours", "minutes", "seconds"].forEach(key => {
|
||||
|
||||
const k = key != "minutes" ? key[0] : "i";
|
||||
|
||||
own[k + k] = ("00" + (own[k] = (own[key] = date["get" + (
|
||||
key == "year" ? "FullYear" :
|
||||
key == "day" ? "Date" :
|
||||
key[0].toUpperCase() + key.substring(1)
|
||||
)]()) % 100)).slice(-2);
|
||||
|
||||
});
|
||||
own.yyyy = own.year;
|
||||
|
||||
const final_message = self.string_variables(print_format, {
|
||||
...own,
|
||||
message : self.i18n(message, own)
|
||||
});
|
||||
|
||||
switch(own.type){
|
||||
case "INFO":
|
||||
console.log("%c" + final_message, print_styles.info[gui_mode]);
|
||||
break;
|
||||
case " OK ":
|
||||
console.log("%c" + final_message, print_styles.ok[gui_mode]);
|
||||
break;
|
||||
case "ERRO":
|
||||
case "EXCE":
|
||||
console.error(final_message);
|
||||
break;
|
||||
case "WARN":
|
||||
console.warn(final_message);
|
||||
break;
|
||||
case "NOTE":
|
||||
console.log("%c" + final_message, print_styles.note[gui_mode]);
|
||||
break;
|
||||
case "UNKN":
|
||||
default:
|
||||
console.log("%c" + final_message, print_styles.unkn[gui_mode]);
|
||||
break;
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
const threads_method = () => threads.forEach(thread => {
|
||||
if(thread)
|
||||
try{
|
||||
thread();
|
||||
}catch(exception){};
|
||||
});
|
||||
|
||||
this.thread_add = callback => {
|
||||
|
||||
let error = (
|
||||
callback === undefined ? 1 << 0 :
|
||||
callback === null ? 1 << 1 :
|
||||
typeof callback != "function" ? 1 << 2 :
|
||||
0) << 1,
|
||||
i = null;
|
||||
|
||||
if(!error){
|
||||
|
||||
const l = threads.length;
|
||||
|
||||
for(i = 0; i < l; i ++)
|
||||
if(!threads[i])
|
||||
break;
|
||||
|
||||
threads[i] = callback;
|
||||
|
||||
};
|
||||
|
||||
return [i, error];
|
||||
};
|
||||
|
||||
this.thread_remove = i => {
|
||||
|
||||
let error = (
|
||||
i === undefined ? 1 << 0 :
|
||||
i === null ? 1 << 1 :
|
||||
isNaN(i) ? 1 << 2 :
|
||||
i != i >> 0 ? 1 << 3 :
|
||||
i < 0 ? 1 << 4 :
|
||||
i >= threads.length ? 1 << 5 :
|
||||
0) << 1;
|
||||
|
||||
!i && (threads[i] = null);
|
||||
|
||||
return error;
|
||||
};
|
||||
|
||||
this.preload = (selector, callback) => {
|
||||
|
||||
let callback_is_function = typeof callback == "function",
|
||||
error = (
|
||||
((
|
||||
selector === undefined ? 1 << 0 :
|
||||
selector === null ? 1 << 1 :
|
||||
0) << 0) |
|
||||
((
|
||||
callback === undefined ? 1 << 0 :
|
||||
callback === null ? 1 << 1 :
|
||||
!callback_is_function ? 1 << 2 :
|
||||
0) << 10) |
|
||||
0) << 1,
|
||||
item = null,
|
||||
asynchronous = false;
|
||||
const end = () => callback_is_function && callback(item, error, asynchronous);
|
||||
|
||||
if(!error){
|
||||
switch(typeof selector){
|
||||
case "string":
|
||||
if(!(error |= (
|
||||
!selector ? 1 << 5 :
|
||||
!(selector = selector.trim()) ? 1 << 6 :
|
||||
0) << 5)){
|
||||
|
||||
try{
|
||||
(item = item_self.querySelector(selector)) && end();
|
||||
}catch(exception){
|
||||
error |= 1 << 7;
|
||||
end();
|
||||
};
|
||||
|
||||
if(!item && !error){
|
||||
|
||||
const date = Date.now(),
|
||||
[thread, suberror] = self.thread_add(() => {
|
||||
if(item = item_self.querySelector(selector)){
|
||||
self.thread_remove(thread);
|
||||
end();
|
||||
}else if(Date.now() - date > preload_timeout){
|
||||
self.thread_remove(thread);
|
||||
error |= 1 << 8;
|
||||
end();
|
||||
};
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
};
|
||||
break;
|
||||
case "object":
|
||||
if(selector.tagName || selector.nodeName)
|
||||
item = selector;
|
||||
else
|
||||
error |= 1 << 4;
|
||||
end();
|
||||
break;
|
||||
default:
|
||||
error |= 1 << 3;
|
||||
end();
|
||||
break;
|
||||
};
|
||||
};
|
||||
|
||||
return error;
|
||||
};
|
||||
|
||||
this.hash = () => {
|
||||
|
||||
let hash;
|
||||
const l = hashes_alphabet.length;
|
||||
|
||||
do{
|
||||
hash = "";
|
||||
while((hash += hashes_alphabet[Math.random() * l >> 0]).length < hashes_length);
|
||||
}while(
|
||||
hashes.includes(hash) ||
|
||||
/^[0-9]/.test(hash) ||
|
||||
document.querySelector("#" + hash + ",." + hash + ",[name=" + hash + "]")
|
||||
);
|
||||
hashes.push(hash);
|
||||
|
||||
return hash;
|
||||
};
|
||||
|
||||
this.build_preloader = callback => {
|
||||
|
||||
const hash = self.hash();
|
||||
|
||||
self.preload("[data-preloader=" + hash + "]", (preloader, error, asynchronous) => {
|
||||
typeof callback == "function" && callback(error ? null : preloader.parentNode, error, asynchronous);
|
||||
preloader.remove();
|
||||
});
|
||||
|
||||
return `<div data-preloader="` + hash + `"></div>`;
|
||||
};
|
||||
|
||||
this.set_self = (item, hash) => {
|
||||
|
||||
let error = ((
|
||||
((item_self.tagName || item_self.nodeName) != "#document" ? 1 << 0 : 0) |
|
||||
(hash_self ? 1 << 1 : 0) |
|
||||
0) || (
|
||||
((
|
||||
item === undefined ? 1 << 0 :
|
||||
item === null ? 1 << 1 :
|
||||
typeof item != "object" ? 1 << 2 :
|
||||
!item.tagName && !item.nodeName ? 1 << 3 :
|
||||
(item.tagName || item.nodeName) == "#document" ? 1 << 4 :
|
||||
0) << 2) |
|
||||
((
|
||||
hash === undefined ? 1 << 0 :
|
||||
hash === null ? 1 << 1 :
|
||||
typeof hash != "string" ? 1 << 2 :
|
||||
!hash ? 1 << 3 :
|
||||
!hash.trim() ? 1 << 4 :
|
||||
hash != hash.trim() ? 1 << 5 :
|
||||
hash.split("").some(character => !hashes_alphabet.includes(character)) ? 1 << 6 :
|
||||
hash.length < hashes_length ? 1 << 7 :
|
||||
0) << 7) |
|
||||
0)) << 1;
|
||||
|
||||
if(!error){
|
||||
item_self = self.item_self = item;
|
||||
hash_self = self.hash_self = hash;
|
||||
};
|
||||
|
||||
return error;
|
||||
};
|
||||
|
||||
construct();
|
||||
|
||||
|
151
Public/html/Sizerboard.views.html
Normal file
151
Public/html/Sizerboard.views.html
Normal file
@ -0,0 +1,151 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title data-i18n="sizerboard_views">Sizerboard - Views</title>
|
||||
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
|
||||
<meta charset="utf-8" />
|
||||
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<!-- [[base_view]] -->
|
||||
<div class="sizerboard {hash}{classes}" id="{hash}" data-hash="{hash}" data-application="{application}" data-url="{url}" data-git="{git}" data-cells="{cells}">
|
||||
<header>
|
||||
<h1>
|
||||
<a href="{url}" data-i18n="sizerboard" title="{{sizerboard}}" data-i18n-without="true">
|
||||
<span class="logo">
|
||||
<img src="{logo}" data-i18n="sizerboard" alt="{{sizerboard}}" data-i18n-without="true" />
|
||||
<span style="background-image:url('{logo}');"></span>
|
||||
</span>
|
||||
<span data-i18n="sizerboard">{{sizerboard}}</span>
|
||||
</a>
|
||||
</h1>
|
||||
<nav class="main-menu">
|
||||
<ul>{main_menu_items}</ul>
|
||||
</nav>
|
||||
</header>
|
||||
<main>
|
||||
<form class="projects-menu" method="post" action="#" onsubmit="return false;">
|
||||
<fieldset>
|
||||
<legend data-i18n="projects_menu">{{projects_menu}}</legend>
|
||||
<p data-i18n="projects_menu_text">{{projects_menu_text}}</p>
|
||||
<ul class="group search-box" data-i18n="search" title="{{search}}" data-i18n-without="true">
|
||||
<li><label for="projects_menu_search">
|
||||
<span data-icon="search"></span>
|
||||
<span data-i18n="search">{{search}}</span>
|
||||
</label></li>
|
||||
<li class="input"><input type="text" id="projects_menu_search" name="search" data-i18n="{search}" placeholder="{{search}}..." data-i18n-without="true" data-i18n-dotted="true" /></li>
|
||||
<li class="input"><button type="button" data-i18n="search" title="{{search}}" data-i18n-without="true" onclick="object_name.projects.search(this, event);">
|
||||
<span data-icon="search"></span>
|
||||
<span data-i18n="search">{{search}}</span>
|
||||
</button></li>
|
||||
<li class="input"><button type="button" data-i18n="add" title="{{add}}" data-i18n-without="true" onclick="object_name.projects.add(this, event);">
|
||||
<span data-icon="add"></span>
|
||||
<span data-i18n="add">{{add}}</span>
|
||||
</button></li>
|
||||
</ul>
|
||||
<nav>
|
||||
<ul>{projects}</ul>
|
||||
</nav>
|
||||
</fieldset>
|
||||
</form>
|
||||
<form class="draw-box" method="post" action="#" onsubmit="return false;" data-mode="canvas" data-selected="null">
|
||||
<fieldset>
|
||||
<legend data-i18n="draw_box">{{draw_box}}</legend>
|
||||
<p data-i18n="draw_box_text">{{draw_box_text}}</p>
|
||||
<ul class="group">
|
||||
<li class="input"><button type="button" data-i18n="html" title="{{html}}" data-i18n-without="true" onclick="object_name.draw_box.show(this, event, 'html');">
|
||||
<span data-icon="html"></span>
|
||||
<span data-i18n="html">{{html}}</span>
|
||||
</button></li>
|
||||
<li class="input"><button type="button" data-i18n="canvas" title="{{canvas}}" data-i18n-without="true" onclick="object_name.draw_box.show(this, event, 'canvas');" disabled>
|
||||
<span data-icon="canvas"></span>
|
||||
<span data-i18n="canvas">{{canvas}}</span>
|
||||
</button></li>
|
||||
<li class="input"><button type="button" data-i18n="svg" title="{{svg}}" data-i18n-without="true" onclick="object_name.draw_box.show(this, event, 'svg');">
|
||||
<span data-icon="svg"></span>
|
||||
<span data-i18n="svg">{{svg}}</span>
|
||||
</button></li>
|
||||
<li class="input"><button type="button" data-i18n="text" title="{{text}}" data-i18n-without="true" onclick="object_name.draw_box.show(this, event, 'text');">
|
||||
<span data-icon="text"></span>
|
||||
<span data-i18n="text">{{text}}</span>
|
||||
</button></li>
|
||||
</ul>
|
||||
<div class="fields">
|
||||
<section class="html" data-visible="false"></section>
|
||||
<section class="canvas" data-visible="true">
|
||||
<canvas></canvas>
|
||||
</section>
|
||||
<section class="svg" data-visible="false">
|
||||
<svg></svg>
|
||||
</section>
|
||||
<section class="text" data-visible="false">
|
||||
<textarea name="code" data-i18n="code" data-i18n-dotted="true" data-i18n-without="true" placeholder="{{code}}..."></textarea>
|
||||
</section>
|
||||
</div>
|
||||
</fieldset>
|
||||
<div class="curtain"></div>
|
||||
</form>
|
||||
<fieldset class="actions-box">
|
||||
<legend data-i18n="actions">{{actions}}</legend>
|
||||
<p data-i18n="actions_text">{{actions_text}}</p>
|
||||
<nav class="actions">
|
||||
<ul>
|
||||
<li data-i18n="upload" data-i18n-without="true" title="{{upload}}">
|
||||
<button type="button" onclick="object_name.projects.upload(this, event);">
|
||||
<span data-icon="upload"></span>
|
||||
<span data-i18n="upload">{{upload}}</span>
|
||||
</button>
|
||||
</li>
|
||||
<li data-i18n="save" data-i18n-without="true" title="{{save}}">
|
||||
<button type="button" onclick="object_name.projects.save(this, event);" disabled>
|
||||
<span data-icon="save"></span>
|
||||
<span data-i18n="save">{{save}}</span>
|
||||
</button>
|
||||
</li>
|
||||
<li data-i18n="download" data-i18n-without="true" title="{{download}}">
|
||||
<button type="button" onclick="object_name.projects.download(this, event);" disabled>
|
||||
<span data-icon="download"></span>
|
||||
<span data-i18n="download">{{download}}</span>
|
||||
</button>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</fieldset>
|
||||
</main>
|
||||
<footer>
|
||||
<span class="licences">
|
||||
<a href="https://www.gnu.org/licenses/gpl-3.0.txt" target="_blank" data-i18n="license_gpl" title="GPLv3" data-i18n-without="true">
|
||||
<span data-i18n="license_text">© 2024-2025 CopyLeft.</span>
|
||||
<img src="https://www.gnu.org/graphics/gplv3-127x51.png" data-i18n="license_gpl" alt="GPLv3" data-i18n-without="true" />
|
||||
</a>
|
||||
<a class="license-image" href="http://creativecommons.org/licenses/by-sa/4.0/" target="_blank" data-i18n="license_creative_commons" data-i18n-without="true" title="Creative Commons">
|
||||
<img src="https://i.creativecommons.org/l/by-sa/4.0/88x31.png" alt="cc-sa" />
|
||||
</a>
|
||||
</span>
|
||||
</footer>
|
||||
{preloader}
|
||||
</div>
|
||||
<!-- [[base_view]] -->
|
||||
|
||||
<nav>
|
||||
<ul>
|
||||
|
||||
<!-- [[main_menu_item]] -->
|
||||
<li data-i18n="{i18n}" title="{{i18n}}" data-i18n-without="true">
|
||||
<a href="{url}" target="{target}">
|
||||
<span data-icon="{icon}"></span>
|
||||
<span data-i18n="{i18n}">{{i18n}}</span>
|
||||
</a>
|
||||
</li>
|
||||
<!-- [[main_menu_item]] -->
|
||||
|
||||
<!-- [[project_option]] -->
|
||||
<li data-name="{name}" data-i="{i}" title="{name}" onclick="object_name.projects.get_in_gui(this, event);" data-selected="false" rol="button">{name}</li>
|
||||
<!-- [[project_option]] -->
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
</body>
|
||||
</html>
|
@ -1,12 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title data-i18n="sizerboard">Sizerboard</title>
|
||||
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
|
||||
<meta charset="utf-8" />
|
||||
|
||||
<script data-type="text/javascript" data-language="ECMAScript 2015" src="/ecma/Sizerboard.ecma.js" data-crossorigin="anonymous" charset="utf-8"></script>
|
||||
|
||||
</head>
|
||||
<body></body>
|
||||
</html>
|
58
Public/index.php
Normal file
58
Public/index.php
Normal file
@ -0,0 +1,58 @@
|
||||
<?php
|
||||
|
||||
$default_language_code = "es";
|
||||
$languages_dictionary = json_decode(file_get_contents(__DIR__ . "/../JSON/Sizerboard.languages_iso.json"), true);
|
||||
$language_code = $default_language_code;
|
||||
$languages = [$languages_dictionary[$language_code]];
|
||||
|
||||
preg_match('/^\/([a-z]{2})(\/([a-z0-9\-]+))?(\/([a-z0-9\-]+))?\/?$/i', $_SERVER["REQUEST_URI"], $matches, PREG_OFFSET_CAPTURE) &&
|
||||
count($matches) > 1 &&
|
||||
($language_code = $matches[1][0]);
|
||||
|
||||
if($language_code != $default_language_code && isset($languages_dictionary[$language_code]))
|
||||
$languages[] = $languages_dictionary[$language_code];
|
||||
else
|
||||
$language_code = $default_language_code;
|
||||
|
||||
?><!DOCTYPE html>
|
||||
<html lang="<?=$language_code;?>">
|
||||
<head>
|
||||
<title data-i18n="sizerboard">Sizerboard</title>
|
||||
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
|
||||
<meta charset="utf-8" />
|
||||
|
||||
<style data-type="text/css" data-language="CSS2" data-rel="stylesheet" charset="utf-8">
|
||||
|
||||
html,body{
|
||||
height : 100%;
|
||||
margin : 0em;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
<link type="text/css" data-language="CSS3" rel="stylesheet" href="https://cdn.k3y.pw/css/fonts/local/Roboto.css" data-crossorigin="anonymous" charset="utf-8" />
|
||||
<link type="text/css" data-language="CSS3" rel="stylesheet" href="https://cdn.k3y.pw/css/fonts/local/RobotoMono.css" data-crossorigin="anonymous" charset="utf-8" />
|
||||
<link type="text/css" data-language="CSS3" rel="stylesheet" href="https://cdn.k3y.pw/css/fonts/local/FontAwesome5Free.css" data-crossorigin="anonymous" charset="utf-8" />
|
||||
|
||||
<link type="text/css" data-language="SASS/CSS3" rel="stylesheet" href="/scss/Sizerboard.css" data-scss="/scss/Sizerboard.scss" data-css-map="/scss/Sizerboard.css.map" data-crossorigin="anonymous" charset="utf-8" />
|
||||
<link type="text/css" data-language="CSS3" rel="stylesheet" href="/css/Sizerboard.icons.css" data-crossorigin="anonymous" charset="utf-8" />
|
||||
|
||||
<script data-type="text/javascript" data-language="ECMAScript 2015" src="/ecma/Sizerboard.ecma.js" data-crossorigin="anonymous" charset="utf-8"></script>
|
||||
<script data-type="text/javascript" data-language="ECMAScript 2015" src="/ecma/Sizerboard.Views.ecma.js" data-crossorigin="anonymous" charset="utf-8"></script>
|
||||
<script data-type="text/javascript" data-language="ECMAScript 2015" src="/ecma/Sizerboard.Base.ecma.js" data-crossorigin="anonymous" charset="utf-8"></script>
|
||||
<script data-type="text/javascript" data-language="ECMAScript 2015" src="/ecma/Sizerboard.Projects.ecma.js" data-crossorigin="anonymous" charset="utf-8"></script>
|
||||
<script data-type="text/javascript" data-language="ECMAScript 2015" src="/ecma/Sizerboard.DrawBox.ecma.js" data-crossorigin="anonymous" charset="utf-8"></script>
|
||||
|
||||
<script data-type="text/javascript" data-language="ECMAScript 2015" charset="utf-8">
|
||||
|
||||
sizerboard = new Sizerboard({
|
||||
default_language : "<?=$languages_dictionary[$language_code];?>",
|
||||
language : "<?=$languages_dictionary[$language_code];?>",
|
||||
default_i18n_files : [<?php foreach($languages as $i => $language){?><?=$i ? ", " : "";?>"/json/i18n/Sizerboard.i18n.<?=$language;?>.json"<?php }?>]
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
</head>
|
||||
<body></body>
|
||||
</html>
|
33
Public/json/Sizerboard.settings.json
Normal file
33
Public/json/Sizerboard.settings.json
Normal file
@ -0,0 +1,33 @@
|
||||
{
|
||||
"nulls" : false,
|
||||
"default_value" : null,
|
||||
"default_text" : "",
|
||||
"autostart" : true,
|
||||
"default_language" : "english",
|
||||
"timeout" : 2000,
|
||||
"print_format" : "[{type}] {yyyy}{mm}{dd} {hh}{ii}{ss} [{line}]{file}({method}): {message}",
|
||||
"gui_mode" : "light",
|
||||
"frames_per_second" : 24,
|
||||
"position" : "body",
|
||||
"views_overwrite" : false,
|
||||
"default_views_files" : "/html/Sizerboard.views.html",
|
||||
"logo" : "/images/Sizerboard.webp",
|
||||
"application_name" : "Sizerboard",
|
||||
"application_url" : "https://sizerboard.k3y.pw/",
|
||||
"application_git" : "https://git.k3y.pw/KyMAN/Sizerboard",
|
||||
"cells" : 40,
|
||||
"main_menu_items" : [
|
||||
{"i18n" : "home", "icon" : "home", "url" : "/", "target" : "_self"},
|
||||
{"i18n" : "documentation", "icon" : "documentation", "url" : "/doc", "target" : "_blank"},
|
||||
{"i18n" : "git", "icon" : "git", "url" : "https://git.k3y.pw/KyMAN/Sizerboard", "target" : "_blank"}
|
||||
],
|
||||
"default_i18n_files" : [
|
||||
"/json/i18n/Sizerboard.i18n.english.json",
|
||||
"/json/i18n/Sizerboard.i18n.espanol.json",
|
||||
"/json/i18n/Sizerboard.i18n.nihongo.json",
|
||||
"/json/i18n/Sizerboard.i18n.russkiy.json",
|
||||
"/json/i18n/Sizerboard.i18n.alarabiyah.json"
|
||||
],
|
||||
"hashes_alphabet" : "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz",
|
||||
"hashes_length" : 11
|
||||
}
|
34
Public/json/i18n/Sizerboard.i18n.alarabiyah.json
Normal file
34
Public/json/i18n/Sizerboard.i18n.alarabiyah.json
Normal file
@ -0,0 +1,34 @@
|
||||
{
|
||||
"alarabiyah" : {
|
||||
|
||||
"Sizerboard_common_start" : null,
|
||||
"Sizerboard_common_end" : null,
|
||||
|
||||
"Sizerboard_start" : null,
|
||||
"Sizerboard_end" : null,
|
||||
|
||||
"Sizerboard_base_start" : null,
|
||||
"sizerboard" : "Sizerboard",
|
||||
"home" : "المدير",
|
||||
"documentation" : "الوثائق",
|
||||
"git" : "Git",
|
||||
"projects_menu" : "قائمة بالمشروع",
|
||||
"projects_menu_text" : "هذه قائمة المشروع ثم يمكنك التصفية باسم المشاريع التي تملكها، وإذا لم يكن هناك اسم، يمكنك خلقه.",
|
||||
"search" : "البحث",
|
||||
"add" : "مضافا إليها",
|
||||
"draw_box" : "الإطار",
|
||||
"draw_box_text" : "وسيتضمن هذا الإطار رسومات وأدوات وصناديق نصية للتحرير.",
|
||||
"html" : "HTML",
|
||||
"canvas" : "Canvas",
|
||||
"svg" : "SVG",
|
||||
"text" : "النص",
|
||||
"code" : "المدونة",
|
||||
"actions" : "الإجراءات",
|
||||
"actions_text" : "ويتضمن هذا الإطار الإجراءات العامة ضد مشاريعكم.",
|
||||
"upload" : "فوق",
|
||||
"save" : "أنقذ",
|
||||
"download" : "تحميل",
|
||||
"Sizerboard_base_end" : null
|
||||
|
||||
}
|
||||
}
|
34
Public/json/i18n/Sizerboard.i18n.azerbaycanca.json
Normal file
34
Public/json/i18n/Sizerboard.i18n.azerbaycanca.json
Normal file
@ -0,0 +1,34 @@
|
||||
{
|
||||
"azerbaycanca" : {
|
||||
|
||||
"Sizerboard_common_start" : null,
|
||||
"Sizerboard_common_end" : null,
|
||||
|
||||
"Sizerboard_start" : null,
|
||||
"Sizerboard_end" : null,
|
||||
|
||||
"Sizerboard_base_start" : null,
|
||||
"sizerboard" : "Sizerboard",
|
||||
"home" : " Principal",
|
||||
"documentation" : "Tarix",
|
||||
"git" : "Qeydiyyat",
|
||||
"projects_menu" : "Elanlar",
|
||||
"projects_menu_text" : "Bu layihə meneceridir. Sonra siz öz layihələrin adı ilə filter edə bilərsiniz, və adı varsa, onu yaraya bilərsiniz.",
|
||||
"search" : "Axtarış",
|
||||
"add" : "Axtarış",
|
||||
"draw_box" : "Tarix",
|
||||
"draw_box_text" : "Bu səhifə konfiqurasiyalar, alətlər və məhsul qutusu daxil edəcək.",
|
||||
"html" : " HTML",
|
||||
"canvas" : "Qeydiyyat",
|
||||
"svg" : "QALEREYA",
|
||||
"text" : "Tarix",
|
||||
"code" : "Qeydiyyat",
|
||||
"actions" : "Proqramlar",
|
||||
"actions_text" : "Bu səhifə sizin layihələrinə qarşı ümumi həyata malikdir.",
|
||||
"upload" : "Qeydiyyat",
|
||||
"save" : "Daxil ol",
|
||||
"download" : "Pulsuz",
|
||||
"Sizerboard_base_end" : null
|
||||
|
||||
}
|
||||
}
|
34
Public/json/i18n/Sizerboard.i18n.catala.json
Normal file
34
Public/json/i18n/Sizerboard.i18n.catala.json
Normal file
@ -0,0 +1,34 @@
|
||||
{
|
||||
"catala" : {
|
||||
|
||||
"Sizerboard_common_start" : null,
|
||||
"Sizerboard_common_end" : null,
|
||||
|
||||
"Sizerboard_start" : null,
|
||||
"Sizerboard_end" : null,
|
||||
|
||||
"Sizerboard_base_start" : null,
|
||||
"sizerboard" : "Sizerboard",
|
||||
"home" : "Principal",
|
||||
"documentation" : "Documentació",
|
||||
"git" : "Git",
|
||||
"projects_menu" : "Menú del projecte",
|
||||
"projects_menu_text" : "Aquest és el menú del projecte. Si no hi ha cap nom, podeu crear-lo.",
|
||||
"search" : "Cerca",
|
||||
"add" : "Afegir",
|
||||
"draw_box" : "Box dibuixat",
|
||||
"draw_box_text" : "Aquest marc conté dibuixos representatius, eines i caixa de text per a l'edició.",
|
||||
"html" : "HTML",
|
||||
"canvas" : "Llenç",
|
||||
"svg" : "SVG",
|
||||
"text" : "Text",
|
||||
"code" : "Codi",
|
||||
"actions" : "Accions",
|
||||
"actions_text" : "Aquest marc conté les accions generals contra els vostres projectes.",
|
||||
"upload" : "Amunt",
|
||||
"save" : "Save",
|
||||
"download" : "Descàrrega",
|
||||
"Sizerboard_base_end" : null
|
||||
|
||||
}
|
||||
}
|
34
Public/json/i18n/Sizerboard.i18n.cestina.json
Normal file
34
Public/json/i18n/Sizerboard.i18n.cestina.json
Normal file
@ -0,0 +1,34 @@
|
||||
{
|
||||
"cestina" : {
|
||||
|
||||
"Sizerboard_common_start" : null,
|
||||
"Sizerboard_common_end" : null,
|
||||
|
||||
"Sizerboard_start" : null,
|
||||
"Sizerboard_end" : null,
|
||||
|
||||
"Sizerboard_base_start" : null,
|
||||
"sizerboard" : "Sizerboard",
|
||||
"home" : "Čeština",
|
||||
"documentation" : "Odkazy",
|
||||
"git" : "Čeština",
|
||||
"projects_menu" : "Nabídka projektu",
|
||||
"projects_menu_text" : "Jedná se o nabídku projektu. Poté můžete filtrovat podle názvu projektů, které vlastníte, a pokud není jméno, můžete jej vytvořit.",
|
||||
"search" : "Hledat",
|
||||
"add" : "Čeština",
|
||||
"draw_box" : "Box nakreslený",
|
||||
"draw_box_text" : "Tento rámec bude obsahovat reprezentativní výkresy, nástroje a textové pole pro úpravy.",
|
||||
"html" : "ČEŠTINA",
|
||||
"canvas" : "Čeština",
|
||||
"svg" : "ČEŠTINA",
|
||||
"text" : "Čeština",
|
||||
"code" : "Kód",
|
||||
"actions" : "Akce",
|
||||
"actions_text" : "Tento rámec obsahuje obecné akce proti svým projektům.",
|
||||
"upload" : "Nahoru",
|
||||
"save" : "Čeština",
|
||||
"download" : "Čeština",
|
||||
"Sizerboard_base_end" : null
|
||||
|
||||
}
|
||||
}
|
34
Public/json/i18n/Sizerboard.i18n.dansk.json
Normal file
34
Public/json/i18n/Sizerboard.i18n.dansk.json
Normal file
@ -0,0 +1,34 @@
|
||||
{
|
||||
"dansk" : {
|
||||
|
||||
"Sizerboard_common_start" : null,
|
||||
"Sizerboard_common_end" : null,
|
||||
|
||||
"Sizerboard_start" : null,
|
||||
"Sizerboard_end" : null,
|
||||
|
||||
"Sizerboard_base_start" : null,
|
||||
"sizerboard" : "I NÆRHEDEN AF Sizerboard",
|
||||
"home" : "Fyrste",
|
||||
"documentation" : "Dokumentation",
|
||||
"git" : "Git",
|
||||
"projects_menu" : "Projektmenu",
|
||||
"projects_menu_text" : "Dette er projektmenuen. Så kan du filtrere ved at nævne de projekter, du ejer, og hvis der ikke er noget navn, kan du oprette det.",
|
||||
"search" : "Søg Søg Søg",
|
||||
"add" : "Tilføj Tilføj Tilføj Tilføj",
|
||||
"draw_box" : "Box tegnet",
|
||||
"draw_box_text" : "Denne ramme indeholder repræsentative tegninger, værktøjer og tekstboks til redigering.",
|
||||
"html" : "HTML",
|
||||
"canvas" : "Fotolærred",
|
||||
"svg" : "SVG",
|
||||
"text" : "Tekst tekst",
|
||||
"code" : "Kodekode",
|
||||
"actions" : "Handlinger",
|
||||
"actions_text" : "Denne ramme indeholder de generelle handlinger mod dine projekter.",
|
||||
"upload" : "Up Up Up Up",
|
||||
"save" : "Gem Gem Gem Gem Gem Gem",
|
||||
"download" : "Download Download Download Download",
|
||||
"Sizerboard_base_end" : null
|
||||
|
||||
}
|
||||
}
|
34
Public/json/i18n/Sizerboard.i18n.deutsch.json
Normal file
34
Public/json/i18n/Sizerboard.i18n.deutsch.json
Normal file
@ -0,0 +1,34 @@
|
||||
{
|
||||
"deutsch" : {
|
||||
|
||||
"Sizerboard_common_start" : null,
|
||||
"Sizerboard_common_end" : null,
|
||||
|
||||
"Sizerboard_start" : null,
|
||||
"Sizerboard_end" : null,
|
||||
|
||||
"Sizerboard_base_start" : null,
|
||||
"sizerboard" : "Sizerboard",
|
||||
"home" : "Auftraggeber",
|
||||
"documentation" : "Dokumentation",
|
||||
"git" : "Gier",
|
||||
"projects_menu" : "Projektmenü",
|
||||
"projects_menu_text" : "Das ist das Projektmenü. Dann können Sie mit Namen die Projekte filtern, die Sie besitzen, und wenn es keinen Namen gibt, können Sie es erstellen.",
|
||||
"search" : "Suche",
|
||||
"add" : "Hinzufügen",
|
||||
"draw_box" : "Feld gezogen",
|
||||
"draw_box_text" : "Dieser Rahmen enthält repräsentative Zeichnungen, Werkzeuge und Textbox zur Bearbeitung.",
|
||||
"html" : "HTML",
|
||||
"canvas" : "~",
|
||||
"svg" : "SVG",
|
||||
"text" : "Text",
|
||||
"code" : "Code",
|
||||
"actions" : "Maßnahmen",
|
||||
"actions_text" : "Dieser Rahmen enthält die allgemeinen Aktionen gegen Ihre Projekte.",
|
||||
"upload" : "Nach oben",
|
||||
"save" : "Speichern",
|
||||
"download" : "Downloads",
|
||||
"Sizerboard_base_end" : null
|
||||
|
||||
}
|
||||
}
|
52
Public/json/i18n/Sizerboard.i18n.ellinika.json
Normal file
52
Public/json/i18n/Sizerboard.i18n.ellinika.json
Normal file
@ -0,0 +1,52 @@
|
||||
{
|
||||
"ellinika" : {
|
||||
|
||||
"Sizerboard_common_start" : null,
|
||||
"Sizerboard_common_end" : null,
|
||||
|
||||
"Sizerboard_start" : null,
|
||||
"Sizerboard_end" : null,
|
||||
|
||||
"Sizerboard_base_start" : null,
|
||||
"sizerboard" : "Sizerboard",
|
||||
"home" : "Πριγκιπ Πριγκιερ",
|
||||
"documentation" : "Τεκμηρίωση",
|
||||
"git" : "Git Git",
|
||||
"projects_menu" : "Πρόγραμμα μενού μενού",
|
||||
"projects_menu_text" : [
|
||||
"Αυτό είναι το μενού του έργου. Στη συνέχεια μπορείτε να ",
|
||||
"φιλτράρετε με το όνομα τα έργα που διαθέτετε και αν δεν υπάρχει ",
|
||||
"όνομα, μπορείτε να το δημιουργήσετε."
|
||||
],
|
||||
"search" : "Αναζήτηση Αναζήτηση Αναζήτηση",
|
||||
"add" : "Προσθήκη Προσθήκη",
|
||||
"draw_box" : "Box",
|
||||
"draw_box_text" : "Αυτό το πλαίσιο θα περιέχει αντιπροσωπευτικά σχέδια, εργαλεία και πλαίσιο κειμένου για επεξεργασία.",
|
||||
"html" : "HTML HTML HTML HTML",
|
||||
"canvas" : "Canvas",
|
||||
"svg" : "MODE",
|
||||
"text" : "Κείμενο κείμενο κείμενο κείμενο κείμενο κείμενο κείμενο κείμενο κείμενο κείμενο",
|
||||
"code" : "Κώδικα κώδικα",
|
||||
"actions" : "Δράση",
|
||||
"actions_text" : "Το πλαίσιο αυτό περιέχει τις γενικές δράσεις κατά των έργων σας.",
|
||||
"upload" : [
|
||||
"Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up ",
|
||||
"Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up ",
|
||||
"Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up ",
|
||||
"Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up ",
|
||||
"Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up ",
|
||||
"Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up ",
|
||||
"Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up ",
|
||||
"Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up ",
|
||||
"Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up ",
|
||||
"Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up ",
|
||||
"Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up ",
|
||||
"Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up ",
|
||||
"Up Up Up Up"
|
||||
],
|
||||
"save" : "Εξοικονομήστε",
|
||||
"download" : "Download Download Download",
|
||||
"Sizerboard_base_end" : null
|
||||
|
||||
}
|
||||
}
|
34
Public/json/i18n/Sizerboard.i18n.english.json
Normal file
34
Public/json/i18n/Sizerboard.i18n.english.json
Normal file
@ -0,0 +1,34 @@
|
||||
{
|
||||
"english" : {
|
||||
|
||||
"Sizerboard_common_start" : null,
|
||||
"Sizerboard_common_end" : null,
|
||||
|
||||
"Sizerboard_start" : null,
|
||||
"Sizerboard_end" : null,
|
||||
|
||||
"Sizerboard_base_start" : null,
|
||||
"sizerboard" : "Sizerboard",
|
||||
"home" : "Principal",
|
||||
"documentation" : "Documentation",
|
||||
"git" : "Git",
|
||||
"projects_menu" : "Project menu",
|
||||
"projects_menu_text" : "This is the project menu. Then you can filter by name the projects you own, and if there is no name, you can create it.",
|
||||
"search" : "Search",
|
||||
"add" : "Add",
|
||||
"draw_box" : "Box drawn",
|
||||
"draw_box_text" : "This framework will contain representative drawings, tools and text box for editing.",
|
||||
"html" : "HTML",
|
||||
"canvas" : "Canvas",
|
||||
"svg" : "SVG",
|
||||
"text" : "Text",
|
||||
"code" : "Code",
|
||||
"actions" : "Actions",
|
||||
"actions_text" : "This framework contains the general actions against your projects.",
|
||||
"upload" : "Up",
|
||||
"save" : "Save",
|
||||
"download" : "Download",
|
||||
"Sizerboard_base_end" : null
|
||||
|
||||
}
|
||||
}
|
37
Public/json/i18n/Sizerboard.i18n.espanol.json
Normal file
37
Public/json/i18n/Sizerboard.i18n.espanol.json
Normal file
@ -0,0 +1,37 @@
|
||||
{
|
||||
"espanol" : {
|
||||
|
||||
"Sizerboard_common_start" : null,
|
||||
"Sizerboard_common_end" : null,
|
||||
|
||||
"Sizerboard_start" : null,
|
||||
"Sizerboard_end" : null,
|
||||
|
||||
"Sizerboard_base_start" : null,
|
||||
"sizerboard" : "Sizerboard",
|
||||
"home" : "Principal",
|
||||
"documentation" : "Documentación",
|
||||
"git" : "Git",
|
||||
"projects_menu" : "Menú de proyectos",
|
||||
"projects_menu_text" : [
|
||||
"Este es el menú de proyectos. A continuación podrás filtrar por nombre los proyectos que ",
|
||||
"posees, y en caso de no existir el nombre, lo podrás crear."
|
||||
],
|
||||
"search" : "Buscar",
|
||||
"add" : "Añadir",
|
||||
"draw_box" : "Caja de dibujado",
|
||||
"draw_box_text" : "Este marco contendrá los dibujos representativos, sus herramientas y el cuadro de texto para edición.",
|
||||
"html" : "HTML",
|
||||
"canvas" : "Canvas",
|
||||
"svg" : "SVG",
|
||||
"text" : "Texto",
|
||||
"code" : "Código",
|
||||
"actions" : "Acciones",
|
||||
"actions_text" : "Este marco contiene las acciones generales contra tus proyectos.",
|
||||
"upload" : "Subir",
|
||||
"save" : "Guardar",
|
||||
"download" : "Descargar",
|
||||
"Sizerboard_base_end" : null
|
||||
|
||||
}
|
||||
}
|
34
Public/json/i18n/Sizerboard.i18n.esperanto.json
Normal file
34
Public/json/i18n/Sizerboard.i18n.esperanto.json
Normal file
@ -0,0 +1,34 @@
|
||||
{
|
||||
"esperanto" : {
|
||||
|
||||
"Sizerboard_common_start" : null,
|
||||
"Sizerboard_common_end" : null,
|
||||
|
||||
"Sizerboard_start" : null,
|
||||
"Sizerboard_end" : null,
|
||||
|
||||
"Sizerboard_base_start" : null,
|
||||
"sizerboard" : "Sizerboard",
|
||||
"home" : "Ĉefa rektoro",
|
||||
"documentation" : "Dokumentado",
|
||||
"git" : "Git",
|
||||
"projects_menu" : "Projekto menuo",
|
||||
"projects_menu_text" : "Tio estas la projekto menuo. Tiam vi povas filtri laŭ la projektoj, kiujn vi posedas, kaj se ne ekzistas nomo, vi povas krei ĝin.",
|
||||
"search" : "Serĉo",
|
||||
"add" : "Aldonu",
|
||||
"draw_box" : "La skatolo",
|
||||
"draw_box_text" : "Tiu kadro enhavos reprezentajn desegnaĵojn, ilojn kaj tekstkeston por redaktado.",
|
||||
"html" : "HTML HTML HTML HTML",
|
||||
"canvas" : "Canvas",
|
||||
"svg" : "SVG",
|
||||
"text" : "Teksto teksto",
|
||||
"code" : "Kodo",
|
||||
"actions" : "Agoj",
|
||||
"actions_text" : "Ĉi tiu kadro enhavas la ĝeneralajn agojn kontraŭ viaj projektoj.",
|
||||
"upload" : "Supren ĝis",
|
||||
"save" : "Savi",
|
||||
"download" : "Elŝutu",
|
||||
"Sizerboard_base_end" : null
|
||||
|
||||
}
|
||||
}
|
34
Public/json/i18n/Sizerboard.i18n.farsi.json
Normal file
34
Public/json/i18n/Sizerboard.i18n.farsi.json
Normal file
@ -0,0 +1,34 @@
|
||||
{
|
||||
"farsi" : {
|
||||
|
||||
"Sizerboard_common_start" : null,
|
||||
"Sizerboard_common_end" : null,
|
||||
|
||||
"Sizerboard_start" : null,
|
||||
"Sizerboard_end" : null,
|
||||
|
||||
"Sizerboard_base_start" : null,
|
||||
"sizerboard" : "Sizerboard",
|
||||
"home" : "مدیر ارشد",
|
||||
"documentation" : "مستندات",
|
||||
"git" : "Git",
|
||||
"projects_menu" : "Project menu",
|
||||
"projects_menu_text" : "این منو پروژه است. سپس می توانید با نام پروژه هایی که مالک آن هستید فیلتر کنید و اگر نامی وجود نداشته باشد، می توانید آن را ایجاد کنید.",
|
||||
"search" : "جستجو جستجو",
|
||||
"add" : "Add Add",
|
||||
"draw_box" : "جعبه",
|
||||
"draw_box_text" : "این چارچوب شامل نقشه های نمایندگی، ابزار و جعبه متن برای ویرایش خواهد بود.",
|
||||
"html" : "HTML HTML",
|
||||
"canvas" : "بوم بوم",
|
||||
"svg" : "SVG SVG",
|
||||
"text" : "متن متن متن متن",
|
||||
"code" : "کد",
|
||||
"actions" : "اقدامات",
|
||||
"actions_text" : "این چارچوب شامل اقدامات عمومی علیه پروژه های شما است.",
|
||||
"upload" : "Up Up Up",
|
||||
"save" : "Save Save",
|
||||
"download" : "Download",
|
||||
"Sizerboard_base_end" : null
|
||||
|
||||
}
|
||||
}
|
34
Public/json/i18n/Sizerboard.i18n.francais.json
Normal file
34
Public/json/i18n/Sizerboard.i18n.francais.json
Normal file
@ -0,0 +1,34 @@
|
||||
{
|
||||
"francais" : {
|
||||
|
||||
"Sizerboard_common_start" : null,
|
||||
"Sizerboard_common_end" : null,
|
||||
|
||||
"Sizerboard_start" : null,
|
||||
"Sizerboard_end" : null,
|
||||
|
||||
"Sizerboard_base_start" : null,
|
||||
"sizerboard" : "Sizerboard",
|
||||
"home" : "Principal",
|
||||
"documentation" : "Documentation",
|
||||
"git" : "Git",
|
||||
"projects_menu" : "Menu du projet",
|
||||
"projects_menu_text" : "C'est le menu du projet. Ensuite, vous pouvez filtrer par nom les projets que vous possédez, et s'il n'y a pas de nom, vous pouvez le créer.",
|
||||
"search" : "Recherche",
|
||||
"add" : "Add",
|
||||
"draw_box" : "Encadré",
|
||||
"draw_box_text" : "Ce cadre comprendra des dessins représentatifs, des outils et une boîte de texte pour l'édition.",
|
||||
"html" : "HTML",
|
||||
"canvas" : "Canvas",
|
||||
"svg" : "SVG",
|
||||
"text" : "Texte",
|
||||
"code" : "Code",
|
||||
"actions" : "Mesures à prendre",
|
||||
"actions_text" : "Ce cadre contient les actions générales contre vos projets.",
|
||||
"upload" : "Debout",
|
||||
"save" : "Save",
|
||||
"download" : "Télécharger",
|
||||
"Sizerboard_base_end" : null
|
||||
|
||||
}
|
||||
}
|
38
Public/json/i18n/Sizerboard.i18n.gaeilge.json
Normal file
38
Public/json/i18n/Sizerboard.i18n.gaeilge.json
Normal file
@ -0,0 +1,38 @@
|
||||
{
|
||||
"gaeilge" : {
|
||||
|
||||
"Sizerboard_common_start" : null,
|
||||
"Sizerboard_common_end" : null,
|
||||
|
||||
"Sizerboard_start" : null,
|
||||
"Sizerboard_end" : null,
|
||||
|
||||
"Sizerboard_base_start" : null,
|
||||
"sizerboard" : "SEIRBHÍS DO CHUSTAIMÉIRÍ",
|
||||
"home" : "Príomhoide",
|
||||
"documentation" : "Cáipéisí",
|
||||
"git" : "Bláthanna cumhra: cumhráin",
|
||||
"projects_menu" : "Roghchlár Tionscadail",
|
||||
"projects_menu_text" : [
|
||||
"Is é seo an roghchlár tionscadail. Ansin, is féidir leat na ",
|
||||
"tionscadail a bhfuil tú féin a scagadh de réir ainm, agus mura ",
|
||||
"bhfuil aon ainm ann, is féidir leat é a chruthú."
|
||||
],
|
||||
"search" : "Cuardaigh Cuardaigh Cuardaigh",
|
||||
"add" : "Déan teagmháil linn",
|
||||
"draw_box" : "Bosca tarraingt",
|
||||
"draw_box_text" : "Beidh líníochtaí ionadaíocha, uirlisí agus bosca téacs le haghaidh eagarthóireachta sa chreat seo.",
|
||||
"html" : "HTML",
|
||||
"canvas" : "Canbhás",
|
||||
"svg" : "SVG",
|
||||
"text" : "Téacs téacs",
|
||||
"code" : "Cód an Chóid",
|
||||
"actions" : "Gníomhaíochtaí",
|
||||
"actions_text" : "Tá na gníomhaíochtaí ginearálta i gcoinne do thionscadail sa chreat seo.",
|
||||
"upload" : "Suas",
|
||||
"save" : "Sábháil Sábháil",
|
||||
"download" : "Íoslódáil",
|
||||
"Sizerboard_base_end" : null
|
||||
|
||||
}
|
||||
}
|
34
Public/json/i18n/Sizerboard.i18n.hangugeo.json
Normal file
34
Public/json/i18n/Sizerboard.i18n.hangugeo.json
Normal file
@ -0,0 +1,34 @@
|
||||
{
|
||||
"hangugeo" : {
|
||||
|
||||
"Sizerboard_common_start" : null,
|
||||
"Sizerboard_common_end" : null,
|
||||
|
||||
"Sizerboard_start" : null,
|
||||
"Sizerboard_end" : null,
|
||||
|
||||
"Sizerboard_base_start" : null,
|
||||
"sizerboard" : "Sizerboard의 특징",
|
||||
"home" : "주 메뉴",
|
||||
"documentation" : "회사연혁",
|
||||
"git" : "사이트맵",
|
||||
"projects_menu" : "프로젝트 메뉴",
|
||||
"projects_menu_text" : "프로젝트 메뉴입니다. 그런 다음 당신은 자신의 프로젝트 이름을 입력 할 수 있습니다, 그리고 이름이없는 경우, 당신은 그것을 만들 수 있습니다.",
|
||||
"search" : "제품정보",
|
||||
"add" : "기타",
|
||||
"draw_box" : "회사 소개",
|
||||
"draw_box_text" : "이 프레임 워크는 편집을위한 대표 도면, 도구 및 텍스트 상자를 포함합니다.",
|
||||
"html" : "HTML 지원",
|
||||
"canvas" : "인기 카테고리",
|
||||
"svg" : "사이트맵",
|
||||
"text" : "이름 *",
|
||||
"code" : "* 이름",
|
||||
"actions" : "기타",
|
||||
"actions_text" : "이 프레임 워크는 프로젝트에 대한 일반적인 조치를 포함합니다.",
|
||||
"upload" : "지원하다",
|
||||
"save" : "제품 정보",
|
||||
"download" : "다운로드",
|
||||
"Sizerboard_base_end" : null
|
||||
|
||||
}
|
||||
}
|
34
Public/json/i18n/Sizerboard.i18n.hindi.json
Normal file
34
Public/json/i18n/Sizerboard.i18n.hindi.json
Normal file
@ -0,0 +1,34 @@
|
||||
{
|
||||
"hindi" : {
|
||||
|
||||
"Sizerboard_common_start" : null,
|
||||
"Sizerboard_common_end" : null,
|
||||
|
||||
"Sizerboard_start" : null,
|
||||
"Sizerboard_end" : null,
|
||||
|
||||
"Sizerboard_base_start" : null,
|
||||
"sizerboard" : "Sizerboard",
|
||||
"home" : "प्रधान",
|
||||
"documentation" : "प्रलेखन",
|
||||
"git" : "गिट",
|
||||
"projects_menu" : "परियोजना मेनू",
|
||||
"projects_menu_text" : "यह परियोजना मेनू है। फिर आप अपनी परियोजनाओं को नाम से फ़िल्टर कर सकते हैं और यदि कोई नाम नहीं है तो आप इसे बना सकते हैं।.",
|
||||
"search" : "खोज",
|
||||
"add" : "जोड़ें",
|
||||
"draw_box" : "बॉक्स खींचा",
|
||||
"draw_box_text" : "इस ढांचे में संपादन के लिए प्रतिनिधि चित्र, उपकरण और टेक्स्ट बॉक्स शामिल होंगे।.",
|
||||
"html" : "एचटीएमएल",
|
||||
"canvas" : "कैनवास",
|
||||
"svg" : "SVG",
|
||||
"text" : "पाठ",
|
||||
"code" : "कोड",
|
||||
"actions" : "कार्य",
|
||||
"actions_text" : "इस ढांचे में आपकी परियोजनाओं के खिलाफ सामान्य कार्य शामिल हैं।.",
|
||||
"upload" : "ऊपर",
|
||||
"save" : "सहेजें",
|
||||
"download" : "डाउनलोड",
|
||||
"Sizerboard_base_end" : null
|
||||
|
||||
}
|
||||
}
|
34
Public/json/i18n/Sizerboard.i18n.indonesia.json
Normal file
34
Public/json/i18n/Sizerboard.i18n.indonesia.json
Normal file
@ -0,0 +1,34 @@
|
||||
{
|
||||
"indonesia" : {
|
||||
|
||||
"Sizerboard_common_start" : null,
|
||||
"Sizerboard_common_end" : null,
|
||||
|
||||
"Sizerboard_start" : null,
|
||||
"Sizerboard_end" : null,
|
||||
|
||||
"Sizerboard_base_start" : null,
|
||||
"sizerboard" : "LOGIN",
|
||||
"home" : "Login",
|
||||
"documentation" : "Sitemap",
|
||||
"git" : "Login",
|
||||
"projects_menu" : "Menu Proyek",
|
||||
"projects_menu_text" : "Ini adalah menu proyek. Kemudian Anda dapat menyaring dengan nama proyek yang Anda miliki, dan jika tidak ada nama, Anda dapat membuatnya.",
|
||||
"search" : "Sitemap",
|
||||
"add" : "Login",
|
||||
"draw_box" : "Kotak ditarik",
|
||||
"draw_box_text" : "Kerangka ini akan berisi gambar perwakilan, alat dan kotak teks untuk mengedit.",
|
||||
"html" : "LOGIN",
|
||||
"canvas" : "Login",
|
||||
"svg" : "LOGIN",
|
||||
"text" : "Login",
|
||||
"code" : "Login",
|
||||
"actions" : "Sitemap",
|
||||
"actions_text" : "Kerangka ini berisi tindakan umum terhadap proyek Anda.",
|
||||
"upload" : "Sitemap",
|
||||
"save" : "Sitemap",
|
||||
"download" : "Login",
|
||||
"Sizerboard_base_end" : null
|
||||
|
||||
}
|
||||
}
|
34
Public/json/i18n/Sizerboard.i18n.italiano.json
Normal file
34
Public/json/i18n/Sizerboard.i18n.italiano.json
Normal file
@ -0,0 +1,34 @@
|
||||
{
|
||||
"italiano" : {
|
||||
|
||||
"Sizerboard_common_start" : null,
|
||||
"Sizerboard_common_end" : null,
|
||||
|
||||
"Sizerboard_start" : null,
|
||||
"Sizerboard_end" : null,
|
||||
|
||||
"Sizerboard_base_start" : null,
|
||||
"sizerboard" : "Sizerboard",
|
||||
"home" : "Principale",
|
||||
"documentation" : "Documentazione",
|
||||
"git" : "Gi",
|
||||
"projects_menu" : "Menu di progetto",
|
||||
"projects_menu_text" : "Questo è il menu del progetto. Quindi è possibile filtrare per nome i progetti che si possiede, e se non c'è un nome, è possibile crearlo.",
|
||||
"search" : "Ricerca",
|
||||
"add" : "Aggiungi",
|
||||
"draw_box" : "Designazione delle merci",
|
||||
"draw_box_text" : "Questo quadro conterrà disegni rappresentativi, strumenti e casella di testo per la modifica.",
|
||||
"html" : "HTML",
|
||||
"canvas" : "Telaio",
|
||||
"svg" : "SVG",
|
||||
"text" : "Testo",
|
||||
"code" : "Codice",
|
||||
"actions" : "Azioni",
|
||||
"actions_text" : "Questo quadro contiene le azioni generali contro i vostri progetti.",
|
||||
"upload" : "Su",
|
||||
"save" : "Salva",
|
||||
"download" : "Scarica",
|
||||
"Sizerboard_base_end" : null
|
||||
|
||||
}
|
||||
}
|
34
Public/json/i18n/Sizerboard.i18n.ivrit.json
Normal file
34
Public/json/i18n/Sizerboard.i18n.ivrit.json
Normal file
@ -0,0 +1,34 @@
|
||||
{
|
||||
"ivrit" : {
|
||||
|
||||
"Sizerboard_common_start" : null,
|
||||
"Sizerboard_common_end" : null,
|
||||
|
||||
"Sizerboard_start" : null,
|
||||
"Sizerboard_end" : null,
|
||||
|
||||
"Sizerboard_base_start" : null,
|
||||
"sizerboard" : "Sizerboard",
|
||||
"home" : "ראשי",
|
||||
"documentation" : "מסמך",
|
||||
"git" : "Git",
|
||||
"projects_menu" : "תפריט Project",
|
||||
"projects_menu_text" : "זהו תפריט הפרויקט. לאחר מכן תוכל לסנן בשם הפרויקטים שבבעלותך, ואם אין שם, תוכל ליצור את זה.",
|
||||
"search" : "חיפוש חיפוש",
|
||||
"add" : "הוסף",
|
||||
"draw_box" : "Box",
|
||||
"draw_box_text" : "מסגרת זו תכיל רישומים מייצגים, כלים ותיבת טקסט לעריכה.",
|
||||
"html" : "HTML",
|
||||
"canvas" : "Canvas",
|
||||
"svg" : "SVG",
|
||||
"text" : "טקסט",
|
||||
"code" : "קודקוד",
|
||||
"actions" : "פעולות",
|
||||
"actions_text" : "מסגרת זו כוללת את הפעולות הכלליות נגד הפרויקטים שלך.",
|
||||
"upload" : "למעלה",
|
||||
"save" : "להציל",
|
||||
"download" : "הורד Download",
|
||||
"Sizerboard_base_end" : null
|
||||
|
||||
}
|
||||
}
|
34
Public/json/i18n/Sizerboard.i18n.magyar.json
Normal file
34
Public/json/i18n/Sizerboard.i18n.magyar.json
Normal file
@ -0,0 +1,34 @@
|
||||
{
|
||||
"magyar" : {
|
||||
|
||||
"Sizerboard_common_start" : null,
|
||||
"Sizerboard_common_end" : null,
|
||||
|
||||
"Sizerboard_start" : null,
|
||||
"Sizerboard_end" : null,
|
||||
|
||||
"Sizerboard_base_start" : null,
|
||||
"sizerboard" : "Sizerboard",
|
||||
"home" : "Elnök",
|
||||
"documentation" : "Dokumentáció",
|
||||
"git" : "Ajándék",
|
||||
"projects_menu" : "Project menü",
|
||||
"projects_menu_text" : "Ez a projekt menü. Ezután szűrheti a saját projekteket, és ha nincs neve, létrehozhatja.",
|
||||
"search" : "Keresés",
|
||||
"add" : "Hozzáadás",
|
||||
"draw_box" : "Box rajz",
|
||||
"draw_box_text" : "Ez a keret reprezentatív rajzokat, eszközöket és szövegdobozokat tartalmaz a szerkesztéshez.",
|
||||
"html" : "HTML",
|
||||
"canvas" : "Vászon",
|
||||
"svg" : "SVG",
|
||||
"text" : "Szöveg",
|
||||
"code" : "Kód",
|
||||
"actions" : "Akciók",
|
||||
"actions_text" : "Ez a keret tartalmazza az általános intézkedéseket a projektek ellen.",
|
||||
"upload" : "Felül",
|
||||
"save" : "Mentés",
|
||||
"download" : "Letöltés",
|
||||
"Sizerboard_base_end" : null
|
||||
|
||||
}
|
||||
}
|
34
Public/json/i18n/Sizerboard.i18n.nederlands.json
Normal file
34
Public/json/i18n/Sizerboard.i18n.nederlands.json
Normal file
@ -0,0 +1,34 @@
|
||||
{
|
||||
"nederlands" : {
|
||||
|
||||
"Sizerboard_common_start" : null,
|
||||
"Sizerboard_common_end" : null,
|
||||
|
||||
"Sizerboard_start" : null,
|
||||
"Sizerboard_end" : null,
|
||||
|
||||
"Sizerboard_base_start" : null,
|
||||
"sizerboard" : "Sizerboard",
|
||||
"home" : "Directeur",
|
||||
"documentation" : "Document",
|
||||
"git" : "Git",
|
||||
"projects_menu" : "Project Menu",
|
||||
"projects_menu_text" : "Dit is het project menu. Dan filter je met naam de projecten die je bezit, en als er geen naam is, kun je het creëren.",
|
||||
"search" : "Zoek",
|
||||
"add" : "Advocaat",
|
||||
"draw_box" : "Box getekend",
|
||||
"draw_box_text" : "Dit framewerk bevat representatieve tekeningen, gereedschap en tekstbus voor editing.",
|
||||
"html" : "HTM",
|
||||
"canvas" : "Canvas",
|
||||
"svg" : "SVG",
|
||||
"text" : "Text",
|
||||
"code" : "Code",
|
||||
"actions" : "Actie",
|
||||
"actions_text" : "Dit framewerk bevat de algemene acties tegen je projecten.",
|
||||
"upload" : "Omhoog",
|
||||
"save" : "Red",
|
||||
"download" : "Download",
|
||||
"Sizerboard_base_end" : null
|
||||
|
||||
}
|
||||
}
|
34
Public/json/i18n/Sizerboard.i18n.nihongo.json
Normal file
34
Public/json/i18n/Sizerboard.i18n.nihongo.json
Normal file
@ -0,0 +1,34 @@
|
||||
{
|
||||
"nihongo" : {
|
||||
|
||||
"Sizerboard_common_start" : null,
|
||||
"Sizerboard_common_end" : null,
|
||||
|
||||
"Sizerboard_start" : null,
|
||||
"Sizerboard_end" : null,
|
||||
|
||||
"Sizerboard_base_start" : null,
|
||||
"sizerboard" : "Sizerboardの特長",
|
||||
"home" : "代表取締役",
|
||||
"documentation" : "ドキュメント",
|
||||
"git" : "ログイン",
|
||||
"projects_menu" : "プロジェクトメニュー",
|
||||
"projects_menu_text" : "プロジェクトメニューです。 そこで、自分のプロジェクト名を絞り、名前がない場合、作成できます。.",
|
||||
"search" : "アクセス",
|
||||
"add" : "追加する",
|
||||
"draw_box" : "ボックス描画",
|
||||
"draw_box_text" : "このフレームワークには、編集用の代表的な図面、ツール、テキストボックスが含まれます。.",
|
||||
"html" : "アーカイブ",
|
||||
"canvas" : "キャンバス",
|
||||
"svg" : "SVGの特長",
|
||||
"text" : "テキスト",
|
||||
"code" : "コードコード",
|
||||
"actions" : "アクション",
|
||||
"actions_text" : "このフレームワークには、プロジェクトに対する一般的なアクションが含まれています。.",
|
||||
"upload" : "ニュース",
|
||||
"save" : "保存する",
|
||||
"download" : "ダウンロード",
|
||||
"Sizerboard_base_end" : null
|
||||
|
||||
}
|
||||
}
|
34
Public/json/i18n/Sizerboard.i18n.polski.json
Normal file
34
Public/json/i18n/Sizerboard.i18n.polski.json
Normal file
@ -0,0 +1,34 @@
|
||||
{
|
||||
"polski" : {
|
||||
|
||||
"Sizerboard_common_start" : null,
|
||||
"Sizerboard_common_end" : null,
|
||||
|
||||
"Sizerboard_start" : null,
|
||||
"Sizerboard_end" : null,
|
||||
|
||||
"Sizerboard_base_start" : null,
|
||||
"sizerboard" : "MKWBZK",
|
||||
"home" : "Wydawca",
|
||||
"documentation" : "Dokumentacja",
|
||||
"git" : "Git",
|
||||
"projects_menu" : "Project menu",
|
||||
"projects_menu_text" : "Jest to projekt menu. Wtedy możesz filtrować, nazywać je własnymi projektami i jeśli nie ma imienia, to możesz ją stworzyć.",
|
||||
"search" : "Search Search",
|
||||
"add" : "Addd",
|
||||
"draw_box" : "Box",
|
||||
"draw_box_text" : "Takie ramy zawierają rysunki reprezentacyjne, narzędzia i skrzynie tekstowe do edycji.",
|
||||
"html" : "HTML",
|
||||
"canvas" : "Canvas",
|
||||
"svg" : "SVG",
|
||||
"text" : "Tekst",
|
||||
"code" : "Kodeks",
|
||||
"actions" : "Akcja",
|
||||
"actions_text" : "Zasady te obejmują działania przeciwko projektom.",
|
||||
"upload" : "Up",
|
||||
"save" : "Save",
|
||||
"download" : "Download",
|
||||
"Sizerboard_base_end" : null
|
||||
|
||||
}
|
||||
}
|
34
Public/json/i18n/Sizerboard.i18n.portugues.json
Normal file
34
Public/json/i18n/Sizerboard.i18n.portugues.json
Normal file
@ -0,0 +1,34 @@
|
||||
{
|
||||
"portugues" : {
|
||||
|
||||
"Sizerboard_common_start" : null,
|
||||
"Sizerboard_common_end" : null,
|
||||
|
||||
"Sizerboard_start" : null,
|
||||
"Sizerboard_end" : null,
|
||||
|
||||
"Sizerboard_base_start" : null,
|
||||
"sizerboard" : "Sizerboard",
|
||||
"home" : "Director",
|
||||
"documentation" : "Documentação",
|
||||
"git" : "Git",
|
||||
"projects_menu" : "Menu de projeto",
|
||||
"projects_menu_text" : "Este é o menu do projeto. Então você pode filtrar por nome os projetos que você possui, e se não houver nenhum nome, você pode criá-lo.",
|
||||
"search" : "Pesquisar",
|
||||
"add" : "Adicionar",
|
||||
"draw_box" : "Caixa retirada",
|
||||
"draw_box_text" : "Esta estrutura conterá desenhos representativos, ferramentas e caixa de texto para edição.",
|
||||
"html" : "HTML",
|
||||
"canvas" : "Lona",
|
||||
"svg" : "SVG",
|
||||
"text" : "Texto",
|
||||
"code" : "Código",
|
||||
"actions" : "Acções",
|
||||
"actions_text" : "Esta estrutura contém as ações gerais contra seus projetos.",
|
||||
"upload" : "Para cima",
|
||||
"save" : "Salvar",
|
||||
"download" : "Baixar",
|
||||
"Sizerboard_base_end" : null
|
||||
|
||||
}
|
||||
}
|
34
Public/json/i18n/Sizerboard.i18n.russkiy.json
Normal file
34
Public/json/i18n/Sizerboard.i18n.russkiy.json
Normal file
@ -0,0 +1,34 @@
|
||||
{
|
||||
"russkiy" : {
|
||||
|
||||
"Sizerboard_common_start" : null,
|
||||
"Sizerboard_common_end" : null,
|
||||
|
||||
"Sizerboard_start" : null,
|
||||
"Sizerboard_end" : null,
|
||||
|
||||
"Sizerboard_base_start" : null,
|
||||
"sizerboard" : "Sizerboard",
|
||||
"home" : "Principal",
|
||||
"documentation" : "Документация",
|
||||
"git" : "Git",
|
||||
"projects_menu" : "Меню проекта",
|
||||
"projects_menu_text" : "Это меню проекта. Затем вы можете отфильтровать по названию проекты, которые у вас есть, и если нет имени, вы можете его создать.",
|
||||
"search" : "Поиск",
|
||||
"add" : "Добавить",
|
||||
"draw_box" : "Вставка",
|
||||
"draw_box_text" : "Эти рамки будут содержать репрезентативные чертежи, инструменты и текстовые ящики для редактирования.",
|
||||
"html" : "HTML",
|
||||
"canvas" : "Холст",
|
||||
"svg" : "SVG",
|
||||
"text" : "Текст",
|
||||
"code" : "Код",
|
||||
"actions" : "Действия",
|
||||
"actions_text" : "Эта основа содержит общие действия против ваших проектов.",
|
||||
"upload" : "Вверх",
|
||||
"save" : "Сохранить",
|
||||
"download" : "Скачать",
|
||||
"Sizerboard_base_end" : null
|
||||
|
||||
}
|
||||
}
|
34
Public/json/i18n/Sizerboard.i18n.slovencina.json
Normal file
34
Public/json/i18n/Sizerboard.i18n.slovencina.json
Normal file
@ -0,0 +1,34 @@
|
||||
{
|
||||
"slovencina" : {
|
||||
|
||||
"Sizerboard_common_start" : null,
|
||||
"Sizerboard_common_end" : null,
|
||||
|
||||
"Sizerboard_start" : null,
|
||||
"Sizerboard_end" : null,
|
||||
|
||||
"Sizerboard_base_start" : null,
|
||||
"sizerboard" : "Sizerboard",
|
||||
"home" : "Všeobecný",
|
||||
"documentation" : "Aktuality",
|
||||
"git" : "Všeobecný",
|
||||
"projects_menu" : "Ponuka projektu",
|
||||
"projects_menu_text" : "Toto je ponuka projektu. Potom môžete filtrovať podľa názvu projektov, ktoré vlastníte, a ak neexistuje názov, môžete ho vytvoriť.",
|
||||
"search" : "Vyhľadávanie",
|
||||
"add" : "Pridať",
|
||||
"draw_box" : "Box nakreslený",
|
||||
"draw_box_text" : "Tento rámec bude obsahovať reprezentatívne výkresy, nástroje a text box pre editáciu.",
|
||||
"html" : "AKTUALITY",
|
||||
"canvas" : "Canvas",
|
||||
"svg" : "SVOJE",
|
||||
"text" : "Aktuality",
|
||||
"code" : "Kód",
|
||||
"actions" : "Akcie",
|
||||
"actions_text" : "Tento rámec obsahuje všeobecné akcie proti vašim projektom.",
|
||||
"upload" : "Hore",
|
||||
"save" : "Uložiť",
|
||||
"download" : "Na stiahnutie",
|
||||
"Sizerboard_base_end" : null
|
||||
|
||||
}
|
||||
}
|
34
Public/json/i18n/Sizerboard.i18n.suomi.json
Normal file
34
Public/json/i18n/Sizerboard.i18n.suomi.json
Normal file
@ -0,0 +1,34 @@
|
||||
{
|
||||
"suomi" : {
|
||||
|
||||
"Sizerboard_common_start" : null,
|
||||
"Sizerboard_common_end" : null,
|
||||
|
||||
"Sizerboard_start" : null,
|
||||
"Sizerboard_end" : null,
|
||||
|
||||
"Sizerboard_base_start" : null,
|
||||
"sizerboard" : "Sizerboard",
|
||||
"home" : "Pääasiallinen",
|
||||
"documentation" : "Dokumentointi",
|
||||
"git" : "Git",
|
||||
"projects_menu" : "Hankkeen menu",
|
||||
"projects_menu_text" : "Tämä on projektin menu. Sitten voit suodattaa omistamiasi projekteja nimeltä ja jos nimeä ei ole, voit luoda sen.",
|
||||
"search" : "Etsintä",
|
||||
"add" : "Lisää",
|
||||
"draw_box" : "Box piirretty",
|
||||
"draw_box_text" : "Tämä kehys sisältää edustavia piirustuksia, työkaluja ja tekstiruudun editointiin.",
|
||||
"html" : "HTML",
|
||||
"canvas" : "Canvas",
|
||||
"svg" : "SVG",
|
||||
"text" : "Teksti",
|
||||
"code" : "Code",
|
||||
"actions" : "Toimia",
|
||||
"actions_text" : "Tämä kehys sisältää yleiset toimet projektejasi vastaan.",
|
||||
"upload" : "Up",
|
||||
"save" : "Säästäminen",
|
||||
"download" : "Download Download",
|
||||
"Sizerboard_base_end" : null
|
||||
|
||||
}
|
||||
}
|
34
Public/json/i18n/Sizerboard.i18n.svenska.json
Normal file
34
Public/json/i18n/Sizerboard.i18n.svenska.json
Normal file
@ -0,0 +1,34 @@
|
||||
{
|
||||
"svenska" : {
|
||||
|
||||
"Sizerboard_common_start" : null,
|
||||
"Sizerboard_common_end" : null,
|
||||
|
||||
"Sizerboard_start" : null,
|
||||
"Sizerboard_end" : null,
|
||||
|
||||
"Sizerboard_base_start" : null,
|
||||
"sizerboard" : "Sizerboard",
|
||||
"home" : "Principal",
|
||||
"documentation" : "Dokumentation",
|
||||
"git" : "Git",
|
||||
"projects_menu" : "Projektmeny",
|
||||
"projects_menu_text" : "Detta är projektmenyn. Då kan du filtrera efter namn på de projekt du äger, och om det inte finns något namn kan du skapa det.",
|
||||
"search" : "Sök efter Sök",
|
||||
"add" : "Lägg till",
|
||||
"draw_box" : "Box dras",
|
||||
"draw_box_text" : "Denna ram kommer att innehålla representativa ritningar, verktyg och textruta för redigering.",
|
||||
"html" : "HTML",
|
||||
"canvas" : "Canvas",
|
||||
"svg" : "SVG",
|
||||
"text" : "Texttext",
|
||||
"code" : "Kodkod",
|
||||
"actions" : "Åtgärder",
|
||||
"actions_text" : "Detta ramverk innehåller de allmänna åtgärderna mot dina projekt.",
|
||||
"upload" : "Upp",
|
||||
"save" : "Spara",
|
||||
"download" : "Ladda ner",
|
||||
"Sizerboard_base_end" : null
|
||||
|
||||
}
|
||||
}
|
34
Public/json/i18n/Sizerboard.i18n.thai.json
Normal file
34
Public/json/i18n/Sizerboard.i18n.thai.json
Normal file
@ -0,0 +1,34 @@
|
||||
{
|
||||
"thai" : {
|
||||
|
||||
"Sizerboard_common_start" : null,
|
||||
"Sizerboard_common_end" : null,
|
||||
|
||||
"Sizerboard_start" : null,
|
||||
"Sizerboard_end" : null,
|
||||
|
||||
"Sizerboard_base_start" : null,
|
||||
"sizerboard" : "Sizerboard",
|
||||
"home" : "ข้อมูล",
|
||||
"documentation" : "เอกสาร",
|
||||
"git" : "Git",
|
||||
"projects_menu" : "เมนู",
|
||||
"projects_menu_text" : "นี่คือเมนูโครงการ จากนั้นคุณสามารถกรองโดยชื่อโครงการที่คุณเป็นเจ้าของและถ้าไม่มีชื่อคุณสามารถสร้าง.",
|
||||
"search" : "ค้นหา",
|
||||
"add" : "เพิ่ม",
|
||||
"draw_box" : "กล่องวาด",
|
||||
"draw_box_text" : "กรอบนี้มีภาพวาดเครื่องมือและเครื่องมือข้อความสําหรับการแก้ไข.",
|
||||
"html" : "HTML",
|
||||
"canvas" : "ผ้าใบ",
|
||||
"svg" : "SVG",
|
||||
"text" : "ข้อความ",
|
||||
"code" : "รหัส",
|
||||
"actions" : "การกระทํา",
|
||||
"actions_text" : "กรอบนี้มีการกระทําทั่วไปกับโครงการของคุณ.",
|
||||
"upload" : "ขึ้น",
|
||||
"save" : "บันทึก",
|
||||
"download" : "ดาวน์โหลด",
|
||||
"Sizerboard_base_end" : null
|
||||
|
||||
}
|
||||
}
|
51
Public/json/i18n/Sizerboard.i18n.turkce.json
Normal file
51
Public/json/i18n/Sizerboard.i18n.turkce.json
Normal file
@ -0,0 +1,51 @@
|
||||
{
|
||||
"turkce" : {
|
||||
|
||||
"Sizerboard_common_start" : null,
|
||||
"Sizerboard_common_end" : null,
|
||||
|
||||
"Sizerboard_start" : null,
|
||||
"Sizerboard_end" : null,
|
||||
|
||||
"Sizerboard_base_start" : null,
|
||||
"sizerboard" : "MVBCKYR",
|
||||
"home" : "Müdür",
|
||||
"documentation" : "Dokümantasyon",
|
||||
"git" : "Git Git Git Git",
|
||||
"projects_menu" : "Project menu",
|
||||
"projects_menu_text" : "Bu proje menüsüdür. Sonra kendi olduğunuz projelerle filtreleyebilirsiniz ve isim yoksa onu yaratabilirsiniz.",
|
||||
"search" : "Arama Arama",
|
||||
"add" : [
|
||||
"Add Add Add Add Add Add Add Add Add Add Add Add Add Add Add Add ",
|
||||
"Add Add Add Add Add Add Add Add Add Add Add Add Add Add Add Add ",
|
||||
"Add Add Add Add Add Add Add Add Add Add Add Add Add Add Add Add ",
|
||||
"Add Add Add Add Add Add Add Add Add Add Add Add Add Add Add Add ",
|
||||
"Add Add Add Add Add Add Add Add Add Add Add Add Add Add Add Add ",
|
||||
"Add Add Add Add Add Add Add Add Add Add Add Add Add Add Add Add ",
|
||||
"Add Add Add Add Add Add Add Add Add Add Add Add Add Add Add Add ",
|
||||
"Add Add Add Add Add Add Add Add Add Add Add Add Add Add Add Add ",
|
||||
"Add Add Add Add Add Add Add Add Add Add Add Add Add Add Add Add ",
|
||||
"Add Add Add Add Add Add Add Add Add Add Add Add Add Add Add Add ",
|
||||
"Add Add Add Add Add Add Add Add Add Add Add Add Add Add Add Add ",
|
||||
"Add Add Add Add Add Add Add Add Add Add Add Add Add Add Add Add ",
|
||||
"Add Add Add Add Add Add Add Add Add Add Add Add Add Add Add Add ",
|
||||
"Add Add Add Add Add Add Add Add Add Add Add Add Add Add Add Add ",
|
||||
"Add Add Add Add Add Add Add Add Add Add Add Add Add Add Add Add ",
|
||||
"Add Add Add Add Add Add Add Add Add Add Add Add Add Add Add Add"
|
||||
],
|
||||
"draw_box" : "Kutu",
|
||||
"draw_box_text" : "Bu çerçeve, düzenleme için temsilci çizimleri, araçları ve metin kutusu içerecektir.",
|
||||
"html" : "HTML HTML HTML HTML",
|
||||
"canvas" : "Blood",
|
||||
"svg" : "SVG",
|
||||
"text" : "Text Text Text Text",
|
||||
"code" : "Kod Kodu",
|
||||
"actions" : "Eylemler",
|
||||
"actions_text" : "Bu çerçeve, projelerinize karşı genel eylemleri içerir.",
|
||||
"upload" : "Up Up Up Up",
|
||||
"save" : "Kaydet Kaydet Kaydet",
|
||||
"download" : "Download Download Download Download Download",
|
||||
"Sizerboard_base_end" : null
|
||||
|
||||
}
|
||||
}
|
34
Public/json/i18n/Sizerboard.i18n.ukrainska.json
Normal file
34
Public/json/i18n/Sizerboard.i18n.ukrainska.json
Normal file
@ -0,0 +1,34 @@
|
||||
{
|
||||
"ukrainska" : {
|
||||
|
||||
"Sizerboard_common_start" : null,
|
||||
"Sizerboard_common_end" : null,
|
||||
|
||||
"Sizerboard_start" : null,
|
||||
"Sizerboard_end" : null,
|
||||
|
||||
"Sizerboard_base_start" : null,
|
||||
"sizerboard" : "МКВБКГКСБ",
|
||||
"home" : "Головна",
|
||||
"documentation" : "Документація",
|
||||
"git" : "Навігація",
|
||||
"projects_menu" : "Меню проекту",
|
||||
"projects_menu_text" : "Це меню проекту. Тоді ви можете відфільтрувати свої проекти, і якщо немає назви, ви можете створити його.",
|
||||
"search" : "Пошук",
|
||||
"add" : "Додати",
|
||||
"draw_box" : "Коробка намальована",
|
||||
"draw_box_text" : "Цей каркас буде містити представницькі креслення, інструменти та текстове поле для редагування.",
|
||||
"html" : "УКРАЇНСЬКА",
|
||||
"canvas" : "Полотно",
|
||||
"svg" : "СВГ",
|
||||
"text" : "Головна",
|
||||
"code" : "Коди",
|
||||
"actions" : "Акції",
|
||||
"actions_text" : "У цьому розділі зібрані загальні дії щодо ваших проектів.",
|
||||
"upload" : "Вгору",
|
||||
"save" : "Зберегти",
|
||||
"download" : "Завантажити",
|
||||
"Sizerboard_base_end" : null
|
||||
|
||||
}
|
||||
}
|
34
Public/json/i18n/Sizerboard.i18n.zhongwen.json
Normal file
34
Public/json/i18n/Sizerboard.i18n.zhongwen.json
Normal file
@ -0,0 +1,34 @@
|
||||
{
|
||||
"zhongwen" : {
|
||||
|
||||
"Sizerboard_common_start" : null,
|
||||
"Sizerboard_common_end" : null,
|
||||
|
||||
"Sizerboard_start" : null,
|
||||
"Sizerboard_end" : null,
|
||||
|
||||
"Sizerboard_base_start" : null,
|
||||
"sizerboard" : "Sizerboard",
|
||||
"home" : "特等",
|
||||
"documentation" : "文件",
|
||||
"git" : "专 员",
|
||||
"projects_menu" : "项目菜单",
|
||||
"projects_menu_text" : "这就是项目菜单。 然后,你可以以你自己的项目的名义进行过滤,如果没有名字,你可以创建。.",
|
||||
"search" : "搜索",
|
||||
"add" : "增 编",
|
||||
"draw_box" : "方框",
|
||||
"draw_box_text" : "这一框架将包含有代表性的图画、工具和文字箱以供编辑。.",
|
||||
"html" : "传真",
|
||||
"canvas" : "Canvas",
|
||||
"svg" : "SVG",
|
||||
"text" : "案文",
|
||||
"code" : "法典",
|
||||
"actions" : "行动",
|
||||
"actions_text" : "该框架载有针对贵项目的一般行动。.",
|
||||
"upload" : "页: 1",
|
||||
"save" : "Save",
|
||||
"download" : "下载",
|
||||
"Sizerboard_base_end" : null
|
||||
|
||||
}
|
||||
}
|
348
Public/scss/Sizerboard.base.scss
Normal file
348
Public/scss/Sizerboard.base.scss
Normal file
@ -0,0 +1,348 @@
|
||||
.sizerboard{
|
||||
|
||||
position : absolute;
|
||||
top : 0em;
|
||||
left : 0em;
|
||||
width : 100%;
|
||||
height : 100%;
|
||||
overflow : hidden;
|
||||
|
||||
&,input,button,textarea{font-family : $font-family;}
|
||||
|
||||
[data-visible=false]{display : none;}
|
||||
|
||||
[data-icon]::before{
|
||||
font-family : $font-family;
|
||||
margin-right : .4em;
|
||||
}
|
||||
|
||||
a[href]{text-decoration : none;}
|
||||
a[href],[onmousedown],[onmouseup],[onclick]{
|
||||
color : $color-primary;
|
||||
cursor : pointer;
|
||||
transition-property : color;
|
||||
transition-duration : $transition-out;
|
||||
&:hover,&:focus{
|
||||
color : $color-secondary;
|
||||
transition-duration : $transition-in;
|
||||
}
|
||||
}
|
||||
[type=text],[type=password],[type=date],[type=datetime],[type=time],textarea{
|
||||
width : 100%;
|
||||
box-sizing : border-box;
|
||||
}
|
||||
button,[type=button],[type=submit],[type=reset],[rol=button],[type=text],[type=password],[type=date],[type=datetime],[type=time],textarea{
|
||||
color : $color-primary;
|
||||
font-size : 1em;
|
||||
border : .1em solid $color-primary;
|
||||
box-shadow : 0em 0em .4em inset $color-primary;
|
||||
border-radius : $border-radius;
|
||||
transition-property : color,border-color,box-shadow;
|
||||
transition-duration : $transition-out;
|
||||
&:hover,&:focus{
|
||||
color : $color-secondary;
|
||||
border-color : $color-secondary;
|
||||
box-shadow : 0em 0em .4em inset $color-secondary;
|
||||
transition-duration : $transition-in;
|
||||
}
|
||||
}
|
||||
button,[type=button],[type=submit],[type=reset],[rol=button]{cursor : pointer;}
|
||||
a[href],[onmousedown],[onmouseup],[onclick]{
|
||||
outline : none;
|
||||
&[disabled],&[readonly],&[data-selected=true]{&,&:hover{
|
||||
color : $color-grey;
|
||||
cursor : default;
|
||||
}}
|
||||
}
|
||||
button,[type=button],[type=submit],[type=reset],[rol=button],[type=text],[type=password],[type=date],[type=datetime],[type=time],textarea{
|
||||
outline : none;
|
||||
box-sizing : border-box;
|
||||
&[disabled],&[readonly],&[data-selected=true]{&,&:hover,&:focus{
|
||||
color : $color-grey;
|
||||
border-color : $color-grey;
|
||||
cursor : default;
|
||||
box-shadow : 0em 0em .4em inset $color-grey;
|
||||
}}
|
||||
}
|
||||
|
||||
label{
|
||||
padding : 0em .4em;
|
||||
font-weight : 900;
|
||||
white-space : nowrap;
|
||||
border : .1em solid $color-grey;
|
||||
border-radius : $border-radius;
|
||||
box-shadow : 0em 0em .4em inset $color-grey;
|
||||
&>*{font-size : .9em;}
|
||||
&::after{content : ":";}
|
||||
}
|
||||
|
||||
.group{
|
||||
display : table;
|
||||
margin : 0em;
|
||||
padding : 0em;
|
||||
list-style-type : none;
|
||||
border-collapse : collapse;
|
||||
li{
|
||||
display : table-cell;
|
||||
&>*{
|
||||
border-radius : 0em;
|
||||
padding : .1em .4em;
|
||||
padding-block : none;
|
||||
padding-inline : none;
|
||||
}
|
||||
}
|
||||
&>:first-child>*{border-radius : $border-radius 0em 0em $border-radius;}
|
||||
&>:last-child>*{border-radius : 0em $border-radius $border-radius 0em;}
|
||||
}
|
||||
|
||||
header,main,footer{
|
||||
position : absolute;
|
||||
left : 0em;
|
||||
width : 100%;
|
||||
}
|
||||
header,footer{
|
||||
background-color : $color-fore;
|
||||
color : $color-back;
|
||||
}
|
||||
|
||||
header{
|
||||
top : 0em;
|
||||
height : $header-height;
|
||||
z-index : 20;
|
||||
}
|
||||
|
||||
main{
|
||||
top : $header-height;
|
||||
bottom : $footer-height;
|
||||
background-color : $color-back;
|
||||
color : $color-fore;
|
||||
z-index : 10;
|
||||
overflow : hidden;
|
||||
&>form{
|
||||
display : block;
|
||||
position : absolute;
|
||||
top : 0em;
|
||||
height : 100%;
|
||||
overflow : hidden;
|
||||
&>fieldset{
|
||||
position : absolute;
|
||||
top : 0em;
|
||||
left : 0em;
|
||||
right : 0em;
|
||||
bottom : 0em;
|
||||
margin : $box-margin;
|
||||
padding : 0em;
|
||||
border : none;
|
||||
&>legend{
|
||||
display : block;
|
||||
width : 100%;
|
||||
font-size : 1.2em;
|
||||
font-weight : 900;
|
||||
border-bottom : .15em solid $color-fore;
|
||||
}
|
||||
&>p{
|
||||
margin : 0em;
|
||||
padding : 1em 0em;
|
||||
font-size : .85em;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
footer{
|
||||
bottom : 0em;
|
||||
height : $footer-height;
|
||||
z-index : 30;
|
||||
}
|
||||
|
||||
.main-menu{
|
||||
position : absolute;
|
||||
bottom : 0em;
|
||||
left : 50%;
|
||||
margin-bottom : .2em;
|
||||
margin-left : -20em;
|
||||
width : 40em;
|
||||
text-align : center;
|
||||
ul{
|
||||
margin : 0em;
|
||||
padding : 0em;
|
||||
list-style-type : none;
|
||||
}
|
||||
li{
|
||||
display : inline-block;
|
||||
margin : 0em 1em;
|
||||
}
|
||||
}
|
||||
|
||||
h1{
|
||||
margin : 0em;
|
||||
}
|
||||
|
||||
.projects-menu{
|
||||
left : 0em;
|
||||
width : $projects-menu-width;
|
||||
}
|
||||
|
||||
.search-box{
|
||||
position : absolute;
|
||||
top : 7.6em;
|
||||
width : 100%;
|
||||
&>:first-child>*{border-bottom-left-radius : 0em;}
|
||||
&>:last-child>*{border-bottom-right-radius : 0em;}
|
||||
&>:nth-child(2){width : 100%;}
|
||||
label{
|
||||
font-weight : 400;
|
||||
&::after{content : "";}
|
||||
}
|
||||
[data-icon]{
|
||||
&::before{margin : 0em;}
|
||||
&+[data-i18n]{display : none;}
|
||||
}
|
||||
button[data-i18n=search]{display : none;}
|
||||
&+nav{
|
||||
position : absolute;
|
||||
top : 9em;
|
||||
left : 0em;
|
||||
bottom : 0em;
|
||||
width : 100%;
|
||||
border : .1em solid $color-fore;
|
||||
background-color : $color-back;
|
||||
overflow : auto;
|
||||
box-sizing : border-box;
|
||||
border-radius : 0em 0em $border-radius $border-radius;
|
||||
box-shadow : .1em .1em .2em $color-grey;
|
||||
&>ul{
|
||||
margin : 0em;
|
||||
padding : 0em;
|
||||
list-style-type : none;
|
||||
// &>:last-child{border-radius : 0em 0em $border-radius $border-radius;}
|
||||
}
|
||||
li{
|
||||
padding : .2em .4em;
|
||||
border-radius : 0em;
|
||||
box-sizing : border-box;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.draw-box{
|
||||
left : $projects-menu-width;
|
||||
right : 0em;
|
||||
.group{
|
||||
position : absolute;
|
||||
top : 2.6em;
|
||||
left : 0em;
|
||||
&>:first-child>button{border-bottom-left-radius : 0em;}
|
||||
&>:last-child>button{border-bottom-right-radius : 0em;}
|
||||
}
|
||||
.fields{
|
||||
position : absolute;
|
||||
top : 4em;
|
||||
left : 0em;
|
||||
bottom : 0em;
|
||||
width : 100%;
|
||||
border : .1em solid $color-fore;
|
||||
background-color : $color-back;
|
||||
box-sizing : border-box;
|
||||
border-radius : 0em $border-radius $border-radius $border-radius;
|
||||
box-shadow : .1em .1em .2em $color-fore;
|
||||
&>section{&,&>*{
|
||||
position : absolute;
|
||||
top : 0em;
|
||||
left : 0em;
|
||||
width : 100%;
|
||||
height : 100%;
|
||||
}}
|
||||
&>section>*{border-radius : 0em $border-radius $border-radius $border-radius;}
|
||||
textarea{
|
||||
font-family : $font-mono;
|
||||
color : $color-fore;
|
||||
resize : none;
|
||||
}
|
||||
}
|
||||
.curtain{
|
||||
position : absolute;
|
||||
top : 0em;
|
||||
left : 0em;
|
||||
width : 100%;
|
||||
height : 100%;
|
||||
background-color : $color-back;
|
||||
opacity : .8;
|
||||
}
|
||||
&:not([data-selected=null])>.curtain{display : none;}
|
||||
}
|
||||
|
||||
.actions-box{
|
||||
position : absolute;
|
||||
right : 0em;
|
||||
bottom : 0em;
|
||||
border : none;
|
||||
&>legend,&>p{display : none;}
|
||||
ul{
|
||||
position : absolute;
|
||||
right : 0em;
|
||||
bottom : 0em;
|
||||
margin : .5em;
|
||||
padding : 0em;
|
||||
list-style-type : none;
|
||||
overflow : visible;
|
||||
&>li{
|
||||
display : "block";
|
||||
position : relative;
|
||||
text-align : right;
|
||||
}
|
||||
}
|
||||
li{margin : .2em 0em;}
|
||||
button{
|
||||
min-width : 2em;
|
||||
height : 2em;
|
||||
text-align : right;
|
||||
white-space : nowrap;
|
||||
box-sizing : border-box;
|
||||
border-radius : 1em;
|
||||
span{
|
||||
font-size : 1.3em;
|
||||
font-weight : 900;
|
||||
}
|
||||
[data-icon]{
|
||||
display : inline-block;
|
||||
position : absolute;
|
||||
top : 0em;
|
||||
right : 0em;
|
||||
width : 1.5em;
|
||||
text-align : center;
|
||||
margin : .2em 0em;
|
||||
&::before{margin : 0em;}
|
||||
}
|
||||
[data-i18n]{
|
||||
display : block;
|
||||
padding-right : 0em;
|
||||
width : 0em;
|
||||
overflow : hidden;
|
||||
opacity : 0;
|
||||
transition-property : padding-right,width,opacity;
|
||||
transition-duration : $transition-out;
|
||||
}
|
||||
&:hover>[data-i18n]{
|
||||
padding-right : 1.3em;
|
||||
width : 6em;
|
||||
opacity : 1;
|
||||
transition-duration : $transition-in;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.licences{
|
||||
display : block;
|
||||
width : 100%;
|
||||
text-align : center;
|
||||
font-size : .85em;
|
||||
font-weight : 900;
|
||||
img{
|
||||
width : auto;
|
||||
height : 1em;
|
||||
}
|
||||
a>*{vertical-align : middle;}
|
||||
}
|
||||
|
||||
}
|
301
Public/scss/Sizerboard.css
Normal file
301
Public/scss/Sizerboard.css
Normal file
@ -0,0 +1,301 @@
|
||||
.sizerboard {
|
||||
position: absolute;
|
||||
top: 0em;
|
||||
left: 0em;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
overflow: hidden; }
|
||||
.sizerboard, .sizerboard input, .sizerboard button, .sizerboard textarea {
|
||||
font-family: "Roboto"; }
|
||||
.sizerboard [data-visible=false] {
|
||||
display: none; }
|
||||
.sizerboard [data-icon]::before {
|
||||
font-family: "Roboto";
|
||||
margin-right: .4em; }
|
||||
.sizerboard a[href] {
|
||||
text-decoration: none; }
|
||||
.sizerboard a[href], .sizerboard [onmousedown], .sizerboard [onmouseup], .sizerboard [onclick] {
|
||||
color: #2282D4;
|
||||
cursor: pointer;
|
||||
transition-property: color;
|
||||
transition-duration: 1s; }
|
||||
.sizerboard a[href]:hover, .sizerboard a[href]:focus, .sizerboard [onmousedown]:hover, .sizerboard [onmousedown]:focus, .sizerboard [onmouseup]:hover, .sizerboard [onmouseup]:focus, .sizerboard [onclick]:hover, .sizerboard [onclick]:focus {
|
||||
color: #D48222;
|
||||
transition-duration: 0.2s; }
|
||||
.sizerboard [type=text], .sizerboard [type=password], .sizerboard [type=date], .sizerboard [type=datetime], .sizerboard [type=time], .sizerboard textarea {
|
||||
width: 100%;
|
||||
box-sizing: border-box; }
|
||||
.sizerboard button, .sizerboard [type=button], .sizerboard [type=submit], .sizerboard [type=reset], .sizerboard [rol=button], .sizerboard [type=text], .sizerboard [type=password], .sizerboard [type=date], .sizerboard [type=datetime], .sizerboard [type=time], .sizerboard textarea {
|
||||
color: #2282D4;
|
||||
font-size: 1em;
|
||||
border: 0.1em solid #2282D4;
|
||||
box-shadow: 0em 0em 0.4em inset #2282D4;
|
||||
border-radius: 0.3em;
|
||||
transition-property: color,border-color,box-shadow;
|
||||
transition-duration: 1s; }
|
||||
.sizerboard button:hover, .sizerboard button:focus, .sizerboard [type=button]:hover, .sizerboard [type=button]:focus, .sizerboard [type=submit]:hover, .sizerboard [type=submit]:focus, .sizerboard [type=reset]:hover, .sizerboard [type=reset]:focus, .sizerboard [rol=button]:hover, .sizerboard [rol=button]:focus, .sizerboard [type=text]:hover, .sizerboard [type=text]:focus, .sizerboard [type=password]:hover, .sizerboard [type=password]:focus, .sizerboard [type=date]:hover, .sizerboard [type=date]:focus, .sizerboard [type=datetime]:hover, .sizerboard [type=datetime]:focus, .sizerboard [type=time]:hover, .sizerboard [type=time]:focus, .sizerboard textarea:hover, .sizerboard textarea:focus {
|
||||
color: #D48222;
|
||||
border-color: #D48222;
|
||||
box-shadow: 0em 0em 0.4em inset #D48222;
|
||||
transition-duration: 0.2s; }
|
||||
.sizerboard button, .sizerboard [type=button], .sizerboard [type=submit], .sizerboard [type=reset], .sizerboard [rol=button] {
|
||||
cursor: pointer; }
|
||||
.sizerboard a[href], .sizerboard [onmousedown], .sizerboard [onmouseup], .sizerboard [onclick] {
|
||||
outline: none; }
|
||||
.sizerboard a[href][disabled], .sizerboard a[href][disabled]:hover, .sizerboard a[href][readonly], .sizerboard a[href][readonly]:hover, .sizerboard a[href][data-selected=true], .sizerboard a[href][data-selected=true]:hover, .sizerboard [onmousedown][disabled], .sizerboard [onmousedown][disabled]:hover, .sizerboard [onmousedown][readonly], .sizerboard [onmousedown][readonly]:hover, .sizerboard [onmousedown][data-selected=true], .sizerboard [onmousedown][data-selected=true]:hover, .sizerboard [onmouseup][disabled], .sizerboard [onmouseup][disabled]:hover, .sizerboard [onmouseup][readonly], .sizerboard [onmouseup][readonly]:hover, .sizerboard [onmouseup][data-selected=true], .sizerboard [onmouseup][data-selected=true]:hover, .sizerboard [onclick][disabled], .sizerboard [onclick][disabled]:hover, .sizerboard [onclick][readonly], .sizerboard [onclick][readonly]:hover, .sizerboard [onclick][data-selected=true], .sizerboard [onclick][data-selected=true]:hover {
|
||||
color: #898989;
|
||||
cursor: default; }
|
||||
.sizerboard button, .sizerboard [type=button], .sizerboard [type=submit], .sizerboard [type=reset], .sizerboard [rol=button], .sizerboard [type=text], .sizerboard [type=password], .sizerboard [type=date], .sizerboard [type=datetime], .sizerboard [type=time], .sizerboard textarea {
|
||||
outline: none;
|
||||
box-sizing: border-box; }
|
||||
.sizerboard button[disabled], .sizerboard button[disabled]:hover, .sizerboard button[disabled]:focus, .sizerboard button[readonly], .sizerboard button[readonly]:hover, .sizerboard button[readonly]:focus, .sizerboard button[data-selected=true], .sizerboard button[data-selected=true]:hover, .sizerboard button[data-selected=true]:focus, .sizerboard [type=button][disabled], .sizerboard [type=button][disabled]:hover, .sizerboard [type=button][disabled]:focus, .sizerboard [type=button][readonly], .sizerboard [type=button][readonly]:hover, .sizerboard [type=button][readonly]:focus, .sizerboard [type=button][data-selected=true], .sizerboard [type=button][data-selected=true]:hover, .sizerboard [type=button][data-selected=true]:focus, .sizerboard [type=submit][disabled], .sizerboard [type=submit][disabled]:hover, .sizerboard [type=submit][disabled]:focus, .sizerboard [type=submit][readonly], .sizerboard [type=submit][readonly]:hover, .sizerboard [type=submit][readonly]:focus, .sizerboard [type=submit][data-selected=true], .sizerboard [type=submit][data-selected=true]:hover, .sizerboard [type=submit][data-selected=true]:focus, .sizerboard [type=reset][disabled], .sizerboard [type=reset][disabled]:hover, .sizerboard [type=reset][disabled]:focus, .sizerboard [type=reset][readonly], .sizerboard [type=reset][readonly]:hover, .sizerboard [type=reset][readonly]:focus, .sizerboard [type=reset][data-selected=true], .sizerboard [type=reset][data-selected=true]:hover, .sizerboard [type=reset][data-selected=true]:focus, .sizerboard [rol=button][disabled], .sizerboard [rol=button][disabled]:hover, .sizerboard [rol=button][disabled]:focus, .sizerboard [rol=button][readonly], .sizerboard [rol=button][readonly]:hover, .sizerboard [rol=button][readonly]:focus, .sizerboard [rol=button][data-selected=true], .sizerboard [rol=button][data-selected=true]:hover, .sizerboard [rol=button][data-selected=true]:focus, .sizerboard [type=text][disabled], .sizerboard [type=text][disabled]:hover, .sizerboard [type=text][disabled]:focus, .sizerboard [type=text][readonly], .sizerboard [type=text][readonly]:hover, .sizerboard [type=text][readonly]:focus, .sizerboard [type=text][data-selected=true], .sizerboard [type=text][data-selected=true]:hover, .sizerboard [type=text][data-selected=true]:focus, .sizerboard [type=password][disabled], .sizerboard [type=password][disabled]:hover, .sizerboard [type=password][disabled]:focus, .sizerboard [type=password][readonly], .sizerboard [type=password][readonly]:hover, .sizerboard [type=password][readonly]:focus, .sizerboard [type=password][data-selected=true], .sizerboard [type=password][data-selected=true]:hover, .sizerboard [type=password][data-selected=true]:focus, .sizerboard [type=date][disabled], .sizerboard [type=date][disabled]:hover, .sizerboard [type=date][disabled]:focus, .sizerboard [type=date][readonly], .sizerboard [type=date][readonly]:hover, .sizerboard [type=date][readonly]:focus, .sizerboard [type=date][data-selected=true], .sizerboard [type=date][data-selected=true]:hover, .sizerboard [type=date][data-selected=true]:focus, .sizerboard [type=datetime][disabled], .sizerboard [type=datetime][disabled]:hover, .sizerboard [type=datetime][disabled]:focus, .sizerboard [type=datetime][readonly], .sizerboard [type=datetime][readonly]:hover, .sizerboard [type=datetime][readonly]:focus, .sizerboard [type=datetime][data-selected=true], .sizerboard [type=datetime][data-selected=true]:hover, .sizerboard [type=datetime][data-selected=true]:focus, .sizerboard [type=time][disabled], .sizerboard [type=time][disabled]:hover, .sizerboard [type=time][disabled]:focus, .sizerboard [type=time][readonly], .sizerboard [type=time][readonly]:hover, .sizerboard [type=time][readonly]:focus, .sizerboard [type=time][data-selected=true], .sizerboard [type=time][data-selected=true]:hover, .sizerboard [type=time][data-selected=true]:focus, .sizerboard textarea[disabled], .sizerboard textarea[disabled]:hover, .sizerboard textarea[disabled]:focus, .sizerboard textarea[readonly], .sizerboard textarea[readonly]:hover, .sizerboard textarea[readonly]:focus, .sizerboard textarea[data-selected=true], .sizerboard textarea[data-selected=true]:hover, .sizerboard textarea[data-selected=true]:focus {
|
||||
color: #898989;
|
||||
border-color: #898989;
|
||||
cursor: default;
|
||||
box-shadow: 0em 0em 0.4em inset #898989; }
|
||||
.sizerboard label {
|
||||
padding: 0em .4em;
|
||||
font-weight: 900;
|
||||
white-space: nowrap;
|
||||
border: 0.1em solid #898989;
|
||||
border-radius: 0.3em;
|
||||
box-shadow: 0em 0em 0.4em inset #898989; }
|
||||
.sizerboard label > * {
|
||||
font-size: .9em; }
|
||||
.sizerboard label::after {
|
||||
content: ":"; }
|
||||
.sizerboard .group {
|
||||
display: table;
|
||||
margin: 0em;
|
||||
padding: 0em;
|
||||
list-style-type: none;
|
||||
border-collapse: collapse; }
|
||||
.sizerboard .group li {
|
||||
display: table-cell; }
|
||||
.sizerboard .group li > * {
|
||||
border-radius: 0em;
|
||||
padding: .1em .4em;
|
||||
padding-block: none;
|
||||
padding-inline: none; }
|
||||
.sizerboard .group > :first-child > * {
|
||||
border-radius: 0.3em 0em 0em 0.3em; }
|
||||
.sizerboard .group > :last-child > * {
|
||||
border-radius: 0em 0.3em 0.3em 0em; }
|
||||
.sizerboard header, .sizerboard main, .sizerboard footer {
|
||||
position: absolute;
|
||||
left: 0em;
|
||||
width: 100%; }
|
||||
.sizerboard header, .sizerboard footer {
|
||||
background-color: #222;
|
||||
color: #EFEFEF; }
|
||||
.sizerboard header {
|
||||
top: 0em;
|
||||
height: 4em;
|
||||
z-index: 20; }
|
||||
.sizerboard main {
|
||||
top: 4em;
|
||||
bottom: 1em;
|
||||
background-color: #EFEFEF;
|
||||
color: #222;
|
||||
z-index: 10;
|
||||
overflow: hidden; }
|
||||
.sizerboard main > form {
|
||||
display: block;
|
||||
position: absolute;
|
||||
top: 0em;
|
||||
height: 100%;
|
||||
overflow: hidden; }
|
||||
.sizerboard main > form > fieldset {
|
||||
position: absolute;
|
||||
top: 0em;
|
||||
left: 0em;
|
||||
right: 0em;
|
||||
bottom: 0em;
|
||||
margin: 0.4em;
|
||||
padding: 0em;
|
||||
border: none; }
|
||||
.sizerboard main > form > fieldset > legend {
|
||||
display: block;
|
||||
width: 100%;
|
||||
font-size: 1.2em;
|
||||
font-weight: 900;
|
||||
border-bottom: 0.15em solid #222; }
|
||||
.sizerboard main > form > fieldset > p {
|
||||
margin: 0em;
|
||||
padding: 1em 0em;
|
||||
font-size: .85em; }
|
||||
.sizerboard footer {
|
||||
bottom: 0em;
|
||||
height: 1em;
|
||||
z-index: 30; }
|
||||
.sizerboard .main-menu {
|
||||
position: absolute;
|
||||
bottom: 0em;
|
||||
left: 50%;
|
||||
margin-bottom: .2em;
|
||||
margin-left: -20em;
|
||||
width: 40em;
|
||||
text-align: center; }
|
||||
.sizerboard .main-menu ul {
|
||||
margin: 0em;
|
||||
padding: 0em;
|
||||
list-style-type: none; }
|
||||
.sizerboard .main-menu li {
|
||||
display: inline-block;
|
||||
margin: 0em 1em; }
|
||||
.sizerboard h1 {
|
||||
margin: 0em; }
|
||||
.sizerboard .projects-menu {
|
||||
left: 0em;
|
||||
width: 10em; }
|
||||
.sizerboard .search-box {
|
||||
position: absolute;
|
||||
top: 7.6em;
|
||||
width: 100%; }
|
||||
.sizerboard .search-box > :first-child > * {
|
||||
border-bottom-left-radius: 0em; }
|
||||
.sizerboard .search-box > :last-child > * {
|
||||
border-bottom-right-radius: 0em; }
|
||||
.sizerboard .search-box > :nth-child(2) {
|
||||
width: 100%; }
|
||||
.sizerboard .search-box label {
|
||||
font-weight: 400; }
|
||||
.sizerboard .search-box label::after {
|
||||
content: ""; }
|
||||
.sizerboard .search-box [data-icon]::before {
|
||||
margin: 0em; }
|
||||
.sizerboard .search-box [data-icon] + [data-i18n] {
|
||||
display: none; }
|
||||
.sizerboard .search-box button[data-i18n=search] {
|
||||
display: none; }
|
||||
.sizerboard .search-box + nav {
|
||||
position: absolute;
|
||||
top: 9em;
|
||||
left: 0em;
|
||||
bottom: 0em;
|
||||
width: 100%;
|
||||
border: 0.1em solid #222;
|
||||
background-color: #EFEFEF;
|
||||
overflow: auto;
|
||||
box-sizing: border-box;
|
||||
border-radius: 0em 0em 0.3em 0.3em;
|
||||
box-shadow: 0.1em 0.1em 0.2em #898989; }
|
||||
.sizerboard .search-box + nav > ul {
|
||||
margin: 0em;
|
||||
padding: 0em;
|
||||
list-style-type: none; }
|
||||
.sizerboard .search-box + nav li {
|
||||
padding: .2em .4em;
|
||||
border-radius: 0em;
|
||||
box-sizing: border-box; }
|
||||
.sizerboard .draw-box {
|
||||
left: 10em;
|
||||
right: 0em; }
|
||||
.sizerboard .draw-box .group {
|
||||
position: absolute;
|
||||
top: 2.6em;
|
||||
left: 0em; }
|
||||
.sizerboard .draw-box .group > :first-child > button {
|
||||
border-bottom-left-radius: 0em; }
|
||||
.sizerboard .draw-box .group > :last-child > button {
|
||||
border-bottom-right-radius: 0em; }
|
||||
.sizerboard .draw-box .fields {
|
||||
position: absolute;
|
||||
top: 4em;
|
||||
left: 0em;
|
||||
bottom: 0em;
|
||||
width: 100%;
|
||||
border: 0.1em solid #222;
|
||||
background-color: #EFEFEF;
|
||||
box-sizing: border-box;
|
||||
border-radius: 0em 0.3em 0.3em 0.3em;
|
||||
box-shadow: 0.1em 0.1em 0.2em #222; }
|
||||
.sizerboard .draw-box .fields > section, .sizerboard .draw-box .fields > section > * {
|
||||
position: absolute;
|
||||
top: 0em;
|
||||
left: 0em;
|
||||
width: 100%;
|
||||
height: 100%; }
|
||||
.sizerboard .draw-box .fields > section > * {
|
||||
border-radius: 0em 0.3em 0.3em 0.3em; }
|
||||
.sizerboard .draw-box .fields textarea {
|
||||
font-family: "Roboto Mono";
|
||||
color: #222;
|
||||
resize: none; }
|
||||
.sizerboard .draw-box .curtain {
|
||||
position: absolute;
|
||||
top: 0em;
|
||||
left: 0em;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-color: #EFEFEF;
|
||||
opacity: .8; }
|
||||
.sizerboard .draw-box:not([data-selected=null]) > .curtain {
|
||||
display: none; }
|
||||
.sizerboard .actions-box {
|
||||
position: absolute;
|
||||
right: 0em;
|
||||
bottom: 0em;
|
||||
border: none; }
|
||||
.sizerboard .actions-box > legend, .sizerboard .actions-box > p {
|
||||
display: none; }
|
||||
.sizerboard .actions-box ul {
|
||||
position: absolute;
|
||||
right: 0em;
|
||||
bottom: 0em;
|
||||
margin: .5em;
|
||||
padding: 0em;
|
||||
list-style-type: none;
|
||||
overflow: visible; }
|
||||
.sizerboard .actions-box ul > li {
|
||||
display: "block";
|
||||
position: relative;
|
||||
text-align: right; }
|
||||
.sizerboard .actions-box li {
|
||||
margin: .2em 0em; }
|
||||
.sizerboard .actions-box button {
|
||||
min-width: 2em;
|
||||
height: 2em;
|
||||
text-align: right;
|
||||
white-space: nowrap;
|
||||
box-sizing: border-box;
|
||||
border-radius: 1em; }
|
||||
.sizerboard .actions-box button span {
|
||||
font-size: 1.3em;
|
||||
font-weight: 900; }
|
||||
.sizerboard .actions-box button [data-icon] {
|
||||
display: inline-block;
|
||||
position: absolute;
|
||||
top: 0em;
|
||||
right: 0em;
|
||||
width: 1.5em;
|
||||
text-align: center;
|
||||
margin: .2em 0em; }
|
||||
.sizerboard .actions-box button [data-icon]::before {
|
||||
margin: 0em; }
|
||||
.sizerboard .actions-box button [data-i18n] {
|
||||
display: block;
|
||||
padding-right: 0em;
|
||||
width: 0em;
|
||||
overflow: hidden;
|
||||
opacity: 0;
|
||||
transition-property: padding-right,width,opacity;
|
||||
transition-duration: 1s; }
|
||||
.sizerboard .actions-box button:hover > [data-i18n] {
|
||||
padding-right: 1.3em;
|
||||
width: 6em;
|
||||
opacity: 1;
|
||||
transition-duration: 0.2s; }
|
||||
.sizerboard .licences {
|
||||
display: block;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
font-size: .85em;
|
||||
font-weight: 900; }
|
||||
.sizerboard .licences img {
|
||||
width: auto;
|
||||
height: 1em; }
|
||||
.sizerboard .licences a > * {
|
||||
vertical-align: middle; }
|
||||
|
||||
/*# sourceMappingURL=Sizerboard.css.map */
|
7
Public/scss/Sizerboard.css.map
Normal file
7
Public/scss/Sizerboard.css.map
Normal file
File diff suppressed because one or more lines are too long
1
Public/scss/Sizerboard.scss
Normal file
1
Public/scss/Sizerboard.scss
Normal file
@ -0,0 +1 @@
|
||||
@import "Sizerboard.settings.scss", "Sizerboard.base.scss";
|
23
Public/scss/Sizerboard.settings.scss
Normal file
23
Public/scss/Sizerboard.settings.scss
Normal file
@ -0,0 +1,23 @@
|
||||
// colors
|
||||
$color-primary : #2282D4;
|
||||
$color-secondary : #D48222;
|
||||
$color-fore : #222;
|
||||
$color-back : #EFEFEF;
|
||||
$color-grey : mix($color-fore, $color-back, 50%);
|
||||
|
||||
// Sizes
|
||||
$header-height : 4em;
|
||||
$footer-height : 1em;
|
||||
$projects-menu-width : 10em;
|
||||
$border-radius : .3em;
|
||||
$box-margin : .4em;
|
||||
|
||||
// Fonts
|
||||
$font-family : "Roboto";
|
||||
$font-mono : "Roboto Mono";
|
||||
$font-icons : "FA5FS";
|
||||
|
||||
// Transitions
|
||||
$transition-in : .2s;
|
||||
$transition-out : 1s;
|
||||
$transition : ($transition-out - $transition-in) * .5 + $transition-in;
|
14
Sizerboard.apache2.conf
Executable file
14
Sizerboard.apache2.conf
Executable file
@ -0,0 +1,14 @@
|
||||
<VirtualHost *:80>
|
||||
ServerName sizerboard.local
|
||||
DocumentRoot /Projects/Sizerboard/Public
|
||||
<Directory /Projects/Sizerboard>
|
||||
Options +Indexes +FollowSymLinks +MultiViews
|
||||
DirectoryIndex index.html index.php
|
||||
AllowOverride all
|
||||
Order Allow,Deny
|
||||
Allow from all
|
||||
Require all granted
|
||||
</Directory>
|
||||
ErrorLog ${APACHE_LOG_DIR}/error_sizerboard_80.log
|
||||
CustomLog ${APACHE_LOG_DIR}/access_sizerboard_80.log combined
|
||||
</VirtualHost>
|
3
Tools/sass.sh
Executable file
3
Tools/sass.sh
Executable file
@ -0,0 +1,3 @@
|
||||
#!/bin/bash
|
||||
directory=`dirname $(readlink -f "$0")`
|
||||
sass $directory/../Public/scss/Sizerboard.scss ../Public/scss/Sizerboard.css;
|
Loading…
Reference in New Issue
Block a user