Browse Source

more cdb fixes

Nicolas Cannasse 6 years ago
parent
commit
d3ca02520f
4 changed files with 25 additions and 6 deletions
  1. 1 1
      bin/app.html
  2. 11 0
      hide/Ide.hx
  3. 6 3
      hide/comp/cdb/ModalColumnForm.hx
  4. 7 2
      hide/view/CdbTable.hx

+ 1 - 1
bin/app.html

@@ -66,7 +66,7 @@
 	</menu>
 	</menu>
 	<menu label="Database" class="database">
 	<menu label="Database" class="database">
 		<menu label="View" class="dbview"></menu>
 		<menu label="View" class="dbview"></menu>
-		<menu label="New Sheet"></menu>
+		<menu label="New Sheet" class="dbnew"></menu>
 		<menu label="Export Localized Texts" class="dbexport"></menu>
 		<menu label="Export Localized Texts" class="dbexport"></menu>
 		<separator></separator>
 		<separator></separator>
 		<menu label="Enable Compression" class="dbcompress" type="checkbox"></menu>
 		<menu label="Enable Compression" class="dbcompress" type="checkbox"></menu>

+ 11 - 0
hide/Ide.hx

@@ -621,6 +621,12 @@ class Ide {
 		sys.io.File.saveContent(getPath(databaseFile), database.save());
 		sys.io.File.saveContent(getPath(databaseFile), database.save());
 	}
 	}
 
 
+	public function createDBSheet() {
+		var value = ask("Sheet name");
+		if( value == "" || value == null ) return null;
+		return database.createSheet(value);
+	}
+
 	public function makeRelative( path : String ) {
 	public function makeRelative( path : String ) {
 		path = path.split("\\").join("/");
 		path = path.split("\\").join("/");
 		if( StringTools.startsWith(path.toLowerCase(), resourceDir.toLowerCase()+"/") )
 		if( StringTools.startsWith(path.toLowerCase(), resourceDir.toLowerCase()+"/") )
@@ -822,6 +828,11 @@ class Ide {
 				open("hide.view.CdbTable", { path : s.name });
 				open("hide.view.CdbTable", { path : s.name });
 			});
 			});
 		}
 		}
+		db.find(".dbnew").click(function(_) {
+			var sheet = createDBSheet();
+			if( sheet == null ) return;
+			open("hide.view.CdbTable",{ path : sheet.name });
+		});
 		db.find(".dbcompress").prop("checked",database.compress).click(function(_) {
 		db.find(".dbcompress").prop("checked",database.compress).click(function(_) {
 			database.compress = !database.compress;
 			database.compress = !database.compress;
 			saveDatabase();
 			saveDatabase();

+ 6 - 3
hide/comp/cdb/ModalColumnForm.hx

@@ -12,7 +12,7 @@ class ModalColumnForm extends Modal {
 
 
 		var editForm = (column != null);
 		var editForm = (column != null);
 
 
-		contentModal = new Element("<div>").addClass("content-modal").appendTo(content);
+		contentModal = new Element("<div tabindex='0'>").addClass("content-modal").appendTo(content);
 
 
 		if (editForm)
 		if (editForm)
 			new Element("<h2> Edit column </h2>").appendTo(contentModal);
 			new Element("<h2> Edit column </h2>").appendTo(contentModal);
@@ -74,14 +74,14 @@ class ModalColumnForm extends Modal {
 					<br /><br />
 					<br /><br />
 				</div>
 				</div>
 
 
-				<div class="localizable"><input type="checkbox" name="localizable"/> Localizable<br /><br /></div>
+				<div class="localizable"><label><input type="checkbox" name="localizable"/>&nbsp;Localizable</label><br /><br /></div>
 
 
 				<div class="custom">
 				<div class="custom">
 					Type
 					Type
 					<select name="ctype"></select>
 					<select name="ctype"></select>
 					<br /><br />
 					<br /><br />
 				</div>
 				</div>
-				<div class="opt"><input type="checkbox" name="req"/> Required</div>
+				<div class="opt"><label><input type="checkbox" name="req"/>&nbsp;Required</label></div>
 			</div>
 			</div>
 			<br /><br />
 			<br /><br />
 			<p class="buttons">
 			<p class="buttons">
@@ -133,6 +133,9 @@ class ModalColumnForm extends Modal {
 			form.find("[name=localizable]").prop("checked", false);
 			form.find("[name=localizable]").prop("checked", false);
 		}
 		}
 
 
+		form.find("[name=name]").focus();
+
+		contentModal.keydown(function(e) if( e.keyCode == 27 ) closeModal());
 		contentModal.click( function(e) e.stopPropagation());
 		contentModal.click( function(e) e.stopPropagation());
 
 
 		element.click(function(e) {
 		element.click(function(e) {

+ 7 - 2
hide/view/CdbTable.hx

@@ -44,11 +44,16 @@ class CdbTable extends hide.ui.View<{ path : String }> {
 		}
 		}
 		if( sheets.length == 0 ) {
 		if( sheets.length == 0 ) {
 			element.html("No CDB sheet created, <a href='#'>create one</a>");
 			element.html("No CDB sheet created, <a href='#'>create one</a>");
-			element.find("a").click(function(_) ide.error("TODO"));
+			element.find("a").click(function(_) {
+				var sheet = ide.createDBSheet();
+				if( sheet == null ) return;
+				updateSheets();
+				rebuild();
+			});
 			return;
 			return;
 		}
 		}
 		element.addClass("cdb-view");
 		element.addClass("cdb-view");
-		var tabs = sheets.length == 1 ? null : new hide.comp.Tabs(element, true);
+		var tabs = state.path != null ? null : new hide.comp.Tabs(element, true);
 		tabContents = [];
 		tabContents = [];
 		for( sheet in sheets ) {
 		for( sheet in sheets ) {
 			var tab = tabs == null ? element : tabs.createTab(sheet.name);
 			var tab = tabs == null ? element : tabs.createTab(sheet.name);