#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 : "",
|
default_text : "",
|
||||||
autostart : true,
|
autostart : true,
|
||||||
default_language : "english",
|
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 = {},
|
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,
|
let started = false,
|
||||||
language, default_language,
|
language, default_language,
|
||||||
allow_settings_nulls, default_text, default_value,
|
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 = () => {
|
const construct = () => {
|
||||||
|
|
||||||
basic_values();
|
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();
|
self.settings("autostart") && self.start();
|
||||||
|
|
||||||
};
|
};
|
||||||
@ -32,6 +101,8 @@ Sizerboard = function(inputs){
|
|||||||
language = self.settings(["language", "default_language"]);
|
language = self.settings(["language", "default_language"]);
|
||||||
default_language = self.settings(["default_language", "language"]);
|
default_language = self.settings(["default_language", "language"]);
|
||||||
ajax_timeout = self.settings(["ajax_timeout", "timeout"]);
|
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);
|
const end = status => typeof callback == "function" && callback(status);
|
||||||
|
|
||||||
|
self.print("info", "sizerboard_starting");
|
||||||
|
|
||||||
if(started){
|
if(started){
|
||||||
|
self.print("warn", "sizerboard_already_started");
|
||||||
end(false);
|
end(false);
|
||||||
return false;
|
return false;
|
||||||
};
|
};
|
||||||
started = true;
|
started = true;
|
||||||
|
|
||||||
|
basic_values();
|
||||||
|
|
||||||
|
self.print("info", "settings_loading");
|
||||||
self.execute_array_items(["default_settings_files", "settings_files"], (key, callback) => {
|
self.execute_array_items(["default_settings_files", "settings_files"], (key, callback) => {
|
||||||
self.settings_add(self.settings(key), true, 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.execute_array_items(["default_i18n_files", "i18n_files"], (key, callback) => {
|
||||||
self.i18n_add(self.settings(key), true, 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.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){
|
if(m){
|
||||||
|
|
||||||
const l = (inputs = (
|
const l = (own_inputs = (
|
||||||
inputs == "object" ? inputs instanceof Array ? inputs : [inputs] : []
|
own_inputs == "object" ? own_inputs instanceof Array ? own_inputs : [own_inputs] : []
|
||||||
).concat(
|
).concat(
|
||||||
[inputs, settings, default_settings]
|
[inputs, settings, default_settings]
|
||||||
)).length;
|
)).length;
|
||||||
@ -77,10 +174,10 @@ Sizerboard = function(inputs){
|
|||||||
nulls = self.nulls(nulls);
|
nulls = self.nulls(nulls);
|
||||||
|
|
||||||
for(let i = 0; i < l; i ++)
|
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 ++)
|
for(let j = 0; j < m; j ++)
|
||||||
if(inputs[i][keys[j]] !== undefined && (nulls || inputs[i][keys[j]] !== null))
|
if(own_inputs[i][keys[j]] !== undefined && (nulls || own_inputs[i][keys[j]] !== null))
|
||||||
return inputs[i][keys[j]];
|
return own_inputs[i][keys[j]];
|
||||||
};
|
};
|
||||||
return self.default_value(_default, nulls);
|
return self.default_value(_default, nulls);
|
||||||
};
|
};
|
||||||
@ -93,7 +190,7 @@ Sizerboard = function(inputs){
|
|||||||
timeout = ajax_timeout,
|
timeout = ajax_timeout,
|
||||||
date = Date.now();
|
date = Date.now();
|
||||||
|
|
||||||
ajax.send("get", url, true);
|
ajax.open("get", url, true);
|
||||||
ajax.timeout = timeout;
|
ajax.timeout = timeout;
|
||||||
ajax.onreadystatechange = () => {
|
ajax.onreadystatechange = () => {
|
||||||
if(ended)
|
if(ended)
|
||||||
@ -112,16 +209,31 @@ Sizerboard = function(inputs){
|
|||||||
return ajax;
|
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) => {
|
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();
|
typeof full_callback == "function" && full_callback();
|
||||||
return;
|
return;
|
||||||
};
|
};
|
||||||
|
|
||||||
const end = () => {
|
const end = () => {
|
||||||
inputs[i] && typeof partial_callback == "function" && partial_callback(inputs[i]);
|
inputs[i] && typeof inputs[i] == "object" && typeof partial_callback == "function" && partial_callback(inputs[i]);
|
||||||
execute_array_dictionaries(inputs, partial_callback, full_callback, i + 1);
|
self.execute_array_dictionaries(inputs, partial_callback, full_callback, i + 1);
|
||||||
};
|
};
|
||||||
|
|
||||||
if(!inputs[i]){
|
if(!inputs[i]){
|
||||||
@ -130,25 +242,16 @@ Sizerboard = function(inputs){
|
|||||||
};
|
};
|
||||||
|
|
||||||
if(typeof inputs[i] == "object"){
|
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);
|
self.execute_array_dictionaries(inputs[i], partial_callback, end, 0);
|
||||||
return;
|
else
|
||||||
};
|
end();
|
||||||
}else if(typeof inputs[i] == "string"){
|
}else if(typeof inputs[i] == "string"){
|
||||||
|
if(/^(\{(.|[\r\n])*\}|\[(.|[\r\n])*\])$/.test(inputs[i].trim()))
|
||||||
let json;
|
self.execute_json(inputs[i], json => self.execute_array_dictionaries(json instanceof Array ? json : [json], partial_callback, end, 0), end);
|
||||||
|
else
|
||||||
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
|
|
||||||
self.load_file(inputs[i], data => {
|
self.load_file(inputs[i], data => {
|
||||||
try{
|
self.execute_json(data, json => self.execute_array_dictionaries(json instanceof Array ? json : [json], partial_callback, end, 0), end);
|
||||||
json = JSON.parse(data);
|
|
||||||
}catch(exception){};
|
|
||||||
json && self.execute_array_dictionaries(json instanceof Array ? json : [json], partial_callback, end, 0);
|
|
||||||
});
|
});
|
||||||
}else
|
}else
|
||||||
end();
|
end();
|
||||||
@ -158,12 +261,12 @@ Sizerboard = function(inputs){
|
|||||||
this.execute_array_items = (items, action, callback, i) => {
|
this.execute_array_items = (items, action, callback, i) => {
|
||||||
(typeof items != "object" || !(items instanceof Array)) && (items = [items]);
|
(typeof items != "object" || !(items instanceof Array)) && (items = [items]);
|
||||||
|
|
||||||
if(!items || i >= items.length){
|
if(!items || (i || (i = 0)) >= items.length){
|
||||||
typeof callback == "function" && callback();
|
typeof callback == "function" && callback();
|
||||||
return;
|
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")
|
if(typeof action == "function")
|
||||||
action(items[i], end);
|
action(items[i], end);
|
||||||
@ -176,8 +279,9 @@ Sizerboard = function(inputs){
|
|||||||
typeof overwrite != "boolean" && (overwrite = settings_overwrite);
|
typeof overwrite != "boolean" && (overwrite = settings_overwrite);
|
||||||
self.execute_array_dictionaries(inputs, data => {
|
self.execute_array_dictionaries(inputs, data => {
|
||||||
for(const key in data)
|
for(const key in data)
|
||||||
if(overwrite || settings[key] === undefined)
|
(overwrite || settings[key] === undefined) &&
|
||||||
settings[key] = data[key];
|
!/^Sizerboard.*_(start|end)$/.test(key) &&
|
||||||
|
(settings[key] = data[key]);
|
||||||
}, callback);
|
}, callback);
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -189,6 +293,7 @@ Sizerboard = function(inputs){
|
|||||||
if(typeof data[language] == "object")
|
if(typeof data[language] == "object")
|
||||||
for(const key in data[language])
|
for(const key in data[language])
|
||||||
(overwrite || sentences[language][key] === undefined) &&
|
(overwrite || sentences[language][key] === undefined) &&
|
||||||
|
!/^Sizerboard.*_(start|end)$/.test(key) &&
|
||||||
(sentences[language][key] = data[language][key]);
|
(sentences[language][key] = data[language][key]);
|
||||||
};
|
};
|
||||||
}, callback);
|
}, callback);
|
||||||
@ -200,7 +305,7 @@ Sizerboard = function(inputs){
|
|||||||
typeof variables == "object" && variables instanceof Array ? variables : [variables]
|
typeof variables == "object" && variables instanceof Array ? variables : [variables]
|
||||||
).filter(variables => typeof variables == "object")).length;
|
).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 ++)
|
for(let i = 0; i < l; i ++)
|
||||||
if(variables[i][key] !== undefined)
|
if(variables[i][key] !== undefined)
|
||||||
return variables[i][key];
|
return variables[i][key];
|
||||||
@ -212,24 +317,285 @@ Sizerboard = function(inputs){
|
|||||||
|
|
||||||
const i18n = (keys, _default) => {
|
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;
|
l = languages.length;
|
||||||
|
|
||||||
for(let i = 0; i < l; i ++)
|
for(let i = 0; i < l; i ++)
|
||||||
if(languages[i] && typeof languages[i] == "object")
|
if(sentences[languages[i]])
|
||||||
for(let j = 0; j < l; j ++)
|
for(let j = 0; j < m; j ++)
|
||||||
if(languages[i][keys[j]] !== undefined)
|
if(sentences[languages[i]][keys[j]] !== undefined)
|
||||||
return languages[i][keys[j]];
|
return sentences[languages[i]][keys[j]];
|
||||||
return keys[0];
|
return keys[0];
|
||||||
};
|
};
|
||||||
return self.default_text(_default);
|
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();
|
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